运气游戏 引入enum
一个玩家投掷两个骰子,如果第一次点数之和等于7或11,则玩家获胜,游戏结束。如果点数之和等于2、3或12,则玩家失利,游戏结束。如果第一次投掷点数之和等于4、5、6、8、9或10,则将这个数目作为玩家需要投掷的”点数“。为了获胜,玩家必须继续投掷两个骰子,直至一次点数之和等于这个”点数“,游戏结束。但是如果在此过程中点数之和等于7,则玩家失利,游戏结束。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
enum Status {CONTINUE , WON , LOST};//新的数据类型————enum Status,并且用它来定义一个表示游戏当前状态的变量gameStatus.
int rollDice(void);
int main (void)
{
srand(time(NULL));
int myPoint;
enum Status gameStatus;
int sum = rollDice();
switch( sum ) {
case 7:
case 11:
gameStatus= WON;
break ;
case 2:
case 3:
case 12:
gameStatus = LOST;
break ;
default :
gameStatus = CONTINUE;
myPoint = sum ;
printf("Point is %d\n",myPoint);
break;
}
while ( CONTINUE == gameStatus){
sum = rollDice();
if (sum = myPoint){
gameStatus = WON ;
}
else {
if (7==sum ){
gameStatus =LOST;
}}}
if(WON == gameStatus){
puts("Player wins!");
}
else {
puts("Player loses");
}
}
int rollDice (void)
{
int die1 = 1+rand()%6;
int die2 = 1+rand()%6;
printf("player rolled %d + %d = %d\n",die1,die2,die1 + die2);
return die1 + die2 ;
}
程序中第八行创建了一个程序员自定义的数据类型,即枚举类型。枚举类型用关键字enum来定义,它是 一组用标识符表示的整形常量的集合。枚举类型中的元素被称为枚举常量。注意:给一个已经定义过的枚举常量赋值是一个语法错误!