求掷骰子游戏C语言代码(我初学C,代码简单为佳)

求掷骰子游戏C语言代码(我初学C,代码简单为佳),第1张

#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关于程序“掷骰子”的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9668987.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存