- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
语言:C
情况:我们的教授让我们制作一个剪刀石头布代码,其中包含与主函数不同的函数,还包括一个“switch”语句、“for”循环和一个“if.. .else”语句。
问题:该程序大部分工作,但在退出时无法为记分牌显示正确的金额。它似乎忽略了手头之前的所有内容并默认返回原始定义值“0”
我的 C 代码如下:
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
// Rock
int rock(int comp, int Tie, int Cwon, int Pwon) {
if(comp==1) {
printf("\nTie!\n");
Tie++;
} else if(comp==2) {
printf("\nYou picked Rock, the computer picked Paper.\nPaper covers Rock, the computer wins!\n");
Cwon++;
} else if(comp==3) {
printf("\nYou picked Rock, the computer picked Scissors.\nRock breaks Scissors, you win!\n");
Pwon++;
} else {
printf("Error");
}
return Tie, Cwon, Pwon;
}
// Paper
int paper(int comp, int Tie, int Cwon, int Pwon) {
if(comp==1) {
printf("\nYou picked Paper, the computer picked Rock.\nPaper covers Rock, you win!\n");
Pwon++;
} else if(comp==2) {
printf("\nTie!\n");
Tie++;
} else if(comp==3) {
printf("\nYou picked Paper, the computer picked Scissors.\nScissors cut Paper, the computer wins!\n");
Cwon++;
} else {
printf("Error");
}
return Tie, Cwon, Pwon;
}
// Scissors
int scissors(int comp, int Tie, int Cwon, int Pwon) {
if(comp==1) {
printf("\nYou picked Scissors, the computer picked Rock.\nRock breaks Scissors, the computer wins!\n");
Cwon++;
} else if(comp==2) {
printf("\nYou picked Scissors, the computer picked Paper.\nScissors cut Paper, you win!\n");
Pwon++;
} else if(comp==3) {
printf("\nTie!\n");
Tie++;
} else {
printf("Error");
}
return Tie, Cwon, Pwon;
}
// Score Display
int score(int Pwon, int Cwon, int Tie) {
printf("\nYou won %d times, the computer won %d times and it was a tie %d times.\nThank you for playing!\n", Pwon, Cwon, Tie);
}
// playCases w/ Switch
int playCases(char input, int comp, int Tie, int Cwon, int Pwon, int i) {
switch(input) {
case 'R' :
case 'r' :
rock(comp, Tie, Cwon, Pwon);
break;
case 'P' :
case 'p' :
paper(comp, Tie, Cwon, Pwon);
break;
case 'S' :
case 's' :
scissors(comp, Tie, Cwon, Pwon);
break;
case 'Q' :
case 'q' :
score(Pwon, Cwon, Tie);
i=999;
break;
default :
printf("Error: Invalid choice, try again.");
break;
}
return Tie, Cwon, Pwon;
}
// Flush
void flushScanf(int input) {
char r;
while((r = getchar()) != '\n' && r != EOF);
}
// Main Function
int main(void) {
char input;
int Cwon=0, Pwon=0, Tie=0;
printf("Let's play a game of Rock/Paper/Scissors\n");
//For Loop
for(int i=1; i<999;++i) {
printf("\nEnter the r, p, s, or q (for quit): ");
scanf("%c", &input);
flushScanf(input);
int comp=rand()%3+1;
playCases(input, comp, Tie, Cwon, Pwon, i);
}
return 0;
}
我对编码还是比较陌生,所以如果我的代码看起来一团糟而且没有按应有的方式压缩,我深表歉意。
最佳答案
有几个问题。了解如何通过指针传递变量。如果这样做,您可以修改函数内的值。
int paper(int comp, int Tie, int Cwon, int Pwon) {
替换为:
int paper(int comp, int *Tie, int *Cwon, int *Pwon) {
//...
(*Cwon)++;
//...
}
你不能像这样返回相乘的值:
return Tie, Cwon, Pwon;
正如我提到的,使用指针并在指针被 *
运算符取消引用后修改值。
这是供您考虑的小示例。请注意,num
在函数 scissors 之外不会发生变化。
#include<stdio.h>
void scissors(int num, int *Tie, int *Cwon, int *Pwon) {
num++;
(*Tie)++;
(*Cwon)++;
(*Pwon)++;
}
int main() {
int num = 0;
int Tie = 1;
int Cwon= 2;
int Pwon= 3;
scissors(num, &Tie, &Cwon, &Pwon);
printf("num= %d Tie= %d Cwon= %d Pwon= %d \n", num, Tie, Cwon, Pwon );
scissors(num, &Tie, &Cwon, &Pwon);
printf("num= %d Tie= %d Cwon= %d Pwon= %d \n", num, Tie, Cwon, Pwon );
return 0;
}
输出:
num= 0 Tie= 2 Cwon= 3 Pwon= 4
num= 0 Tie= 3 Cwon= 4 Pwon= 5
关于C - 剪刀石头布计分板问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48996440/
如何让玩家玩随机数量的比赛,然后以全部分数结束游戏? 我正在尝试做一个循环,让玩家玩多场比赛,并在最后询问是否还想玩。 public class RockPaperScissors { pub
我的石头剪刀布游戏遇到问题。当我玩游戏时,它会将胜利或失败记录为胜利和失败。我试图让它记录一场胜利和一场失败,并且不会为胜利和失败添加分数。有什么建议吗? import java.io.*; publ
#RoShamBo import random count=0 while count -2: compnum=random.randint(0,2) usernum=int(inpu
这是我的石头剪刀布游戏。 http://jsfiddle.net/Renay/hL3j5hm6/6/ 如何添加动画,在给出结果之前,图像上下弹跳时有 3,2,1 倒计时。我尝试过添加各种功
我的类(class)本周将举行机器人竞赛,我们应该让我们的机器人战胜其他人的机器人。比赛项目为石头、布、剪刀、炸药、水气球。炸药胜过一切,除了水气球,而水气球只胜过炸药。老师写了竞技场,还有其他一些机
我刚刚开始使用 python,需要一些帮助!我当时在做剪刀石头布游戏,我想在人或计算机赢得 3 场胜利后添加一个重启选项。 我已经四处寻找一些答案,但从我看到的所有其他代码来看,似乎超出了我的范围,或
我正在使用 Python 创建一个非常简单的石头剪刀布游戏,但无法解决这个问题。每次我在命令提示符中输入答案时,它都会输出消息“无效输入,请重试!”,这就是我告诉它在存在无效输入时执行的操作。但是,我
我需要实现一个石头剪刀布锦标赛模拟器,它将玩完所有回合并返回锦标赛。 这是我的锦标赛数组: tournament = [ [ [ ["Armando",
我遇到了一个问题,选择根本没有更新。我已经列出了每次选择后应显示最后结果和当前分数的位置。分数运行良好,但选择根本没有更新。谢谢。 Dynamic Web Squirtle,
我的图片和消息正在更改为显示获胜、失败、平局,但我的 javascript 增量似乎不起作用,因为我的分数没有改变。请帮忙:) Rock, Paper, Scissors Rock
我正在用 C# 制作石头、剪刀、布游戏,目前在有人输入非 R、S 或 P 的输入时尝试显示消息时遇到问题。例如,我正在尝试获取默认值在 switch 语句中工作,但我没有运气。这就是我目前所拥有的。如
我希望代码获取用户在输入字段中输入的值并将其传递给变量 userChoice。我不知道为什么这段代码不起作用,唯一的学习方法就是问你们。 HTML: Choose your destiny !
我正在用 C# 制作石头、剪刀、布游戏,目前在有人输入非 R、S 或 P 的输入时尝试显示消息时遇到问题。例如,我正在尝试获取默认值在 switch 语句中工作,但我没有运气。这就是我目前所拥有的。如
我的类(class)被分配了一个石头剪刀布游戏。以下是作业说明: 学习目标: 练习枚举的使用 创建一个包含构造函数、字段和方法的枚举 设计并实现您自己的 GUI 创建一个可运行的 jar 描述:编写一
我正在用Python创建一个石头剪刀布游戏。我的方法如下。然而,我不想打印玩家 1 和玩家 2,而是想让它们成为真实的名字。因此,可以说 John Wins 或 Joe Wins。如何实现每次打印玩家
我正在尝试完成类里面的石头、剪刀、布作业。 我收到“UnboundLocalError:赋值前引用的局部变量“绑定(bind)”” 错误。 有人可以告诉我为什么会收到此错误吗? import rand
我在 C++ 上学习石头剪刀布游戏时有一个游戏实例类。我想创建整数常量,它表示游戏中允许的符号数。对于经典的 rsp 游戏,它是 3(石头、剪刀和布),但是有一些有趣的 rcs 游戏扩展带有额外的符号
好吧,有件事一直困扰着我,但我一直找不到答案。这是 Codeacademy 的石头剪刀布游戏: var userChoice = prompt("Do you choose rock, paper o
我正在可汗学院编写一个剪刀石头布游戏,这样我就可以看到视觉效果,但是 var Compare = function(choice1, choice2) 无法正常工作。 html 它工作得很好。插入了我
我制作了一个基本的“石头、剪刀、布”游戏。我对这个项目有一些疑问/问题。 在我的浏览器上,不显示谁获胜的消息。如“计算机获胜”。我得到的结果如下: Computer: Paper You: rock
我是一名优秀的程序员,十分优秀!