最近灵感贫瘠,于是我只好打开了我的bing,搜一搜"小游戏",看看能不能从中得到灵感。
漫长的寻找过程......
终于,我一眼就相中了 Blackjack 游戏,看起来并不怎么难。于是了解清楚玩法及过程之后,我就打开Dev-c++,开始着手编写简单(低配)版的 Blackjack 游戏。
详细规则如下:
{向n位玩家发有点数的扑克牌,每个玩家尽量尝试让自己手持的扑克牌的点数总和接近但不超过(小于等于)21。数字牌的点数就是它们的牌面值,J、Q、K的点数为10。
计算机为庄家,它与n(1≤n≤10,原版是1≤n≤7,但我怕局限性太大,所以适当地增加了玩家人数)个玩家竞赛。玩家互相可以看到自己和对方的点数以及点数总和,然而计算机(庄家)有一张牌暂时不可见(当然,庄家的点数总和也不可见,否则玩家和庄家自己就能够根据点数总和及现有的扑克牌点数推断出隐藏的牌)。
接下来,每个玩家只要愿意,必须按照1,2,3,...,n的顺序,有且仅有一次机会添加一张有点数的扑克牌(玩家可以根据自己的扑克牌的点数总和与21的相差大小决定添加与否)。若玩家的扑克牌的点数总和超过21,则该玩家失败。
当第n名(最后一名)玩家选择了是否添加新的扑克牌的时候,轮到庄家操作。庄家首先亮出之前那一张隐藏的牌。若庄家的点数总和超过≤16,庄家必须添加新的扑克牌。若庄家之后的点数总和超过21,则之前所有点数总和未超过21的玩家胜利;否则就比较庄家的点数总和以及剩下(未失败)的每位玩家的点数总和。若该玩家的点数总和>庄家的点数总和,则该玩家胜利;若该玩家的点数总和<庄家的点数总和,则该玩家失败;若该玩家的点数总和=庄家的点数总和,则该玩家与庄家打平}
Blackjack 游戏整体如下(若不需要颜色特效及设置运行框标题的功能(windows.h)或者_getch()函数(conio.h)的话可以删去第2,3行的头文件):
#include<bits/stdc++.h>//万能头文件
#include<windows.h>
#include<conio.h>
using namespace std;//命名空间
int main()/*主函数*/{
return 0;
}
Blackjack 游戏所需变量如下:
int n/*前述的玩家数量*/,suffix/*名字后缀,主要是去重操作*/,house/*庄家点数总和*/;
int cards[12]/*玩家牌的数量*/,ranks[12][22]/*玩家牌的点数*/;
char suits[12][22]/*玩家牌的花色*/,hit/*玩家是否添加新牌(y/n)*/;
string names[12]/*玩家名字*/;
bool assed[5][14]/*每张不同的牌是否被分配过(0/1)*/,busted[12]/*玩家失败名单*/;
bool flag/*去重操作是否被标记(0/1)*/,first/*庄家是否要隐藏新牌(0/1)*/,first2/*庄家是否要隐藏点数总和(0/1)*/;
bool ties/*是否平局(0/1)*/;
Blackjack 游戏首先要为每位玩家添加2张新牌,allot(int nameord)函数体如下:
void allot(int nameord/*第nameord