#include<stdioh>
#include<stdlibh>
#include<timeh>
int main(void)
{
char player;
char computer;
srand ((unsigned)time(NULL)); // 随机数种子
while(1)
{fflush(stdin);
printf("欢迎来到猜拳小游戏,请选择你要出的手势:\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是如何得到的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)