我正在用c制作一个简单的游戏,并且在我的功能中传递和接收信息时遇到了麻烦。
我希望代码基本上运行t函数,然后打印得到的分数。然后,除非其中一个分数大于3和2大于另一个分数,我希望它再次运行并打印结果。
现在它正在运行t函数,然后卡住了。
任何帮助或想法都会非常感激,或者如果我遗漏了信息,请发表评论。
#include <stdio.h>
#include <stdlib.h>
void t(int *score1,int *score2)
{
int r,p;
r=rand() % 140;
if(r>30)
{
*score1=score1+1;
}
if(30>r)
{
*score2=score2+1;
}
if(r==30)
{
*score2=score2+1;
}
}
void main(int argc, char *argv[])
{
srand(time(NULL));
int score1 =0;
int score2 =0;
int x =0;
while(x==0)
{
t(&score1, &score2);
printf("%d\n",score1);
printf("%d\n",score2);
if(score1 > 3 && score1==score2+2)
{
printf("Player 1 Wins\n");
x++;
}
if(score2 > 3 && (score2==score1+2))
{
printf("Player 2 Wins\n");
x++;
}
}
return;
}
答案 0 :(得分:1)
说明: 不要在t函数内调用srand(time(NULL))。 srand()根据时间创建一个种子,但是如果你在很短的时间内每次都调用它。见srand() — why call it only once?
代码:
#include <stdio.h>
#include <stdlib.h>
void t(int *score1,int *score2){
int r,p;
r=rand() % 140;
printf("Random r: %d\n",r);
if(r>30){
(*score1)++;
}
else {
(*score2)++;
}
}
void main(int argc, char *argv[]){
int score1 =0;
int score2 =0;
int x =0;
srand(time(NULL));
while(x==0){
t(&score1, &score2);
printf("Score 1: %d\n",score1);
printf("Score 2: %d\n",score2);
if(score1 > 3 && score1==score2+2){
printf("Player 1 Wins\n");
x++;
}
if(score2 > 3 && (score2==score1+2)){
printf("Player 2 Wins\n");
x++;
}
}
return;
}
示例输出:
Random r: 138
Score 1: 1
Score 2: 0
Random r: 2
Score 1: 1
Score 2: 1
Random r: 103
Score 1: 2
Score 2: 1
Random r: 26
Score 1: 2
Score 2: 2
Random r: 20
Score 1: 2
Score 2: 3
Random r: 12
Score 1: 2
Score 2: 4
Player 2 Wins
答案 1 :(得分:0)
这有效:
#include <stdio.h>
#include <stdlib.h>
void t(int *score1,int *score2)
{
int r,p;
r=rand() % 140;
printf("%d\n", r);
if(r>30)
{
*score1+=1; //increase score1 and not pointer of score1
}
else
{
*score2+=1; //increase score2 and not pointer of score2
}
}
void main(int argc, char *argv[])
{
srand(time(NULL));
int score1=0, score2=0;
int x =0;
while(x==0)
{
t(&score1, &score2);
printf("%d ",score1);
printf("%d\n",score2);
if(score1 > 3 && score1==score2+2)
{
printf("Player 1 Wins\n");
x++;
}
if(score2 > 3 && (score2==score1+2))
{
printf("Player 2 Wins\n");
x++;
}
}
return;
}