【发布时间】:2018-07-15 18:56:53
【问题描述】:
#include <stdio.h>
#include <stdlib.h> //for random()
#include <time.h>
void RockPaperScissors(char usrVal);
main(){
char input;
int i;
for (i = 0; i < 3; ++i){
printf("\nEnter r, p, or s for rock paper scissors: ");
input = getchar();
RockPaperScissors(input);
}
printf("\n\n\nTHE GAME IS OVER\n\n");
}
void RockPaperScissors(char usrVal){
const int rock = 0;
const int paper = 1;
const int scissors = 2;
srand(time(NULL));
int comVal = rand() % 2 + 0;
int usrScore = 0;
int comScore = 0;
int tie = 0;
switch (usrVal){
case 'r':
if (comVal == paper)
printf("\nYOU LOSE!!!\n");
++comScore;
break;
if (comVal == scissors)
printf("\nYOU WIN!!!\n");
++usrScore;
break;
case 'p':
if (comVal == rock)
printf("\nYOU WIN!!!\n");
++usrScore;
break;
if (comVal == scissors)
printf("\nYOU LOSE!!!\n");
++comScore;
break;
case 's':
if (comVal == rock)
printf("\nYOU LOSE!!!\n");
++comScore;
break;
if (comVal == scissors)
printf("\nYOU WIN!!!\n");
++usrScore;
break;
default:
printf("\nTIE\n");
++tie;
printf("\ncomVal: %d usrVal: %c\n", comVal, usrVal);
}
printf("\nscore is user: %d computer: %d Tie: %d \n\n\n\n", usrScore, comScore, tie);
}
// ISSUES: need way to store score count.. need to fix rando()..sometimes printf() is skipped in switch statement
//Need to fix the for loop (it does not ask for input every time)
我已经被这个问题困扰了好几个小时。我浏览了多个论坛,并没有发现任何可以真正解释我的问题的东西。程序将进入循环的一次迭代,然后跳过用户输入。但之后它会要求输入。
输入 r、p 或 s 表示剪刀石头布:r
得分是用户:0 计算机:1 领带:0
输入 r、p 或 s 表示剪刀石头布: 领带
comVal:0 usrVal:
得分是用户:0 计算机:0 领带:1
输入 r、p 或 s 表示剪刀石头布:r
得分是用户:0 计算机:1 领带:0
游戏结束
【问题讨论】:
-
相关...甚至可能是骗人的? :Why doesn't getchar() wait for me to press enter after scanf()?
-
你认为
+ 0会做什么?
标签: c for-loop switch-statement logic