【www.gdgbn.com--php应用】


复制PHP内容到剪贴板PHP代码:

$winmain=wb_create_window(null,AppWindow,"21点游戏",WBC_CENTER,WBC_CENTER,800,495,0,0);
wb_create_control($winmain,Label,"庄家",20,15,40,30,LB_1,0,0,0);
wb_create_control($winmain,Label,"玩家",20,200,40,30,LB_2,00,0,0);
wb_create_control($winmain,Frame,"",80,40,120,150,FR_PC_1,0,0,0);
wb_create_control($winmain,Frame,"",220,40,120,150,FR_PC_2,0,0,0);
wb_create_control($winmain,Frame,"",360,40,120,150,FR_PC_3,0,0,0);
wb_create_control($winmain,Frame,"",500,40,120,150,FR_PC_4,0,0,0);
wb_create_control($winmain,Frame,"",640,40,120,150,FR_PC_5,0,0,0);
wb_create_control($winmain,Frame,"",645,230,120,150,FR_U_5,0,0,0);
wb_create_control($winmain,Frame,"",500,230,120,150,FR_U_4,0,0,0);
wb_create_control($winmain,Frame,"",360,230,120,150,FR_U_3,0,0,0);
wb_create_control($winmain,Frame,"",220,230,120,150,FR_U_2,0,0,0);
wb_create_control($winmain,Frame,"",80,230,120,150,FR_U_1,0,0,0);
wb_create_control($winmain,Label,"",35,305,25,20,LB_U_T,0,0,0);
wb_create_control($winmain,Label,"",35,110,25,20,LB_P_T,0,0,0);
wb_create_control($winmain,PushButton,"发牌",320,400,70,25,B_GO,0x00000002,0,0);
wb_create_control($winmain,PushButton,"停止",435,400,70,25,B_CHANGE,0x00000002,0,0);
wb_create_control($winmain,Label,"",110,95,60,60,LB_PC_1,0x00000800,0,0);
wb_create_control($winmain,Label,"",250,95,60,60,LB_PC_2,0x00000800,0,0);
wb_create_control($winmain,Label,"",390,95,60,60,LB_PC_3,0x00000800,0,0);
wb_create_control($winmain,Label,"",530,95,60,60,LB_PC_4,0x00000800,0,0);
wb_create_control($winmain,Label,"",670,95,60,60,LB_PC_5,0x00000800,0,0);
wb_create_control($winmain,Label,"",110,285,60,60,LB_U_1,0x00000800,0,0);
wb_create_control($winmain,Label,"",250,285,60,60,LB_U_2,0x00000800,0,0);
wb_create_control($winmain,Label,"",390,285,60,60,LB_U_3,0x00000800,0,0);
wb_create_control($winmain,Label,"",530,285,60,60,LB_U_4,0x00000800,0,0);
wb_create_control($winmain,Label,"",670,285,60,60,LB_U_5,0x00000800,0,0);
wb_create_control($winmain,Label,"",70,20,90,20,PC_MON,0,0,0);
wb_create_control($winmain,Label,"",70,205,90,20,U_MON,0,0,0);

point_include.php文件


for ($i=1;$i<=13;$i++){
switch($i){
  case 1j=1;$key="A";break;
  case 11j=10;$key="J";break;
  case 12j=10;$key="Q";break;
  case 13j=10;$key="K";break;
  default:
   $key=$j=$i;
}
$card["黑\n桃\n$key"]=$j;
$card["红\n桃\n$key"]=$j;
$card["梅\n花\n$key"]=$j;
$card["方\n片\n$key"]=$j;
}
$contorl_id=array(
"B_GO"=>1001,"B_CHANGE"=>1002,
"ME_START"=>2001,"ME_REMON"=>2002,"ME_AUTHOR"=>2003,"ME_QUIT"=>IDCLOSE,
"LB_1"=>3001,"LB_2"=>3002,"LB_U_T"=>3003,"LB_P_T"=>3004,
"PC_MON"=>3005,"U_MON"=>3006,
"LB_PC_1"=>3101,"LB_PC_2"=>3102,"LB_PC_3"=>3103,"LB_PC_4"=>3104,"LB_PC_5"=>3105,
"LB_U_1"=>3201,"LB_U_2"=>3202,"LB_U_3"=>3203,"LB_U_4"=>3204,"LB_U_5"=>3205,
"FR_PC_1"=>4001,"FR_PC_2"=>4002,"FR_PC_3"=>4003,"FR_PC_4"=>4004,"FR_PC_5"=>4005,
"FR_U_1"=>5001,"FR_U_2"=>5002,"FR_U_3"=>5003,"FR_U_4"=>5004,"FR_U_5"=>5005,
);
foreach ($contorl_id as $key=>$value){
if(!defined(strtoupper($key)))define(strtoupper($key),$value);
}
?>


