2016-02-21 55 views
0

我正在做一項任務,需要使用數組來製作類似於戰爭的紙牌遊戲。我有一個自定義函數,用於確定隨機選擇的卡的套件。它首先確定隨機數並將該數字除以13(每套套件52張卡/ 13張卡)。如果結果是從0-1的套件是心,從1-2是鑽石,2-3是俱樂部,3-4是黑桃。C中的紙牌遊戲。數據類型四捨五入給出不正確的結果

問題是我無法讓套件變成黑桃。結果必須四捨五入,以至於它不能從3-4開始。我確信我的數據類型不正確,但我不知道如何解決這個問題。

這是我第一次發佈到這個網站,所以任何建設性的批評在我的問題的格式表示讚賞。

The random number is generated in a previous function and it of pointer type int* r

+0

戰爭是一款紙牌遊戲。最高卡贏得 – Ljbleam

+1

請分享您的代碼,以便有人可以幫助您。 –

+1

舍入?用''suit = card/13'將'int'卡號'0..51'分開。結果0:心,1:鑽石,2:俱樂部,3:黑桃。等級是'卡%13'。 –

回答

1

你,因爲你正試圖通過和INT,這兩者都不具有小數將一個int得到一個小數有這個問題。 * r和13都是整數,因此它們的除法將導致整數。

我會做的反而

carda = *r % 4 

不過,我有很多的麻煩破譯你的線80背後的邏輯是。我想說

int ace = 0, two = 1, three = 2, ....; 

,我會改變你的線78是

int diamond = 0, heart = 1, club = 2, spade = 3; 

在CS我們喜歡從0開始,而不是一個。而我們的電腦呢。這樣Carda會與這些值相符。

此外,如果* r確定訴訟和麪值,我說的改變80將無法正常工作。 * r = 0給出了鑽石王牌,* r = 1給出了王牌,* r = 2給出了俱樂部王牌,* r = 3給出了黑桃王牌,* r = 4給出了兩顆鑽石,* r = 5給人兩顆心,等等。

希望這有助於。祝你好運!