c語言猜拳教程,用c語言編寫猜拳遊戲

本文目錄一覽:

用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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-14 02:15
下一篇 2024-12-14 02:15

相關推薦

  • MQTT使用教程

    MQTT是一種輕量級的消息傳輸協議,適用於物聯網領域中的設備與雲端、設備與設備之間的數據傳輸。本文將介紹使用MQTT實現設備與雲端數據傳輸的方法和注意事項。 一、準備工作 在使用M…

    編程 2025-04-29
  • Python3.6.5下載安裝教程

    Python是一種面向對象、解釋型計算機程序語言。它是一門動態語言,因為它不會對程序員提前聲明變數類型,而是在變數第一次賦值時自動識別該變數的類型。 Python3.6.5是Pyt…

    編程 2025-04-29
  • Deepin系統分區設置教程

    本教程將會詳細介紹Deepin系統如何進行分區設置,分享多種方式讓您了解如何規劃您的硬碟。 一、分區的基本知識 在進行Deepin系統分區設置之前,我們需要了解一些基本分區概念。 …

    編程 2025-04-29
  • 為什麼不用Python開發遊戲

    Python是一種高級編程語言,擁有簡單易學、代碼簡潔等優點。同時,Python也是一種多用途的語言,可以用於Web開發、數據分析以及機器學習等領域。然而,對於遊戲開發領域,Pyt…

    編程 2025-04-29
  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Qt雷達探測教程

    本文主要介紹如何使用Qt開發雷達探測程序,並展示一個簡單的雷達探測示例。 一、環境準備 在開始本教程之前,需要確保你的開發環境已經安裝Qt和Qt Creator。如果沒有安裝,可以…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • 猿編程python免費全套教程400集

    想要學習Python編程嗎?猿編程python免費全套教程400集是一個不錯的選擇!下面我們來詳細了解一下這個教程。 一、課程內容 猿編程python免費全套教程400集包含了從P…

    編程 2025-04-29

發表回復

登錄後才能評論