C语言初学者,练习写一个剪刀石头布的程序,能运行但缺少输和平局的情况,请各位帮忙看看

C语言初学者,练习写一个剪刀石头布的程序,能运行但缺少输和平局的情况,请各位帮忙看看,第1张

#include<stdioh>

#include<stdlibh>

#include<timeh>

int main(void)

{

char player;

char computer;

srand ((unsigned)time(NULL)); // 随机数种子

while(1)

{fflush(stdin);

printf("欢迎来到猜拳小游戏,请选择你要出的手势:\n");

printf("a剪刀\nb石头\nc布\n");

scanf("%c",&player);

if (player==65 || player==97)printf("你出了剪刀,");

else if (player==66 || player==98)printf("你出了石头,");

else if (player==67 || player==99)printf("你出了布,");

else printf("输入错误,请重试:\n");

if(player>67)player-=32;

computer = rand()%3+1; // 产生随机数,得到电脑出拳

printf("电脑出了");

switch (computer)

{

case 1:printf("剪刀\n");break;

case 2:printf("石头\n");break;

case 3:printf("布\n");break;

}

if (player==65 && computer==3)//剪刀——布

printf("你赢了!\n");

else if (player==66 && computer==1)//石头——剪刀

printf("你赢了!\n");

else if (player==67 && computer==2)//布——石头

printf("你赢了!\n");

else if (player==67 && computer==1)//布——剪刀

printf("电脑赢了!\n");

else if (player==65 && computer==2)//剪刀——石头

printf("电脑赢了!\n");

else if (player==66 && computer==3)//石头——布

printf("电脑赢了!\n");

else if (player==65 && computer==1)//都出剪刀

printf("平手!\n");

else if (player==66 && computer==2)//都出石头

printf("平手!\n");

else if (player==67 && computer==3)//都出布

printf("平手!\n");

printf("\n");

}

return 0;

}

核心部分代码如下:

剩下的自己编即可。都挺简单的,我仅提供一个简单的思路,但并不一定是最后的。你可以尝试用下别的方法。

Private Sub Command1_Click()

'0表示剪刀,1表示石头,2表示布

Randomize

Label1Caption = word(Rnd  2)

Label2Caption = word(Rnd  2)

Dim result As String

result = ""

'分成六种情况

If Label1Caption = "石头" And Label2Caption = "剪刀" Then

  result = "甲赢"

End If

If Label1Caption = "剪刀" And Label2Caption = "石头" Then

   result = "乙赢"

End If

If Label1Caption = "布" And Label2Caption = "石头" Then

  result = "甲赢"

End If

If Label1Caption = "石头" And Label2Caption = "布" Then

  result = "乙赢"

End If

If Label1Caption = "剪刀" And Label2Caption = "布" Then

   result = "甲赢"

End If

If Label1Caption = "布" And Label2Caption = "剪刀" Then

   result = "乙赢"

End If

If result = "" Then result = "平手"

Label3Caption = result '显示结果

End Sub

Function word(n As Integer) As String

Select Case n

Case 0:

word = "剪刀"

Case 1:

word = "石头"

Case 2:

word = "布"

End Select

End Function

界面如下:

你可以将文字换成,那就更加形象了,当然还可以添加其他功能,自己思考吧

这是一个简单的分段函数问题,下面我们来分析过程:0 剪刀 1 石头 2 布---------------------------------------------man={0,1,2} /游戏者只能选取0-2中的一个数/computer={0,1,2} /电脑随机值也只能产生0-2中的一个数/根据组合原理共有9种结果 (man,computer)={(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)}当(man,computer)={(0,0),(1,1),(2,2)}时 结果和局 man=computer;当(man,computer)={(0,1),(1,2),(2,0)} 时 结果败局;当(man,computer)={(0,2),(1,0),(2,1)} 时 结果胜局;-----------------------------------------------------------------------------------------------当man=computer时 , (man – computer + 4) % 3 -1= 0 结果和局 当取(0,1),(1,2),(2,0) 时 , (man – computer + 4) % 3 -1=-1 结果败局当取(0,2),(1,0),(2,1) 时 , (man – computer + 4) % 3 -1= 1 结果胜局那么(man – computer + 4) % 3 -1={0,-1,1}={和,败,胜} 经推理完全符合实际结果--------------------------------------------------------------------------------------------------------------------

#include <iostreamh>

#include <timeh>

#include <stdlibh>

#include <conioh>

int main1(int n1)

{

srand((unsigned)time(0));

n1=rand()%3;

return n1;

}

int main()

