用C语言如何编写一个石头剪子布的程序

用C语言如何编写一个石头剪子布的程序,第1张

#include <stdio.h>

#include <time.h>

#include <stdlib.h>

void main()

{

int com,user

char c

srand((unsigned)time(NULL))//初始化随机数,如果没有这条语句,每次运行电脑产生的随机数序列都是一样的

printf("进入游戏\n")

do{

printf("请出拳(1.剪刀、2.石头、3.布):")

scanf("%d",&user)

com=rand()%3+1//产生1-3范围内的随机数

printf("电脑出%s\n",com==1?"剪刀":com==2?"石头":"布")

switch(com-user) //用电脑产生的数和用户输入的数的差值来判断胜负

{

case 0:

printf("平手\n")

break

case 1:

case -2:

printf("电脑赢了\n")

break

case -1:

case 2:

printf("你赢了\n")

}

printf("继续游戏按Y键、其它键退出")

getchar()

c=getchar()

}while(c=='y' || c=='Y')

printf("已经退出游戏")

}

扩展资料

C++编程: 石头剪子

#include<cstdio>

#include<iostream>

using namespace std

int main()

{

int n

char a[10],b[10]

cin>>n

int c[n+3]

for(int i=1i<=ni++)

{

cin>>a>>b

if(a[0]=='R')

{

if(b[0]=='R')

{

c[i]=0

}

if(b[0]=='S')

{

c[i]=1

}

if(b[0]=='P')

{

c[i]=2

}

}

else if(a[0]=='S')

{

if(b[0]=='R')

{

c[i]=2

}

if(b[0]=='S')

{

c[i]=0

}

if(b[0]=='P')

{

c[i]=1

}

}

else if(a[0]=='P')

{

if(b[0]=='R')

{

c[i]=1

}

if(b[0]=='S')

{

c[i]=2

}

if(b[0]=='P')

{

c[i]=0

}

}

}

for(int i=1i<=ni++)

switch(c[i])

{

case 0:

{

printf("Tie\n")break

}

case 1:

{

printf("Player1\n")break

}

case 2:

{

printf("Player2\n")break

}

}

return 0

}

帮你修改了一下判断部分。你试试吧:

#include <stdio.h>

#include <stdlib.h>

#include<sys/types.h>

#include<sys/timeb.h>

main()

{

  loop:

  printf("欢迎来玩石头剪刀布,请使用键盘输入,0代表石头,1代表剪刀,2代表布。\n******************************************************\n")

  int x,com,user

  unsigned int seedVal

  struct timeb timeBuf

  ftime(&timeBuf)

  seedVal=((((unsigned int)timeBuf.time&0xFFFF)+

                  (unsigned int)timeBuf.millitm)^

                  (unsigned int)timeBuf.millitm)

  srand((unsigned int)seedVal)  

  x=rand()

  com=x%3

  scanf("%d",&user)

  if(user>2) 

    printf("您的输入有误,请输入0、1、2中任意一个数字\n")

  else 

  {

    if(com==0) 

    {

if(user==0) printf("平手\n")

     if(user==1) printf("输了\n")

        if(user==2) printf("赢了\n")

    }

    if(com==1) 

    {

if(user==0) printf("赢了\n")

     if(user==1) printf("平手\n")

        if(user==2) printf("输了\n")

    }

    if(com==2) 

    {

if(user==0) printf("输了\n")

     if(user==1) printf("赢了\n")

        if(user==2) printf("平手\n")

    }

  }

goto loop

}

刚刚的有点问题,现在改好了:

#include<stdio.h>

#include<time.h>

#include<stdlib.h>

#include<string.h>

char name[100],way[3][10]={"石头","剪子","布"},mode_name[2][20]={"三局两胜","五局三胜"}

void new_game(int mode,int *p_win,int * p_lose,int *p_tide){

char cmd[10]

int computer,user,win=0,lose=0

int cnt[2]={3,5}

printf("***当前模式:\t%s\n",mode_name[mode])

for(int i=0i<cnt[mode]i++){

printf("***1 -- 石头\t 2 -- 剪子\t 3 -- 布\n")

fgets(cmd,9,stdin)

user=(cmd[0]-'1')%3

if(user<0)user+=3

computer=rand()%3

printf("***%-10s:%s\n",name,way[user])

printf("***%-10s:%s","电脑",way[computer])

if(computer==user)

{

printf("\t\t平\n")

}

else if(user-computer==-1 || user-computer==2)

{

printf("\t%s\t赢\n",name)

win++

}

else

{

printf("\t电脑\t赢\n")

lose++

}

if(win>lose+cnt[mode]-i-1 || lose>win+cnt[mode]-i-1)

break

}

if(win>lose)

{

printf("恭喜!该局你赢家了!\n")

(*p_win)++

}

else if(win<lose)

{

(*p_lose)++

printf(" 可惜!,你输了本局!\n")

}

else

{

(*p_tide)++

printf(" 此局平局!\n")

}

}

int main(){

srand(time(0))

char cmd[10]

int mode=0

int win,lose,tide

win=lose=tide=0

printf("请输入玩家姓名:\t")

fgets(name,99,stdin)

name[strlen(name)-1]='\0'

while(1){

printf("/******************石头剪子布游戏 ******************\n")

printf("***玩家:\t%s\n",name)

printf("***比赛情况:\t赢:\t%d\t输:\t%d\t平:\t%d\n",win,lose,tide)

printf("***当前模式:\t%s\n",mode_name[mode])

printf("***N -- 开始游戏;\tC -- 切换模式;\tQ -- 退出;\n")

fgets(cmd,9,stdin)

if(cmd[0]=='N' || cmd[0]=='n')

new_game(mode,&win,&lose,&tide)

else if(cmd[0]=='Q' || cmd[0]=='q')

break

else

mode=1-mode

}

return 0

}


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

原文地址:https://54852.com/yw/11353235.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存