Chinaunix首页 | 论坛 | 博客
  • 博客访问: 198529
  • 博文数量: 264
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 2740
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-03 13:25
文章分类

全部博文(264)

文章存档

2011年(1)

2009年(263)

我的朋友

分类:

2009-06-03 16:10:42

用winbinder做的,对桌面应用程序感兴趣的朋友可以找我交流阿。

21point.form.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"13nullFTA_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"34nullFTA_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>=&& $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>=&& $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_CENTERWBC_CENTER3601800x000000000);

  
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);

}

}

?>



阅读(180) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~