用php写的桌面应用程序
复制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文件 < ? phpfor ($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文件 <?php 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_马,nn这是我人生中的第一个桌面应用程序,nn做得很烂,大家见笑了,哈哈哈^_^。nnnntt作者: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.phprm.com/develop/96847a35572b7d46303d66633ebd7f71.html
转载随意!带上文章地址吧。