喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

[北京]代朋友公司招聘PHP高级程序员多名

上一主题 下一主题
 18  1/2  1  2  > 
     
标题: [原创] php,命令行下石头剪刀游戏!  
 
帅的不能再输啦
新手上路
Rank: 1
初级会员


UID 67369
精华 0
积分 38
帖子 34
金钱 38 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2005-12-21
状态 离线
php,命令行下石头剪刀游戏!



<?php
#!/usr/bin/php/bin/php
<?php
/**
 * 石头剪刀布游戏(单机版)
 *
 * @author   [email]genghonghao@gmail.net[/email]
 * 
 * @date     2008/06/26
 *
 * @version  v,1.0(beta)
 *
 */

set_time_limit(0);

$input = array(

        
'STONE'    => 's',

        
'SHEARS'   => 'j',

        
'CLOTH'    => 'b'
);

define('INTEGRAL''INTEGRA_LOG');    
define('SUCCESS_MARK'5);
define('FAILURE_MARK', -5);
define('TIE_MARK'0);

fwrite(STDOUT,"n出招的规则是:  s代表石头  j代表剪刀  b代表布n退出请输入  :  quitn积分的规则是:  胜利+5分 失败-5分 平局不加分也不减分n");
while (
true) {
    
fwrite(STDOUT"n请 出 招 : ");

    
$inputu trim(fgets(STDIN));
    if(
$inputu == 'quit') {
        
fwrite(STDOUT"nBye Byenn");
        break;
    }

    
$rand_key array_rand($input1);
    
$rand_key $input[$rand_key];

    
$user_out get_out($inputu);
    
$syst_out get_out($rand_key);

    
$diff diff($inputu$rand_key);
    
    if(
$user_out[1] != false) {
        switch(
$diff) {
            case 
'>':
                
write_integral(SUCCESS_MARK."n");
                
$mark read_integral();
                
$mark_content "本局获得积分: "SUCCESS_MARK.  "剩余积分: {$mark}n";
                
fwrite(STDOUT"n您在这次战斗中取得了胜利!n你的出招:\"{$user_out[0]}\"n系统出招:\"{$syst_out[0]}\"  {$mark_content}");
                break;
            case 
'<':
                
write_integral(FAILURE_MARK."n");
                
$mark read_integral();
                
$mark_content "本局获得积分: "FAILURE_MARK.  "剩余积分: {$mark}n";
                
fwrite(STDOUT"n您在这次战斗中被系统战败!n你的出招:\"{$user_out[0]}\"n系统出招:\"{$syst_out[0]}\"  {$mark_content}");
                break;
            case 
'=':
                
write_integral(TIE_MARK."n");
                
$mark read_integral();
                
$mark_content "本局获得积分: "TIE_MARK.  "剩余积分: {$mark}n";
                
fwrite(STDOUT"n您和系统选择的都是\"{$user_out[0]}\",这次战斗是个平局!  {$mark_content}");
                break;
            default:
                echo 
$user_out[0]."n";
                break;
        }
    } else{

        
fwrite(STDOUT$user_out[0]."n");

    }
    
}

function 
write_integral($content) {

        
$handle = @fopen(INTEGRAL'a'); 

        @
fwrite($handle$content);

        @
fclose($handle);

}

function 
read_integral() {

    
$file = @file(INTEGRAL);
    
$count 0;

    foreach(
$file as $k => $v) {
        
$count += !empty($v) ? (int)(str_replace('n'''$v)) : 0;    
    }
    return 
$count;
}

function 
get_out($str) {

    
$val = array();

    switch(
$str) {

        case 
's':
            
$val[] = '石头';
            
$val[] = true;
            break;
        case 
'j':
            
$val[] = '剪刀';
            
$val[] = true;
            break;
        case 
'b':
            
$val[] = '布';
            
$val[] = true;
            break;
        default:
            
$val[] = "n您的出招不正确!n";
            
$val[] = false;
    }

    return 
$val;
}

function 
diff($str1$str2) {
    switch(
$str1) {
        case 
's':
            switch(
$str2) {
                case 
's':
                    
$val '=';
                    break;
                case 
'j':
                    
$val '>';
                    break;
                case 
'b':
                    
$val '<';
                    break;
                default :
                    
$val '#';
                    break;
            }
            break;
        case 
'j':
            switch(
$str2) {
                case 
's':
                    
$val '<';
                    break;
                case 
'j':
                    
$val '=';
                    break;
                case 
'b':
                    
$val '>';
                    break;
                default :
                    
$val '#';
                    break;
            }
            break;
        case 
'b':
            switch(
$str2) {
                case 
's':
                    
$val '>';
                    break;
                case 
'j':
                    
$val '<';
                    break;
                case 
'b':
                    
$val '=';
                    break;
                default :
                    
$val '#';
                    break;
            }
            break;
        default:
            
$val '#';
            break;
    }

    return 
$val;
}
?>




