用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
转载随意!带上文章地址吧。