• 技术文章 >后端开发 >php教程

    用php写的桌面应用程序_PHP教程

    2016-07-13 10:59:18原创820
    复制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);
    }
    }
    ?>

    www.bkjia.comtruehttp://www.bkjia.com/PHPjc/631916.htmlTechArticle复制PHP内容到剪贴板PHP代码: ?php $winmain=wb_create_window(null,AppWindow,'21点游戏',WBC_CENTER,WBC_CENTER,800,495,0,0); wb_create_control($winmain,Label,'庄家',20,1...

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐: php 写的 桌面 应用程序 复制 PHP 内容 剪贴板 代码 php winmain create windo
    上一篇:php的把ubb代码转换成html代码的程序_PHP教程 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 浅析PHP应用程序中正确调用系统命令的方法• 想请问一下印证的有关问题• php 之 cookie 跟 session 简单解读(笔记) • xml转换成数组的有关问题 • 注册信息添加到数据库,该怎么处理
    1/1

    PHP中文网