#include "stdioh"
#include "stdlibh"
#include "timeh"
enum {CONTINUE,WON,LOST};
void main()
{
int status=CONTINUE;
int i=0,j=0,add,k;
srand((unsigned)time(NULL));
while(i==0)
i=rand()%6;
printf("1: %d\n",i);
while(j==0)
j=rand()&6;
printf("2: %d\n",j);
add=i+j;
if(add==11 || add==7)
status=WON;
if(add==2 || add==3 || add==12)
status=LOST;
if(status==WON)
printf("You Win!\n");
else if(status==LOST)
printf("YOU LOST!\n");
else
{
for(k=1;k<=7;k++)
{
i=0;
j=0;
printf("%d\n",k);
while(i==0)
i=rand()%6;
printf("1: %d\n",i);
while(j==0)
j=rand()%6;
printf("2: %d\n",j);
if((i+j)==add)
{
status=WON;
break;
}
}
if(status==WON)
printf("YOU WIN!\n");
else
printf("YOU LOST!\n");
}
getch();
}
#include <stdioh>
#include<stdlibh>
#include <timeh>
main()
{
int face; // 储存每次色子的点数
int roll; //投掷色子的次数(循环变量)
int frequency[7] = {0}; //记录色子每个点数出现的次数
srand(time (NULL)); //用系统时间来初始化系统随机数的种子值
//用循环产生100次随机数,并记录每个点数出现的次数
for (roll=1; roll<=100; roll++)
{
face = rand()%6 + 1;
frequency[face]++;
}
printf("%4s%17s\n", "Face", "Frequency");
//输出每个点数出现的次数
for (face=1; face<=6; face++)
{
printf("%4d%17d\n", face, frequency[face]);
}
system("pause");
}
这段代码可以用数学中的复合命题辅助理解,该段代码中的if i<>2 or i<>4 then 可以理解为“或命题”(p or q),在或命题,只要p或者q有一个是真的,那么命题“p or q”就是真命题,要想“p or q”成为假命题,必须p和q都为假才行。再看这段代码:
For i = 0 To 6
If i <> 2 Or i <> 4 Then
Shape2(i)FillColor = &H0&
End If
Next i
在区间[0,6]中,任意一个整数只要满足“ i <> 2 Or i <> 4 ”这个或命题就可以继续执行代码,这样的整数有多少?有7个,0到6都是(把2和4拿出来看,2=2,不满足或命题的一个条件,但是满足另外一个,即2不等于4,同理,4也是如此)。
这段代码的if then 语句部分可以改成i不等于任何整数,比如改成“if i<>1 or i<>5 then”或者“if i<>3 or i<>6 then”等等,这样改动不会影响程序运行。所以我认为这段代码中加入“if then”语句是多余的(加了不会影响程序运行),不如直接写成:
For i = 0 To 6
Shape2(i)FillColor = &H0&
Next i
#include <stdioh>
#include <stdlibh>
#include<timeh>
#define bool int
#define FALSE 0
#define TRUE 1
int roll_dice();
void if_again(int,int);
void new_deal(int,int,int);
bool play_game();
int main()
{
play_game();
return 0;
}
int roll_dice()
{
int a=0,b=0;
srand((unsigned)time(NULL));
a=rand()%6+1;
// printf("\n a is :%d",a);
b=rand()%6+1;
//printf("\n b is :%d\n",b);
return a+b;
}
void if_again(int win,int lose)
{
printf("\nPlay again ");
char ch='a';
scanf("%c",&ch);
if(ch=='y')
{
system("cls");
play_game();
}
if(ch=='n')
{
printf("\nWins: %d\tLosess: %d",win,lose);
return;
}
}
void new_deal(int result,int win,int lose)
{
int once_again;
once_again= roll_dice();
printf("You rolled: %d\n",once_again);
if( once_again==result )
{
printf("You win!\n");
win++;
if_again(win,lose);
}
else
{
once_again=roll_dice();
printf("You rolled: %d\n ",once_again);
if(once_again==7)
{
printf("You lose!\n");
lose++;
if_again(win,lose);
}else
new_deal(result,win,lose);
}
}
bool play_game()
{
int result,win=0,lose=0;
result=roll_dice();
printf("You rolled: %d\n",result);
if(result==7||result==11)
{
printf("You win!");
win++;
if_again(win,lose);
printf("\n");
}
else if(result==2||result==3||result==12)
{
printf("You lose!");
lose++;
if_again(win,lose);
printf("\n");
}
else
{
new_deal(result,win,lose);
}
return 0;
}
class DiceGame
{
private:
// 数据成员:
int numOfWin; // 胜利数次
int numOfLose; // 失败数次
int numOfTie; // 平局数次
// 辅助函数
int RollDice(); // 模拟投掷一次骰子
void Help(); // 获得帮助
void Show(); // 显示统计结果
public:
// 方法声明:
DiceGame(); // 无参数的构造函数
virtual ~DiceGame(){} // 析构函数
void Game(); // 模拟游戏
};
一、实现步骤
1获得游戏帮助功能
void DiceGame::Help() // 获得帮助
{
cout << " 游戏者每次投掷两颗骰子,每个骰子是一个正方体有 " << endl;
cout << " 6面上面分别标有1、2、3、4、5、6个圆点,当骰子停止时 " << endl;
cout << " 将每个骰子朝上的点的数相加,在第一次投掷骰时, 如果 " << endl;
cout << " 所得到的和为7或11,那么游戏者为赢得胜利; 如果所得到 " << endl;
cout << " 的和为2、3或12,那么游戏者为输掉了;如果和为4、5、6 " << endl;
cout << " 、8、9或10,那么为游戏者的点数;如要想赢得胜利,必 " << endl;
cout << " 须继续投掷骰子,直到取得自已的点数为止, 但是如果投 " << endl;
cout << " 掷出的和为7,那么游戏者为输了 "<< endl;
}
2显示游戏数据功能
void DiceGame::Show() // 显示统计结果
{
cout << " 您的最后游戏数据统计:" << endl;
cout << " 获胜 " << numOfWin << " 次" << endl;
cout << " 失败 " << numOfLose << " 次" << endl;
cout << " 平局 " << numOfTie << " 次" << endl << endl ;
cout << "--------------------------------------------------" << endl;
cout << " <<<欢迎您下次再来玩>>> " <<endl;
cout << " <<<再见>>> " << endl;
cout << "--------------------------------------------------" << endl;
}
3模拟游戏功能
void DiceGame::Game() // 模拟游戏
{
int i(0);
int select = 1;
int sum, myPoint;
GameStatus status; // 游戏状态
Rand::SetRandSeed(); // 设置当前时间为随机数种子
Help(); // 获得帮助
while (select != 3)
{
cout << endl << endl << "请选择下面序号:" << endl;
cout << " 1 获得帮助" << endl;
cout << " 2 玩一手游戏"" << endl;
cout << " 3 显示结果" << endl;
cout << " 4 退出游戏" << endl;
cin >> select; // 输入选择
switch (select)
{
case 1: // 获得帮助
Help();
break;
case 4:
exit(1);
break;
case 2:
sum = RollDice(); // 第一次投掷骰子
switch (sum)
{
case 7:
case 11: // 第一次投掷骰子就赢了
status = WIN;
break;
case 2:
case 3:
case 12: // 第一次投掷骰子就输了
status = LOSE;
break;
default: // 记下点数
myPoint = sum;
cout << "点数为 " << myPoint << " " << endl;
status = TIE; // 表示平局
break;
}
while (status == TIE)
{ // 游戏处于平局状态
cout << "游戏现处于平局,是否选择继续投掷取得您的点数";
if (UserSaysYes())
{ // 选择继投掷
sum = RollDice(); // 继续投掷骰子
if (sum == myPoint)
{ // 得到自已想要的点数,赢得胜利
status = WIN;
}
else if (sum == 7)
{ // 投出点数7,输了
status = LOSE;
}
}
else
{ // 选择平局
break;
}
}
switch (status)
{
case WIN: // 选手赢得胜利
cout << " 恭喜您赢得胜利,手气不错哦!!!" << endl;
numOfWin++; // 累加选手获胜次数
i++; // 累加选手连续获胜次数
if (i>=2) // 选手连续赢了两盘以上
cout << " 恭喜您已经连续赢了 " << i << " 盘,再接再厉吧!!!" << endl <<endl;
break;
case LOSE: // 选手输了
cout << " 哦,对不起,您输了,不要灰心,继续加油!!!" << endl;
numOfLose++; // 累加选手失败次数
i=0; // 清除选手连续获胜次数
break;
case TIE: // 平局
cout << " 获得平局,想获得胜利,继续吧!!!" << endl;
numOfTie++; // 累加选手平局次数
break;
}
break;
}
}
Show(); // 显示统计结果
}
#include <stdioh>
#include <timeh>
#include <stdlibh>
int rollDie(void)
{
return rand()%6+1;
}
void drawDic(int pdic,int n)
{
int i,sum=0;
for(i=0;i<n;i++)
{
pdic[i]=rollDie();
}
for(i=0;i<n;i++)
{
printf("----");
}
printf("\n");
for(i=0;i<n;i++)
{
printf("|%d| ",pdic[i]);
sum+=pdic[i];
}
printf("\n");
for(i=0;i<n;i++)
{
printf("----");
}
printf("\nsum=%d\n",sum);
}
int main()
{
int dic[100];
int n=1;
int i;
printf("输入骰子数目:");
scanf("%d",&n);
srand(time(0));
drawDic(dic,n);
return 0;
}
结果:
以上就是关于求掷骰子游戏C语言代码(我初学C,代码简单为佳)全部的内容,包括:求掷骰子游戏C语言代码(我初学C,代码简单为佳)、编写程序c语言 模拟掷骰子游戏100次,编程统计并输出骰子的6个面各自出现的次数。、VB关于程序“掷骰子”的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)