本文目錄一覽:
- 1、C語言 猜拳遊戲編程
- 2、怎樣用C語言編寫一個猜拳遊戲?
- 3、C語言猜拳小遊戲程序求助
- 4、c語言問題 猜拳遊戲
- 5、c語言 猜拳問題
- 6、求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