ONLYCORE
2008-6-26 10:58 PM#1
查看资料  发短消息  QQ  顶部
 
奶瓶 (NP博士)
版主
Rank: 7Rank: 7Rank: 7
老仙


UID 52707
精华 4
积分 5480
帖子 6102
金钱 5430 喜悦币
威望 50
人脉 0
阅读权限 100
注册 2004-11-22
来自 北大中文系
状态 在线
[推荐阅读] 贴子被删掉了
这是一个数学模型问题 可以简化复杂的case
例如定义:
石头=1
剪刀=2
布=3
变量a和b是双方出的
如果a - b == 0,自然是平手
如果a - b == 1 或 a - b == -2,自然剪刀输给了石头,布输给了剪刀,石头输给了布
如果a - b == 2 或 a - b == -1,自然布赢了石头,剪刀赢了布,石头赢了剪刀
除了-2 -1 0 1 2这五个数值之外,1 2 3做减法不会出现第六个结果了

这是中学生计算机教材BASIC语言里的一个例题





图片包子,注册送100包子!
2008-6-26 11:30 PM#2
查看资料  访问主页  Blog  发短消息  QQ  ICQ 状态  Yahoo!  顶部
 
帅的不能再输啦
新手上路
Rank: 1
初级会员


UID 67369
精华 0
积分 38
帖子 34
金钱 38 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2005-12-21
状态 离线
[推荐阅读] 【便宜新加坡服务器租用】【不限制流量多IP】QQ445676667
嗯。



QUOTE:
原帖由 奶瓶 于 2008-6-26 11:30 PM 发表
这是一个数学模型问题 可以简化复杂的case
例如定义:
石头=1
剪刀=2
布=3
变量a和b是双方出的
如果a - b == 0,自然是平手
如果a - b == 1 或 a - b == -2,自然剪刀输给了石头,布输给了剪刀,石头输给了 ...
这样做确定省了很多事儿。明天加修改修改。
呵呵。
2008-6-26 11:34 PM#3
查看资料  发短消息  QQ  顶部
 
帅的不能再输啦
新手上路
Rank: 1
初级会员


UID 67369
精华 0
积分 38
帖子 34
金钱 38 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2005-12-21
状态 离线
[推荐阅读] 关于php读取pop3邮件
根据奶瓶同学的意见,改进后得到:

确实效率提高了很多啊,也节省了许多代码

<?php
#!/usr/bin/php
/**
 * 石头剪刀布游戏(单机版)
 *
 * @author   [email]genghonghao@gmail.com[/email]
 * 
 * @date     2008/06/26
 *
 * @version  v,1.0(beta)
 *
 */

set_time_limit(0);

$input['s']    = array(1'石头');
$input['j']    = array(2'剪刀');
$input['b']    = array(3'布');

define('STONE'1);
define('SHEARS'2);
define('CLOTH'3);

define('INTEGRAL''INTEGRA_LOG');    

define('SUCCESS_MARK'5);
define('FAILURE_MARK', -5);
define('TIE_MARK'0);

define('SUCCESS'"n您在这次战斗中取得了胜利!n");
define('FAILURE'"n您在这次战斗中被系统战败!n");
define('TIE'"n您和系统战成了平局!n");

// 石头=1, 剪刀=2, 布=3
$stone[-1] = '>';
$stone[1]  = '<';
$stone[-2] = '<';
$stone[2]  = '>';
$stone[0]  = '=';

fwrite(STDOUT,"n出招的规则是:  s代表石头  j代表剪刀  b代表布n退出请输入  :  quitn积分的规则是:  胜利+5分 失败-5分 平局不加分也不减分n");
while (
true) {
    
fwrite(STDOUT"n请 出 招 : ");

    
$inputu trim(fgets(STDIN));
    if(
$inputu == 'quit') {
        
fwrite(STDOUT"nBye Byenn");
        break;
    }

    
$key array_rand($input1);
    
$syst_out $input[$key];
    
    if(
array_key_exists($inputu$input)) {
        
$user_out $input[$inputu];    
        
$diff_err $user_out[0] - $syst_out[0];
        
        if(
array_key_exists($diff_err$stone)) {
            switch(
$diff_err) {
                case -
1:
                    
$marke SUCCESS_MARK;
                    
$if    SUCCESS;
                    break;
                case 
1:
                    
$marke FAILURE_MARK;
                    
$if    FAILURE;
                    break;
                case -
2:
                    
$marke FAILURE_MARK;
                    
$if    FAILURE;
                    break;
                case 
2:
                    
$marke SUCCESS_MARK;
                    
$if    SUCCESS;
                    break;
                case 
0:
                    
$marke TIE_MARK;
                    
$if    TIE;
                    break;
            }
            
write_integral($marke "n");
            
$total read_integral();
            
$mark_content "本局获得积分: {$marke}剩余积分: {$total}n";
            
fwrite(STDOUT"n{$if}n你的出招:\"{$user_out[1]}\"n系统出招:\"{$syst_out[1]}\"  {$mark_content}");
        }

    }
    
}

