/*遊戲:撲克牌搓點遊戲
規則:您將隨機抽取其中兩張和電腦進行對抗,
2張牌相加,個位大的勝出,其中對子比單牌大,
若都是對子,對子大的勝出。
您可以根據提示下註,起始資金均為1000元,
當壹方財產小於0時,宣布破產,另壹方勝出。
作者:於吉祥
日期:20090220
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX_M 1000
enum colour
{
HEI = 0,
HONG,
MEI,
FANG,
};
void display(int number , int sign)
{
printf("%s\n","╭——╮");
switch(number)
{
case 0:
printf("%s\n","│0 │");
break;
case 1:
printf("%s\n","│A │");
break;
case 2:
printf("%s\n","│2 │");
break;
case 3:
printf("%s\n","│3 │");
break;
case 4:
printf("%s\n","│4 │");
break;
case 5:
printf("%s\n","│5 │");
break;
case 6:
printf("%s\n","│6 │");
break;
case 7:
printf("%s\n","│7 │");
break;
case 8:
printf("%s\n","│8 │");
break;
case 9:
printf("%s\n","│9 │");
break;
case 10:
printf("%s\n","│10 │");
break;
case 11:
printf("%s\n","│J │");
break;
case 12:
printf("%s\n","│Q │");
break;
case 13:
printf("%s\n","│K │");
break;
default:
printf("error");
break;
}
// printf("%s\n","│ │");
printf("%s","│ ");
switch(sign)
{
case HEI:
printf("%c",06);
break;
case HONG:
printf("%c",03);
break;
case MEI:
printf("%c",05);
break;
case FANG:
printf("%c",04);
break;
default:
break;
}
printf("%s\n"," │");
printf("%s\n","│ │");
printf("%s\n","╰——╯");
}
int compare(int x[] , int y[])
{
int sign,a,b;
if((x[0] == x[1])&&(y[0] == y[1]))
{
if(x[0] == y[0])
sign = 0;
else if(x[0] > y[0])
sign = 1;
else
sign = -1;
}
else if(x[0] == x[1])
sign = 1;
else if(y[0] == y[1])
sign = -1;
else
{
a = (x[0]+x[1])%10;
b = (y[0]+y[1])%10;
if(a == b)
sign = 0;
else if(a > b)
sign = 1;
else
sign = -1;
}
return sign;
}
void main()
{
int i,chip;
int Per[2],Com[2];
int Mon_Per = MAX_M , Mon_Com = MAX_M;
int Colour_Per[2] , Colour_Com[2];
printf("撲克牌搓點遊戲\n");
printf("---------------\n");
system("pause");
while(1)
{
system("cls");
if(Mon_Per <=0)
{
printf("您已身無分文,遊戲退出!");
break;
}
if(Mon_Com <=0)
{
printf("電腦已經被妳贏光了,恭喜妳獲勝!");
break;
}
srand( time(NULL) );
for(i=0;i<2;i++)
{
Per[i] = rand()%13+1;
Colour_Per[i] = rand()%4;
Com[i] = rand()%13+1;
Colour_Com[i] = rand()%4;
}
printf("當前余額:妳(%d),電腦(%d)\n",Mon_Per,Mon_Com);
// printf("牌已經抽取,妳抽到的牌為:%d %d\n",Per[0],Per[1]);
printf("牌已經抽取,妳抽到的牌為:\n");
for(i=0;i<2;i++)
display(Per[i],Colour_Per[i]);
printf("請下註:");
RET: scanf("%d",&chip);
if(chip>500)
{
printf("最大可下註為500,請重新下註!\n");
goto RET;
}
Mon_Per -= chip;
Mon_Com -= chip;
if(Mon_Per < 0)
{
printf("您的余額不足,請重新下註!");
Mon_Per += chip;
Mon_Com += chip;
goto RET;
}
if(Mon_Com < 0)
{
printf("電腦余額不足,請重新下註!");
Mon_Per += chip;
Mon_Com += chip;
goto RET;
}
switch(compare(Per,Com))
{
case 0:
printf("平局!");
Mon_Per += chip;
Mon_Com += chip;
break;
case 1:
printf("妳贏了!");
Mon_Per += 2*chip;
break;
case -1:
printf("電腦贏了!");
Mon_Com += 2*chip;
break;
default:
printf("系統出錯!");
break;
}
// printf("電腦抽到的牌為:%d %d\n",Com[0],Com[1]);
printf("電腦抽到的牌為:\n");
for(i=0;i<2;i++)
display(Com[i],Colour_Com[i]);
system("pause");
}
printf("遊戲結束!");
system("pause");
}