c語言猜拳視頻,c語言猜拳程序

本文目錄一覽:

C語言 猜拳遊戲編程

#includestdio.h

#includemath.h

main()

{char c1;

int i,j;

do{

printf(“Please input :”);

scanf(“%d”,i);

if(i1||i3){printf(“Input error!\nPlease input again!\n”);continue;}

j=rand()%3+1;

printf(“%d\n”,j);

if(i==j)printf(“Ping Ju!\n”);else

if((i-j)==1)printf(“YOU WIN!\n”);else

if(i==1j==3)printf(“YOU WIN!\n”);else

printf(“YOU LOSE!\n”);

printf(“Replay?(Y/N)”);

scanf(“%c”,c1);

if(c1==’n’||c1==’N’)break;

}while(c1==’y’||c1==’Y’);

printf(“Welcome to play again!\nAny key Quit…”);

getch();putchar(‘\n’);

}

怎樣用C語言編寫一個猜拳遊戲?

/*至摟主:本遊戲系統可支持多個用戶遊戲,一次只能登錄一個用戶,運行此程序會生成一個文件來存儲用戶信息,本程序允許承載的用戶個數為1000個,為使遊戲更有趣味,程序特意為不同的玩家分數設計了不同的等級,程序初始化時,會生成一個只含有5個系統玩家的文件。遊戲過程中,文件會不斷刷新,如果玩家要刪除一切曾經的遊戲記錄,只需將存儲文件刪除,存儲記錄的文件名為’sunyi’,如果摟主想與我們聯繫,請加QQ好友865363864。(加好友時請摟主註明身份)。

*/

#include stdio.h

#include stdlib.h

#include time.h

//#define NULL 0

/**************************************************************************************************************************/

struct computer //定義系統玩家結構體

{

char player[30];

int score;

int times;

int time;

}cpt[1000]={“player1″,100,1,1,”player2″,100,1,1,”player3″,100,1,1,”player4″,100,1,1,”player5”,100,1,1,};

FILE *in; //生成記錄玩家信息的文件的指針

int number,rool; //rool:玩家所在數組位置的角標.number:數組元素的個數.

/****************************************************************************************************************************/

int h() //生成一個隨機數(1,2或3);

{

int k,n;

n=rand()%3;

return n+1;

}

/****************************************************************************************************************************/

int str_to_num(char a[]) //引入函數str_to_num:使字符串(string)轉化為整數數形式(int)!

{

int i=strlen(a)-1,num=0,time=1;

for(;i=0;i–)

{

num=num+(a[i]-‘0’)*time;

time=time*10;

}

return(num);

}

/*****************************************************************************************************************************/

void b(int n)

{

switch((int)(n/20))

{

case(0):printf(“等級:江湖渣子”);break;

case(1):

case(2):printf(“等級:初入江湖”);break;

case(3):

case(4):

case(5):printf(“等級:江湖浪子”);break;

case(6):

case(7):

case(8):

case(9):printf(“等級:江湖俠客”);break;

case(10):

case(11):

case(12):

case(13):

case(14):

case(15):

case(16):

case(17):

case(18):

case(19):printf(“等級:一派掌門”);break;

default:

{

switch((int)(n/1000))

{

case(0):printf(“等級:武林盟主”);break;

case(1):

case(2):

case(3):

case(4):printf(“等級:江湖奇俠”);break;

case(5):

case(6):

case(7):

case(8):

case(9):printf(“等級:孤獨求敗”);break;

default:printf(“等級:不死之身”);break;

}

}

}

}

/*****************************************************************************************************************************/

int readfile(void) //讀文件

{

int i,number=5;

if((in=fopen(“sunyi.txt”,”rb”))!=NULL)

{

fread(number,sizeof(int),1,in);

for(i=0;inumber;i++)

{

fread(cpt[i],sizeof(struct computer),1,in);

}

fclose(in);

}

return(number);

}

/******************************************************************************************************************************/

void writefile() //寫文件

{

int i;

in=fopen(“sunyi.txt”,”wb”);

fwrite(number,sizeof(int),1,in);

for(i=0;inumber;i++)

{

fwrite(cpt[i],sizeof(struct computer),1,in);

}

fclose(in);

}

/*******************************************************************************************************************************/

void rule() //規則函數