function 
write_integral($content) {

        
$handle = @fopen(INTEGRAL'a'); 

        @
fwrite($handle$content);

        @
fclose($handle);

}

function 
read_integral() {

    
$file = @file(INTEGRAL);
    
$count 0;

    foreach(
$file as $k => $v) {
        
$count += !empty($v) ? (int)(str_replace('n'''$v)) : 0;    
    }
    return 
$count;
}
?>
2008-6-27 10:32 AM#4
查看资料  发短消息  QQ  顶部
 
游戏人间
版主
Rank: 7Rank: 7Rank: 7
☞风云山庄大少爷☜


UID 62639
精华 2
积分 14492
帖子 7414
金钱 14345 喜悦币
威望 20
人脉 127
阅读权限 100
注册 2004-12-21
来自 广西人在北京
状态 离线
[推荐阅读] 新手求助-如何连接数据库


QUOTE:
原帖由 奶瓶 于 2008-6-26 23:30 发表
这是中学生计算机教材BASIC语言里的一个例题 .
BASIC是啥,我中学时咋就没见过咧




 
群号:6025396/6025252/19520091(广西PHP交流/PHP高级编程/算法交流) 寧可在嘗試中失敗,也不在保守中成功! 不為失敗找理由,只為成功找方法! 饿踢Blog
 
2008-6-27 11:36 AM#5
查看资料  访问主页  Blog  发短消息  顶部
 
奶瓶 (NP博士)
版主
Rank: 7Rank: 7Rank: 7
老仙


UID 52707
精华 4
积分 5480
帖子 6102
金钱 5430 喜悦币
威望 50
人脉 0
阅读权限 100
注册 2004-11-22
来自 北大中文系
状态 在线
[推荐阅读] PHP 调用存储过程
两个case可以叠起来写啊




图片包子,注册送100包子!
2008-6-27 11:43 AM#6
查看资料  访问主页  Blog  发短消息  QQ  ICQ 状态  Yahoo!  顶部
 
奶瓶 (NP博士)
版主
Rank: 7Rank: 7Rank: 7
老仙


UID 52707
精华 4
积分 5480
帖子 6102
金钱 5430 喜悦币
威望 50
人脉 0
阅读权限 100
注册 2004-11-22
来自 北大中文系
状态 在线
[推荐阅读] 很强很黄


QUOTE:
原帖由 游戏人间 于 2008-6-27 11:36 AM 发表


BASIC是啥,我中学时咋就没见过咧
你那时候哪有工夫琢磨这个,你净琢磨那个了





图片包子,注册送100包子!
2008-6-27 11:54 AM#7
查看资料  访问主页  Blog  发短消息  QQ  ICQ 状态  Yahoo!  顶部
 
游戏人间
版主
Rank: 7Rank: 7Rank: 7
☞风云山庄大少爷☜


UID 62639
精华 2
积分 14492
帖子 7414
金钱 14345 喜悦币
威望 20
人脉 127
阅读权限 100
注册 2004-12-21
来自 广西人在北京
状态 离线
[推荐阅读] PHP 调用 mysql 存储过程


QUOTE:
原帖由 奶瓶 于 2008-6-27 11:43 发表
两个case可以叠起来写啊
你为什么老是那么有时候上论坛看代码呢? 我只看中文不看英文,爱国得不得了.




 
群号:6025396/6025252/19520091(广西PHP交流/PHP高级编程/算法交流) 寧可在嘗試中失敗,也不在保守中成功! 不為失敗找理由,只為成功找方法! 饿踢Blog
 
2008-6-27 11:56 AM#8
查看资料  访问主页  Blog  发短消息  顶部
 
why0813 (歪歪)
高级会员
Rank: 4
低调,低调。


UID 31734
精华 0
积分 717
帖子 1518
金钱 717 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2004-10-9
来自 猎户座第七行星
状态 在线
[推荐阅读] 盛大网络聘PHP web网络游戏开发工程师
这鸟真jb菜。
2008-6-27 01:08 PM#9
查看资料  访问主页  发短消息  QQ  顶部
 
sanders_yao
版主
Rank: 7Rank: 7Rank: 7
or2 =333


UID 30286
精华 0
积分 2531
帖子 4699
金钱 2528 喜悦币
威望 0
人脉 3
阅读权限 100
注册 2004-7-23
来自 北京 菜户营
状态 离线
[推荐阅读] 今天你python了没
大约在10年前 我也在看qbasic的书 现在全忘了



最近写的一些代码都会在以下地址发布,有兴趣的来批:
http://www.phpx.com/happy/thread-131368-1-1.html
2008-6-27 02:38 PM#10
查看资料  Blog  发短消息  顶部
 18  1/2  1  2  > 
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.045209 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP