為什麼這篇C語言 遊戲 程式碼鄉民發文收入到精華區:因為在C語言 遊戲 程式碼這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者hedy6219 (Hedy)看板C_and_CPP標題[問題] C語言的21點遊戲時間Mon ...
問題(Question):要設計一個21點的遊戲,是要從一副撲克牌中亂數發牌,
並印出數字和花色,但是我現在寫出來的程式只能印出數字,
我不知道要怎麼樣可以亂數完後並印出花色,只知道撲克牌
的四種花色的ASCII代碼分別是3,4,5,6,但不會將它寫進程式
程式碼(Code):(請善用置底文網頁, 記得排版)
#include <stdio.h>
#include <time.h>
#define DEAL fair_deal
int fair_deal(); //用隨機亂數取得一張介於1~13之間的牌
int getCardPoint(int card); //傳回一張牌所代表的點數
char getCardName(int card); //傳入一張牌並回報他的名稱
int main()
{
int card[5]; //玩家的牌
int computer_card[5]; //電腦的牌
int point; //玩家的點數
int cpoint; //電腦的點數
computer_card[0] = DEAL();
cpoint = getCardPoint(computer_card[0]);
printf("莊家收到一張底牌\n");
computer_card[1] = DEAL();
cpoint = cpoint + getCardPoint(computer_card[1]);
printf("莊家收到一張明牌:%c\n",getCardName(computer_card[1]));
card[0] = DEAL();
point = getCardPoint(card[0]);
printf("您收到一張底牌:%c目前總點數為%d\n",getCardName(card[0]),point);
card[1] = DEAL();
point = point + getCardPoint(card[1]);
printf("您收到一張牌:%c目前總點數為%d\n",getCardName(card[1]),point);
}
int fair_deal()
{
return rand()%13+1;
}
char getCardName(int card)
{
switch(card)
{
case 1:
return 'A';
case 10:
return 'T'; //10號牌由於占兩個字元, 故用T表示
case 11:
return 'J';
case 12:
return 'Q';
case 13:
return 'K';
default:
return card+'0';
}
}
int getCardPoint(int card) //傳回一張牌所代表的點數
{
switch(card)
{
case 1:
return 11;
case 11:
return 10;
case 12:
return 10;
case 13:
return 10;
default:
return card;
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.192.110