{

int cho,good,temp,win=0,lose=0,tie=0;

char a;

cout<<"一一一一一一一一一一一一一一一一一一一一一一一一一一一一"<<endl;

cout<<"欢迎进入石头剪刀布的世界!"<<endl<<"按任意键开始游戏……"<<endl;

cout<<"一一一一一一一一一一一一一一一一一一一一一一一一一一一一"<<endl;

getch();

while(1){

cout<<"//////////新一局//////////"<<endl;

cout<<"1出石头"<<endl;

cout<<"2出剪刀"<<endl;

cout<<"3出布"<<endl;

cout<<""<<endl;

cout<<"请选择";

cin>>cho; //用户输入1-3任意数

good=main1(temp);

switch (good)

{

case 0:

cout<<"对方出了剪子\n";

if (cho==1) cout<<"您赢了"<<endl,win++;

if (cho==2) cout<<"势均力敌"<<endl,tie++;

if (cho==3) cout<<"您输了"<<endl,lose++;

cout<<"战况:"<<"赢:"<<win<<"次;输:"<<lose<<"次;平:"<<tie<<"次。"<<endl;

break;

case 1:

cout<<"对方出了石头\n";

if (cho==3) cout<<"您赢了"<<endl,win++;

if (cho==1) cout<<"势均力敌"<<endl,tie++;

if (cho==2) cout<<"您输了"<<endl,lose++;

cout<<"战况:"<<"赢:"<<win<<"次;输:"<<lose<<"次;平:"<<tie<<"次。"<<endl;

break;

case 2:

cout<<"对方出了布\n";

if (cho==2) cout<<"您赢了"<<endl,win++;

if (cho==3) cout<<"势均力敌"<<endl,tie++;

if (cho==1) cout<<"您输了"<<endl,lose++;

cout<<"战况:"<<"赢:"<<win<<"次;输:"<<lose<<"次;平:"<<tie<<"次。"<<endl;

break;

}}

return 0;

}

这个太简单了吧 石头、剪子、布 实际上不就是 a b c嘛 a>b b>c c>a//scanf()接收2个字母 ,放在变量 no1 和 no2里面if(no1=='a'&&no2==b)//第一个是a输出第一个大if(no1=='a'&&no2==‘a’)//一样大if(no1=='a'&&no2==‘c‘)//第二个大。。。。把条件都列出来 OK

建立随机值“剪刀随机值”

建立随机值“石头随机值”

建立随机值“布随机值”

剪刀>布

石头>剪刀

如果输入剪刀则

重新建立三个随机值

如果输入布则

重新建立三个随机值

如果输入石头则

重新建立三个随机值

判断随机数的大小

#include "stdafxh"

#include "stdioh"   //加载输入输出有关的函数

#include "stdlibh"  //加载标准库函数,因为这里要用到srand()这个函数

#include "timeh"    //加载时间函数

int main(int argc, char argv[])

{

int you,computer;  //定义两个整形变量用来存储你和电脑的选择

char jsb[3]={"剪刀","石头","布"};    //定义一个指数的字符串数组用来定义剪刀,石头,布的字符

srand((unsigned) time(NULL)); //用时间做种,每次产生随机数不一样,因为如果直接用rand()产生的随机是假随机数,就是有规律的

printf("0是剪刀,1是石头,2是布,3是退出游戏\n");  //在屏幕上显示提示

while(you<3)  //进入循环,如果输入大于2的数字就退出游戏

{

computer=rand()%3;    //随机产生一个0-2的数字来作为电脑出的剪刀,石头,布

printf("请你选择相应的数字:");  //在屏幕上显示提示

scanf("%d",&you); //等待你输入数字

printf("你出的是:%s,电脑出的是:%s,",jsb[you],jsb[computer]);   //在屏幕上显示出你和电脑出的什么

if(you == computer)     //如果一样就显示平局 

printf("平局!\n");

//如果电脑出的比你的大就显示电脑赢,把电脑出布,你出剪刀的情况过滤掉在后面单独判断

if(you < computer && !(computer ==2 && you ==0))   

printf("电脑赢!\n");

//如果你出的比电脑的大就显示你赢,把你出布,电脑出剪刀的情况过滤掉在后面单独判断

if(you > computer && !(computer ==0 && you ==2))

printf("你赢!\n");

if(computer == 2 && you ==0)  //电脑出布,你出剪刀的话你赢

printf("你赢!\n");

if(computer == 0 && you ==2)  //电脑出剪刀,你出布的话电脑赢

printf("电脑赢!\n");

}

return 0;

}

以上就是关于C语言初学者,练习写一个剪刀石头布的程序,能运行但缺少输和平局的情况,请各位帮忙看看全部的内容,包括:C语言初学者,练习写一个剪刀石头布的程序,能运行但缺少输和平局的情况,请各位帮忙看看、哪位vb大神能帮我编个vb的“石头剪刀布”的程序吗、C语言中的石头剪刀布的程序中的核心代码 (man – computer + 4) % 3 -1是如何得到的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9271420.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存