|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 IWANT 于 2012-3-7 21:13 编辑
已知掷骰子游戏的游戏规则为:每个骰子有6面,这些面包含1、2、3、4、5、6个点,投两枚骰子之后,计算点数之和。如果第一次投的点数和为7或11,则游戏者获胜;如果第一次投的点数和为2、3或12,则游戏者输;如果第一次投的点数和为4、5、6、8、9或10,则将这个和作为游戏者获胜需要掷出的点数,继续投骰子,直到赚到该点数时算是游戏者获胜。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define TRUE 1
#define FALSE 0
int roll_dice(void);
int play_game(void);
int main(void)
{
char jude;
do
{
if(play_game()) printf("you win!\n");
else printf("you lose!\n");
printf("play again?(y or n)\n");
scanf("%c",&jude);
}
while(jude=='y'); /*我分步调试时,这个DO-WHILE循环只能循环一次,即我第 一次 输 入 'y'后可以循环一次,接下来就直接显示 “ press any key to continue”*/
return 0;
}
int roll_dice(void) /*此函数是为了得到每次掷的点数*/
{
int num1,num2;
srand((unsigned) time (NULL));
num1= rand() % 6+1;
num2= rand() % 6+1;
return num1+num2;
}
int play_game(void) /*此函数是对掷的的点数进行判断,及进行掷骰子的游戏*/
{
int points,real_points;
points=roll_dice();
printf("you rolled: %d\n",points);
if(points==7||points==11)
return TRUE;
else if(points==2||points==3||points==12)
return FALSE;
else
{
real_points=points;
points=roll_dice();
while((points!=real_points)||(points!=7))
{
points=roll_dice();
printf("you rolled: %d\n",points);
}
if (points==real_points)
return TRUE;
else return FALSE;
}
}
以上是我编写的代码,语法错误没有,应该有很多逻辑错误,因为执行后为死。但我找不出来错误在哪。。。还有,令我极其郁闷的是,在main函数中的那个 do-while,只能进行一次循环,就不知道为什么跳出了,我觉得我写的应该没错的啊。希望诸友能帮我看看这个程序,本人Q,529076144.谢谢
|
|