21point.phpw文件


set_time_limit(0);
include_once("include/winbinder.php");
include_once("form/point_include.php");
include_once("form/21point.form.php");

class Ponit {
public $key_id;
private $user_point=10000;
private $pc_point=10000;
private $card;
private $player="user";
private $new_term=false;
private $remon=false;
public function __construct($winmain,$card){
  $f=file_get_contents("form/db.db");
  list($this->user_point,$this->pc_point)=explode("|",$f);
  $this->window=$winmain;
  $this->card=$card;
  $this->prepare();
}
private function prepare(){
  wb_set_image($this->window,"form/hyper.ico"); 
  wb_create_control($this->window,Menu,array(
  "游戏(&G)"  , null,
  array(ME_START , "开局\tCrtl+N","","","Ctrl+N"),
  array(ME_REMON , "重计分"),
  array(ME_AUTHOR , "作者"),
  null   ,
  array(ME_QUIT , "退出\tCrtl+Q","","","Ctrl+Q"),
  null
  ));
  wb_set_text(wb_get_control($this->window,U_MON),$this->user_point."分");
  wb_set_text(wb_get_control($this->window,PC_MON),$this->pc_point."分");
  $font=wb_create_font("Arial", 13, null, FTA_BOLD);
  wb_set_font(wb_get_control($this->window,LB_1),$font);
  wb_set_font(wb_get_control($this->window,LB_2),$font);
  $font=wb_create_font("Arial", 34, null, FTA_BOLD);
  for($i=1;$i<=5;$i++){
   wb_set_font(wb_get_control($this->window,(3100+$i)),$font);
   wb_set_font(wb_get_control($this->window,(3200+$i)),$font);
  }
}
private function start(){
  $this->player="user";
  $this->new_term=true;
  $this->clear();
  $this->play();
  wb_set_enabled(wb_get_control($this->window,B_GO),true);
  wb_set_enabled(wb_get_control($this->window,B_CHANGE),true);
}
private function stop(){
  wb_set_enabled(wb_get_control($this->window,B_GO),false);
  wb_set_enabled(wb_get_control($this->window,B_CHANGE),false);
}
private function change_player(){
  $this->stop();
  $this->player="pc";
  $this->play();
}
private function total($num=0,$win){
  static $u_tem,$p_tem;
  if(empty($u_tem)||empty($p_tem)||$this->remon==true){
   $u_tem=$this->user_point;
   $p_tem=$this->pc_point;
   $this->remon=false;
  }
  if(strtoupper($win)=="U"){
   $u_tem+=$num;
   $p_tem-=$num;
  }else{
   $u_tem-=$num;
   $p_tem+=$num;
  }
  $this->user_point=$u_tem;
  $this->pc_point=$p_tem;
  wb_set_text(wb_get_control($this->window,U_MON),$this->user_point."分");
  wb_set_text(wb_get_control($this->window,PC_MON),$this->pc_point."分");
  $f=fopen("form/db.db","wb");
  fwrite($f,$this->user_point."|".$this->pc_point);
  fclose($f);
}
private function remon(){
  $this->remon=true;
  $this->user_point=10000;
  $this->pc_point=10000;
  wb_set_text(wb_get_control($this->window,U_MON),$this->user_point."分");
  wb_set_text(wb_get_control($this->window,PC_MON),$this->pc_point."分");
  $f=fopen("form/db.db","wb");
  fwrite($f,$this->user_point."|".$this->pc_point);
  fclose($f);
}
private function clear(){
  wb_set_text(wb_get_control($this->window,LB_U_T),"");
  wb_set_text(wb_get_control($this->window,LB_P_T),"");
  for($i=1;$i<=5;$i++){
   wb_set_text(wb_get_control($this->window,(4000+$i)),"");
   wb_set_text(wb_get_control($this->window,(5000+$i)),"");
   wb_set_text(wb_get_control($this->window,(3100+$i)),"");
   wb_set_text(wb_get_control($this->window,(3200+$i)),"");
  }
}
private function play(){
  static $card_tem=array(),$i=0,$j=0,$user_total=0,$pc_total=0;
  if($this->new_term==true){
   $card_tem=$this->card;
   $this->new_term=false;
   $user_total=0;
   $pc_total=0;
   $i=0;$j=0;
  }
  if($this->player=="user"){
   $i++;
   $card_key=array_rand($card_tem);
   $card_value=$card_tem[$card_key];
   $user_total+=$card_value;
   wb_set_text(wb_get_control($this->window,LB_U_T),$user_total."点");
   wb_set_text(wb_get_control($this->window,(5000+$i)),$card_key);
   wb_set_text(wb_get_control($this->window,(3200+$i)),$card_value);
   if($i>=5 && $user_total<=21){
    $this->total(20,"U");
    $sel=wb_message_box($this->window,"恭喜你,5张全小,玩家获胜!\n您还想继续玩吗?","胜利",WBC_YESNO);
    $sel==1?$this->start():$this->stop();
   }elseif($user_total>21){
    $this->total(20,"P");
    $sel=wb_message_box($this->window,"真不幸,超过21点,庄家获胜!\n您还想继续玩吗?","失败",WBC_YESNO);
    $sel==1?$this->start():$this->stop();
   }
  }else{
   $j++;
   $card_key=array_rand($card_tem);
   $card_value=$card_tem[$card_key];
   $pc_total+=$card_value;
   wb_set_text(wb_get_control($this->window,LB_P_T),$pc_total."点");
   wb_set_text(wb_get_control($this->window,(4000+$j)),$card_key);
   wb_set_text(wb_get_control($this->window,(3100+$j)),$card_value);
   if($j>=5 && $pc_total<=21){
    $this->total(20,"P");
    $sel=wb_message_box($this->window,"庄家5张全小,庄家获胜!\n您还想继续玩吗?","失败",WBC_YESNO);
    $sel==1?$this->start():$this->stop();
   }elseif($pc_total>21){
    if( $pc_total-$card_value<$user_total){
     $this->total(20,"U");
     $sel=wb_message_box($this->window,"恭喜你,庄家点数超过21点,玩家获胜!\n您还想继续玩吗?","胜利",WBC_YESNO);
     $sel==1?$this->start():$this->stop();
    }else{
     $pc_total=$pc_total-$card_value;
     wb_set_text(wb_get_control($this->window,LB_P_T),$pc_total."点");
     wb_set_text(wb_get_control($this->window,(4000+$j)),"");
     wb_set_text(wb_get_control($this->window,(3100+$j)),"");
     if($pc_total>=$user_total){
      $this->total(20,"P");
      $msg=($pc_total==$user_total)?"双方点数一样,庄家获胜!\n您还想继续玩吗?":"庄家点数比你大,庄稼获胜!\n您还想继续玩吗?";
      $sel=wb_message_box($this->window,$msg,"失败",WBC_YESNO);
      $sel==1?$this->start():$this->stop();
     }else{
      $this->total(20,"U");
      $sel=wb_message_box($this->window,"恭喜你,庄家点数比你小,玩家获胜!\n您还想继续玩吗?","胜利",WBC_YESNO);
      $sel==1?$this->start():$this->stop();
     }
    }
   }else{
    usleep(800000);
    $this->play();
   }
  }
  unset($card_tem[$card_key]);
}

private function author(){
  $inf="大家好,偶是machine_马,\n\n这是我人生中的第一个桌面应用程序,\n\n做得很烂,大家见笑了,哈哈哈^_^。\n\n\n\n\t\t作者:machine_马";
  $author_window=wb_create_window($this->window,ModalDialog,"作者简介",WBC_CENTER, WBC_CENTER, 360, 180, 0x00000000, 0);
  wb_set_handler($author_window,"author_handler");
  $image=wb_create_control($author_window,Frame,"123",0,0,128,144,110,WBC_IMAGE);
  wb_create_control($author_window,Label,$inf,140,20,200,150,120,WBC_IMAGE);
  wb_set_image($image, "form/author.bmp", NOCOLOR);
}
public function main(){
  switch ($this->key_id){
   case IDCLOSE:
    wb_destroy_window($this->window);    break;
   case ME_START:
    $this->start();         break;
   case ME_AUTHOR:
    $this->author();        break;
   case B_GO:
    $this->play();         break;
   case B_CHANGE:
    $this->change_player();       break;
   case ME_REMON:
    $this->remon();         break;
  }
}
}
$wbd=new Ponit($winmain,$card);
wb_set_handler($winmain,"go_to");
wb_main_loop();
function go_to($window,$id){
global $wbd;
$wbd->key_id=$id;
return $wbd->main();
}
function author_handler($this_window,$id){
switch($id){
  case IDCLOSE:
   wb_destroy_window($this_window);
}
}
?>

 

 

本文来源:http://www.gdgbn.com/jiaocheng/9654/