本文目錄一覽:
用C語言編寫一個有趣的猜拳遊戲
#includestdio.h
#includestring.h
#includestdlib.h
#includetime.h
#define maxn 10001
char p1[]=”rock”;
char p2[]=”scissors”;
char p3[]=”cloth”;
char *h[4];
void init(void)
{
h[1]=p1;
h[2]=p2;
h[3]=p3;
}
void begin(void)
{
char your[maxn];
long com;
char p[maxn];
srand(time(NULL));
for(;;)
{
printf(“input your order ?( 1:rock 2:scissors 3:cloth )\n”);
scanf(“%s”,your);
com=strlen(your);
if( your[0]’3′ || your[0]’1′ || com!=1)
{
printf(“wrong order! please choose in(1~3);\n”);
getchar();
continue;
}
printf(“your order is %s!\n”,h[your[0]-‘0’]);
getchar();
getchar();
com=rand()%3+1;
printf(“The computer’s order is %s!\n”,h[com]);
getchar();
switch(com-your[0]+’0′)
{
case 0:printf(“draw game!\n”);break;
case 1:
case -2:
printf(“You wins!\n”);break;
case -1:
case 2:
printf(“The computer wins!\n”);break;
}
com=1;
for(;com==1;)
{
printf(“continue?(Y/N)\n”);
scanf(“%s”,p);
com=0;
switch(p[0])
{
case ‘Y’:break;
case ‘N’:
printf(“press any key to continue.\n”);getchar();getchar();return ;
default:
printf(“wrong order!\n”);com=1;break;
}
}
}
}
main(void)
{
init();
begin();
return 0;
}
c語言問題 猜拳遊戲
整體還是很好的。
問題在這裡:
「scanf(“%c,%C”,player1,player2); 」這一句,第二個%c大寫了,改一下。
scanf的實質是將鍵盤輸入字元存入聲明字元變數時開闢的一段存儲區域。第一局運行正常,而第二局往後你只是單純的想覆蓋輸入,這是不可以的——因為你在上一次使用scanf後沒有清空輸入緩存, 這樣再次使用scanf的時候函數就會認為你已經輸入過了。
改進只需要在scanf之前加上fflush(stdin)清空輸入緩存。
如圖:
希望幫上忙。
就C語言中 猜拳遊戲的代碼
這是一個簡單的猜拳遊戲(剪子包子錘),讓你與電腦對決。你出的拳頭由你自己決定,電腦則隨機出拳,最後判斷勝負。
下面的代碼會實現一個猜拳遊戲,讓你與電腦對決。你出的拳頭由你自己決定,電腦則隨機出拳,最後判斷勝負。
啟動程序後,讓用戶出拳,截圖:
用戶出拳,顯示對決結果:截圖:
代碼實現:
#include stdio.h
#include stdlib.h
#include time.h
int main()
{
char gamer; // 玩家出拳
int computer; // 電腦出拳
int result; // 比賽結果
// 為了避免玩一次遊戲就退出程序,可以將代碼放在循環中
while (1){
printf(“這是一個猜拳的小遊戲,請輸入你要出的拳頭:\n”);
printf(“A:剪刀\nB:石頭\nC:布\nD:不玩了\n”);
scanf(“%c%*c”,gamer);
switch (gamer){
case 65: //A
case 97: //a
gamer=4;
break;
case 66: //B
case 98: //b
gamer=7;
break;
case 67: //C
case 99: //c
gamer=10;
break;
case 68: //D
case 100: //d
return 0;
default:
printf(“你的選擇為 %c 選擇錯誤,退出…\n”,gamer);
getchar();
system(“cls”); // 清屏
return 0;
break;
}
srand((unsigned)time(NULL)); // 隨機數種子
computer=rand()%3; // 產生隨機數並取余,得到電腦出拳
result=(int)gamer+computer; // gamer 為 char 類型,數學運算時要強制轉換類型
printf(“電腦出了”);
switch (computer)
{
case 0:printf(“剪刀\n”);break; //4 1
case 1:printf(“石頭\n”);break; //7 2
case 2:printf(“布\n”);break; //10 3
}
printf(“你出了”);
switch (gamer)
{
case 4:printf(“剪刀\n”);break;
case 7:printf(“石頭\n”);break;
case 10:printf(“布\n”);break;
}
if (result==6||result==7||result==11) printf(“你贏了!”);
else if (result==5||result==9||result==10) printf(“電腦贏了!”);
else printf(“平手”);
system(“pausenulcls”); // 暫停並清屏
}
return 0;
}
代碼分析
1) 首先,我們需要定義3個變數來儲存玩家出的拳頭(gamer)、電腦出的拳頭(computer)和最後的結果(result),然後給出文字提示,讓玩家出拳。
接下來接收玩家輸入:
scanf(“%c%*c”,gamer);
用c語言怎麼寫猜拳遊戲啊!我剛剛學一個月
#includecstdio
#includecstdlib
#includectime
int main()
{
int a=0,b=0,i,c,h,wr;
printf(“飛行棋,先輸入格子數,之後每次輸入1-3的數(上限100)\n”);
printf(“輸入格子數:”);
scanf(“%d”,h);
a=a+h;b=b+h;
while(1)
{
printf(“1=石頭2=剪刀3=布\n”);
printf(” * * * ***\n *** * * ***\n * * * ***\n”);
printf(“輸入1~3\n”);
printf(“———————————-\n”);
scanf(“%d”,i);
srand(time(0));
c=rand()%3;
if(i==1c==2||i==2c==3||i==3c==1)
{a=a-1;
printf(“你贏了,前進一步\n你還剩%d 電腦剩%d\n”,a,b);
printf(“*——————————–*\n”);}
else if(c==1i==2||c==2i==3||c==3i==1)
{b=b-1;
printf(“你輸了,電腦前進\n你還剩%d 電腦剩%d\n”,a,b);
printf(“/——————————–/\n”);}
else {printf(“平局\n你還剩%d 電腦剩%d\n”,a,b);
printf(“?——————————–?\n”);}
if(a==0||b==0)break;}
if(a==0)printf(“you win\n”);
else printf(“you lose\n”);
system(“pause”);
}
c語言 猜拳問題
int win = player[0].hand;
bool change = false;
bool draw = false;
for (int k = 1; k players; k++) {
if (player[k].hand + 1 == win || (player[k].hand == 2 win == 0)) {
if (change) {
printf(“平局\n”);
draw = true;
break;
} else {
win = player[k].hand;
change = true;
}
} else if (player[k].hand – 1 == win || (player[k].hand == 0 win == 2)) {
if (!change) change = true;
}
}
if (!change) {
printf(“平局\n”);
draw = true;
}
if (!draw) {
printf(“player “);
for (int k = 0; k players; k++)
if (player[k].hand == win) {
player[k].winCount++;
printf(“%d “, k + 1);
}
printf(“勝\n”);
}
以上是課題一。
———————————-
以下是課題二。
printf(“勝數 “);
int max = 0;
for (int k = 0; k players; k++) {
if (player[k].winCount max) max = player[k].winCount;
printf(“%d勝 “, player[k].winCount);
}
printf(“\nplayer “);
for (int k = 0; k players; k++) {
if (player[k].winCount == max) printf(“%d “, k + 1);
}
printf(“勝\n”);
————————————
以上代碼純手打,請自行編譯,出現問題歡迎追問。
求C語言猜拳遊戲代碼
#include stdio.h
#include stdlib.h
#include time.h
void main()
{
int rand_0(void);
int game(int inp);
int start,yes=1,inp,inp_1=1; char y;
while(yes) /*預防用戶輸入1或2以外的數據*/
{
printf(“1:開始遊戲\n2:排行榜\n”);
scanf(“%d”,start);
if((start!=1)(start!=2))
{
printf(“請輸入1或2\n”);
}
else
yes=0;
}
start:
if(start==1) /*如果用戶選擇開始遊戲……*/
{
printf(“你出?\n1:石頭\n2:剪刀\n3:布\n”);
while(inp_1) /*預防用戶輸入別的數據*/
{
scanf(“%d”,inp);
if((inp!=1)(inp!=2)(inp!=3))
{
printf(“你出?\n1:石頭\n2:剪刀\n3:布\n”);
}
else
{
inp_1=0;
switch(game(inp))
{
case 1:printf(“\n\n恭喜你,你贏了!\n\n”);break;
case 0:printf(“\n\n很遺憾,你輸了!\n\n”);break;
case 2:printf(“\n\n平局\n\n”);break;
}
}
}
}
inp_1=1;
printf(“\n\n是否重新開始遊戲?(y/n)”);
scanf(“%s”,y);
if((y==’y’)||y==’Y’)
goto start;
else
return 0;}
int rand_0(void) /*取隨機數*/
{
int i,rand_1;
srand((unsigned)time(NULL));
for(i=1;i=10;i++)
{
rand_1=rand()%4;
if(rand_1==0) continue;
return(rand_1);
}
}
int game(int inp)
{
int random,win; /*win變數,1是贏,2是平,0是輸*/
random=rand_0();
switch(inp)
{
case 1:if(random==3) return win=0;
else if(random==2) return win=1;
else return win=2;
case 2:if(random==3) return win=1;
else if(random==2) return win=2;
else return win=0; case 3:if(random==3) return win=2;
else if(random==2) return win=1;
else return win=0;
}
}就做了那麼點點。。。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/252966.html