各位可能在初學C語言的時候都有寫過猜拳游戲。但在寫猜拳的函數時,避免不了會使用循環。
當函數被套在一個循環中的時候,你的計分變量可能就會被重置為函數體裡的初始值。那麼怎麼解決這個問題?
其實很簡單,你需要在循環體中加入一個累加變量,從而使得函數體的單循環計分通過main函數裡的循環成為最後的總積分,並且由此來判斷最終你的積分和輸贏。
以下是我寫的部分代碼 ,歡迎指正!
1.函數體部分
int compare(int x,int y){
int j = 0;//函數外的每次循環會使得j的值初始化
if(x<3&&x>0){
if(y-x==0){
printf("此次猜拳兩人打成平手!");
}
if(y-x==1||x-y==1){
if(x>y){
printf("此次猜拳你贏了!加一分!");
j++;
}
else{
printf("此次猜拳電腦贏了!減一分!");
j--;
}
}
if(y-x==2||x-y==2){
if(x>y){
printf("此次猜拳電腦贏了!減一分!");
j--;
}
else{
printf("此次猜拳你贏了!加一分!");
j++;
}
}
}
else{
printf("您輸入錯誤!\n");
}
return j;//返回值在每次主函數循環中會初始化
}
2.main主體
for(i=0;i<5;i++){
printf("\n");
printf("請輸入您的出拳!");
scanf("%d",&x);
y = rand()%3;
printf("電腦出拳為:%d\n",y);
ary[i] = compare(x,y);
sum += ary[i];//用sum變量很容易解決了計分變量的初始化問題
}