[問題] 請問骰子的問題
看板C_and_CPP (C/C++)作者uranus0206 (vinci)時間15年前 (2011/04/03 11:03)推噓2(2推 0噓 10→)留言12則, 6人參與討論串1/3 (看更多)
Linux 的 C
想要幫擲骰子加入一點互動的功能
當沒有輸贏的時候程式要要求使用者按d執行第二次直骰子
在第二次擲骰子的過程中程式沒有要求使用者執行直骰子的動作而
直接判斷遊戲的輸贏
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
enum Status {CONTINUE, WON, LOST};
int rollDice (void);
int main ()
{
int sum;
int mypoint;
enum Status gameStatus;
srand(time(NULL));
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 ("Your point is %d\n", mypoint);
break;
}
while (gameStatus == CONTINUE) {
sum = rollDice();
if (sum == mypoint) {
gameStatus = WON;
}
else {
if (sum == 7) {
gameStatus = LOST;
}
}
}
if (gameStatus == WON) {
printf("YOU WIN!!\n");
}
else {
printf("YOU LOST!!!\n");
}
return 0;
}
int rollDice (void)
{
char dice;
int dice1;
int dice2;
int dice_sum;
printf("Enter 'd' or to dice:");
scanf("%c", &dice);
if(dice == 'd'){
dice1 = 1 + (rand() % 6);
dice2 = 1 + (rand() % 6);
dice_sum = dice1 + dice2;
printf ("Your sum are %d + %d = %d\n", dice1, dice2, dice_sum);
}
return dice_sum;
}
這個程式是 C How to program 4e 的fig5.10的程式
它的規則是一次丟兩個骰子,然後加總。
如果總和為7就贏了,如果是2,3,12則判定輸。
如果點數和為4,5,6,8,9,10則遊戲繼續。
當繼續遊戲時,如果丟到的點數和為7就輸了。
然而若第二次的點數和與第一次一樣就贏了。
如果點數沒有與之前一樣的話,就一直丟骰子,直到判定勝負。
由於範例是執行的時候就直接自動丟骰子,所以我想要修改為,在丟骰的
時候要求玩家按個按鍵(我是使用判定有無輸入'd'),但是程式在執行時,
當繼續遊戲,就是還沒有分出勝負時,電腦就直接判定勝負了。
好像有個地方出錯。
請問我要如何修改才能加入小小的互動功能呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.76.74.83
→
04/03 11:52, , 1F
04/03 11:52, 1F
※ 編輯: uranus0206 來自: 211.76.74.83 (04/03 12:01)
→
04/03 12:11, , 2F
04/03 12:11, 2F
→
04/03 12:12, , 3F
04/03 12:12, 3F
推
04/03 14:33, , 4F
04/03 14:33, 4F
推
04/03 14:54, , 5F
04/03 14:54, 5F
→
04/03 14:56, , 6F
04/03 14:56, 6F
→
04/03 14:58, , 7F
04/03 14:58, 7F
→
04/03 15:45, , 8F
04/03 15:45, 8F
→
04/03 15:45, , 9F
04/03 15:45, 9F
→
04/03 15:49, , 10F
04/03 15:49, 10F
→
04/03 16:06, , 11F
04/03 16:06, 11F
→
04/03 16:09, , 12F
04/03 16:09, 12F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章