{

printf(” 猜拳遊戲\n”);

printf(“規則:\n”);

printf(” 輸入“N”或“n”查看積分,第一次遊戲時,會免費贈送玩家100枚金幣,每局遊戲都會”);

printf(“提示您輸入押金,押金必須大於1枚金幣!(含1枚),提示遊戲開始後,輸入一個1~3”);

printf(“之間的值;1表示石頭,2表示剪刀,3表示布。同時,系統也將出拳,按照通俗規則,贏者”);

printf(“將得到押金,否則扣除,當積分小於5分時,您有五次機會得到系統免費贈送的30分,”);

printf(“當玩家金幣數為零時(又用完5次得到30金幣的機會), 系統將提示玩家遊戲結束。並刪”);

printf(“除用戶。\n”);

printf(” #本系統會自動生成5個系統玩家輪流與您遊戲,遊戲前,玩家需要登錄來調出自己”);

printf(“的遊戲記錄,如果是第一次遊戲,請輸入“register”,再輸入新用戶名註冊,如果以前”);

printf(“進行過遊戲,請輸入“entry”再輸入“用戶名”登錄.\n(註:本系統允許存儲本記錄多個用戶的信息。)\n\n”);

}

/*********************************************************************************************************************************/

int registe() //開始遊戲前的登錄和註冊.

{

char ch[30];

int i;

loop4:

printf(“\n第一次玩遊戲?請輸入“register”註冊!\n登錄?請輸入“entry”登錄\n”);

loop3:

scanf(“%s”,ch);

if(strcmp(“register”,ch)==0)

{

loop2:

printf(“請輸入新用戶名:(長度小於30個字符)”);

scanf(“%s”,ch);

for(i=5;inumber;i++)

{

if(strcmp(cpt[i].player,ch)==0)

{

printf(“這個用戶已被註冊過!註冊失敗!請重新註冊!\n”);

goto loop2;

}

}

strcpy(cpt[number].player,ch);

cpt[number].score=100;

cpt[number].time=cpt[number].times=1;

number+=1;

writefile();

printf(“註冊成功!請登錄並在您的用戶下進行遊戲!:”);

goto loop4;

}

else if(strcmp(“entry”,ch)==0)

{

printf(“請輸入用戶名登錄:”);

scanf(“%s”,ch);

for(i=5;inumber;i++)

{

if(strcmp(cpt[i].player,ch)==0)

{

printf(“登錄成功!\n”);

printf(“您將在您的用戶下進行遊戲。!”);

break;

}

}

if(i==number)

{

printf(“輸入錯誤或沒有註冊或該用戶由於輸光金幣已被系統刪除!\n請重新輸入用戶名登錄!”);

goto loop4;

}

}

else

{

printf(“您輸入的不是“register”也不是“entry”,系統無法執行您的命令,請重新輸入:\n”);

goto loop3;

}

return(i);

}

/*********************************************************************************************************************************/

void game() //遊戲和查詢的主體函數

{

int o,p;

char a[10],wether[1];

if(cpt[rool].time==1)printf(“本局遊戲系統將免費贈予您100枚金幣。\n”);

if(cpt[rool].score5cpt[rool].times=5)

{

if(cpt[rool].times5)

{

printf(“您的積分已少於5分,系統第%d次贈送你30枚金幣\n”,cpt[rool].times);

}

else

{

printf(“您的積分已少於5分,系統最後一次贈送你30枚金幣!\n”);

}

cpt[rool].score+=30;

cpt[rool].times+=1;

game();

}

if(cpt[rool].score==0)

{

int q;

printf(“您不能在沒有積分的狀態下遊戲!你的用戶將被刪除,如果您還想繼續遊戲,請重新申請用戶\nGAME OVER!\n”);

for(q=rool;qnumber-1;q++)

{

strcpy(cpt[q].player,cpt[q+1].player);

cpt[q].time=cpt[q+1].time;

cpt[q].times=cpt[q+1].times;

cpt[q].score=cpt[q+1].score;

}

number-=1;

writefile();

return;

}

else

{

printf(“是否繼續遊戲,輸入‘y’或‘Y’繼續遊戲\n”);

scanf(“%s”,wether);

if(strcmp(“y”,wether)!=0 strcmp(“Y”,wether)!=0)

{

printf(“GAME STOP”);

return;

}

else

{

loop1:

printf(“請輸入你對本局遊戲的押金或輸入’N’或‘n’查詢積分排名\n”);

loop5:

scanf(“%s”,a);

/****************************************************************************************************************************************************/

if(a[0]==’n’||a[0]==’N’) //查尋排名

{

int i[5]={-1,-1,-1,-1,-1},j,k,d=0,e=0,line=-1;

for(k=1;k=5;k++)

{

for(d=0;d5;d++)

{

if(d!=i[0]d!=i[1]d!=i[2]d!=i[3]d!=i[4])break;

}

for(j=0;jnumber;j++)

{

if(cpt[j].score=cpt[d].scorej!=i[0]j!=i[1]j!=i[2]j!=i[3]j!=i[4])d=j;

}

i[k-1]=d;

if(d==rool)

{

line=k;

}

printf(“\n玩家:%10s,金幣數:%4d,”,cpt[d].player,cpt[d].score);

b(cpt[d].score);

}

if(line!=-1)

{

printf(“\n\n您目前的積分為:%d,\n排名為:%d,\n”,cpt[rool].score,line);

b(cpt[rool].score);

printf(“\n\n”);

}

else

{

printf(“\n\n您目前的積分為:%d,\n沒有進入前5名\n”,cpt[rool].score);

b(cpt[rool].score);

printf(“\n\n”);

}

game();

}

/*****************************************************************************************************************************************************/

else //玩遊戲

{

int g=0,le=strlen(a);

for(;gle;g++)

{

if(!(a[g]=’0’a[g]=’9′))

{

printf(“你輸入了遊戲系統無法識別的字符,請重新輸入:”);

break;

}

}

if(gle)

{

goto loop5;

}

int money=str_to_num(a);

if(money==0)

{

printf(“押金不能為‘0’,請重新輸入:”);

goto loop5;

}

if(money0)

{

printf(“押金不能為負數,請重新輸入:”);

goto loop5;

}

printf(“和您進行本輪遊戲的是系統玩家player%d。\n”,(cpt[rool].time-1)%5+1);

if(cpt[(cpt[rool].time-1)%5].score5)

{

cpt[(cpt[rool].time-1)%5].score+=50;

printf(“你的對手的金幣小於5個,系統贈送你的對手50枚金幣\n”);

}

printf(“您設定的押金為%d\n”,money);

if(moneycpt[rool].score)

{

printf(“抱歉,您的金幣不足!請重新輸入!\n”);

goto loop1;

}

if(moneycpt[(cpt[rool].time-1)%5].score)

{

printf(“抱歉,您的對手金幣不足!請重新輸入!\n”);

goto loop1;

}

if(10)

{

printf(“遊戲開始,請出拳!(1表示石頭,2表示剪刀,3表示布)”);

scanf(“%d”,o);

p=h();

switch(o)

{

case 1:

{

printf(“玩家出拳:石頭\n”);

break;

}

case 2:

{

printf(“玩家出拳:剪子\n”);

break;

}

case 3:

{

printf(“玩家出拳:布\n”);

break;

}

}

switch(p)

{

case 1:

{

printf(“系統出拳:石頭\n”);

break;

}

case 2:

{

printf(“系統出拳:剪子\n”);

break;

}

case 3:

{

printf(“系統出拳:布\n”);

break;

}

}

switch(o-p)

{

case 0 :

{

printf(“平局!系統將不改變你的金幣數量,你的餘額為:%d\n”,cpt[rool].score);

break;

}

case 1 :

case -2:

{

printf(“你輸了,系統將扣除你%d個金幣,你的餘額為:%d\n”,money,cpt[rool].score-money);

cpt[rool].score-=money;

cpt[(cpt[rool].time-1)%5].score=cpt[(cpt[rool].time-1)%5].score+money;

break;

}

case -1:

case 2 :

{

printf(“你贏了,系統將給予你%d個金幣,你的餘額為:%d\n”,money,cpt[rool].score+money);

cpt[rool].score+=money;

cpt[(cpt[rool].time-1)%5].score=cpt[(cpt[rool].time-1)%5].score-money;

break;

}

}

cpt[rool].time+=1;

writefile();

}

game();

}

}

}

}

main() //主函數

{

srand( (unsigned)time(0) );

number=readfile();

rule();

rool=registe();

game();

}

C語言猜拳小遊戲程序求助

#include stdio.h

#include stdlib.h

#include time.h

int get_int(void); //規範輸入的函數

int game(int y,int x); //遊戲函數

int result(int m,int n); //比較最終結果的函數

int main()

{

int x,y,m,n;

int k = 0;

char q;

printf(“1代表石頭;2代表剪刀;3代表布;\n”);

printf(“請輸入您的選擇.\n”);

while(k3)

{

scanf(“%d”, y);

k++;

game(y,x);

}

result(m,n);

system(“pause”);

return 0;

}

int game(int y,int x)

{

int m = 0; //玩家贏的次數

int n = 0; //電腦贏的次數

srand(time(NULL));

x = rand()%3+1; //取隨機數1~3

if(y==1x==3)

{

printf(“你出石頭\n”);

printf(“電腦出布\n”);

printf(“你輸了\n”);

++n; //電腦贏的次數

}

else if(y==1x==1)

{

printf(“大家都出石頭,平局\n”);

++m;

++n;

}

else if(y==1x==2)

{

printf(“你出石頭\n”);

printf(“電腦出剪刀\n”);

printf(“你贏了\n”);

++m; //玩家贏的次數

}

if(y==2x==1)

{

printf(“你出剪刀\n”);

printf(“電腦出石頭\n”);

printf(“你輸了\n”);

++n;

}

else if(y==2x==2)

{

printf(“大家都出剪刀,平局\n”);

++m;

++n;

}

else if(y==2x==3)

{

printf(“你出剪刀\n”);

printf(“電腦出布\n”);

printf(“你贏了\n”);

++m;

}

if(y==3x==1)

{

printf(“你出布\n”);

printf(“電腦石頭\n”);

printf(“你贏了\n”);

++m;

}

else if(y==3x==2)

{

printf(“你出石頭\n”);

printf(“電腦出剪刀\n”);

printf(“你輸了\n”);

++n;

}

else if(y==3x==3)

{

printf(“大家都出布,平局\n”);

++m;

++n;

}

return m,n; //返回m,n的值

}

int result(int m,int n) //比較最終結果

{

if(mn)

printf(“3局%d勝,你輸了.\n”,m);

else if(mn)

printf(“3局%d勝,你贏了.\n”,m);

else if(m==n)

printf(“一勝一負一平局,旗鼓相當。\n”);

return 0;

}//改好了,直接比較三次出結果就行了呀!最後暫停查看下system(“pause”);

c語言問題 猜拳遊戲

整體還是很好的。

問題在這裡:

“scanf(“%c,%C”,player1,player2); ”這一句,第二個%c大寫了,改一下。

scanf的實質是將鍵盤輸入字符存入聲明字符變量時開闢的一段存儲區域。第一局運行正常,而第二局往後你只是單純的想覆蓋輸入,這是不可以的——因為你在上一次使用scanf後沒有清空輸入緩存, 這樣再次使用scanf的時候函數就會認為你已經輸入過了。

改進只需要在scanf之前加上fflush(stdin)清空輸入緩存。

如圖:

希望幫上忙。

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-hant/n/307433.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-02 18:06
下一篇 2025-01-02 18:06

相關推薦

  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python程序文件的拓展

    Python是一門功能豐富、易於學習、可讀性高的編程語言。Python程序文件通常以.py為文件拓展名,被廣泛應用於各種領域,包括Web開發、機器學習、科學計算等。為了更好地發揮P…

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

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

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

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

    編程 2025-04-29
  • Python購物車程序

    Python購物車程序是一款基於Python編程語言開發的程序,可以實現購物車的相關功能,包括商品的添加、購買、刪除、統計等。 一、添加商品 添加商品是購物車程序的基礎功能之一,用…

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

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

    編程 2025-04-29
  • 爬蟲是一種程序

    爬蟲是一種程序,用於自動獲取互聯網上的信息。本文將從如下多個方面對爬蟲的意義、運行方式、應用場景和技術要點等進行詳細的闡述。 一、爬蟲的意義 1、獲取信息:爬蟲可以自動獲取互聯網上…

    編程 2025-04-29
  • Vb運行程序的三種方法

    VB是一種非常實用的編程工具,它可以被用於開發各種不同的應用程序,從簡單的計算器到更複雜的商業軟件。在VB中,有許多不同的方法可以運行程序,包括編譯器、發布程序以及命令行。在本文中…

    編程 2025-04-29
  • Python一元二次方程求解程序

    本文將詳細闡述Python一元二次方程求解程序的相關知識,為讀者提供全面的程序設計思路和操作方法。 一、方程求解 首先,我們需要了解一元二次方程的求解方法。一元二次方程可以寫作: …

    編程 2025-04-29

發表回復

登錄後才能評論