扑克记牌训练方法

扑克记牌训练方法,第1张

扑克记牌训练方法如下:

步骤一、给扑克牌编码。

(1)四种花色的J、Q、K共12张为“人物牌”,每人按自己的喜好找出相应人物代替。建议黑桃、草花用男性人物,红桃、方片用女性人物,比如说方片J是西施,黑桃Q是刘备……

(2)其余的40张为“数字牌”,用数字编码来代替,规则为:

黑桃代表十位数的1(黑桃的下半部分像“1”)。

红桃代表十位数的2(红桃的上半部分是两个半圆的弧形)。

草花代表十位数的3(草花由三个半圆组成)。

方片代表十位数的4(方片有4个尖角)。

(3)根据数字谐音/形状/个人喜好给每个数字编码,比如说数字10形状能让人想到棒球,我们就给“10”编码“棒球。

步骤二、建立定位系统。

在大脑中建立一套固定的有序的定位系统,在记忆新知识的时候,通过联想和想象,把知识按顺序储存在与其相对应的定位元素上。

步骤三、将编码与地点联系,编成故事。

记忆的时候,在每个地点上放2张牌,把这2张牌代表的图像与地点进行紧密的联结,26个地点刚好放下52张牌(除大小王)。

编故事的时候,第一张必须有动作,第二张牌必须是第一张牌的宾语,回忆的时候,把这26个地点在大脑中过一遍,就能快速地回想起相应的52张牌。

我曾经用c语言写了一个,不过还不够完善,你可以看下。

牌的规则是:由大及小:7 王 5 2 3 A K Q J 10 9 8 6 4 黑桃>梅花>红桃>方块,

/*扑克游戏之七王五二三*/

/*作者:翁家祥*/

/*日期:2005/04/02*/

#include<stdio.h>

#include<string.h>

#include<time.h>

#include<stdlib.h>

struct CARD

{

char suit

char face[10]

int flag/*用来标志牌的大小及是否已出*/

}

typedef struct CARD puke

puke card[54],a[5],b[5]

int point=0,tag=3/*前者标记牌已抽了几张;后者标记出一局后谁大*/

int s1=0,s2=0/*判断输赢*/

void riffle(void)

{

char Suit[4]={"\4\3\5\6"}

char *Face[]={"4","6","8","9","10","Jack","Queen","King","A","3","2","5","7"}

int i,j

puke temp

strcpy(card[53].face,"BigJoke")

card[53].suit=' '

strcpy(card[52].face,"SmallJoke")

card[52].suit=' '

card[52].flag=49

card[53].flag=50

for(i=0i<52i++)

{

card[i].suit=Suit[i%4]

strcpy(card[i].face,Face[i/4])

if(i<48)

card[i].flag=i+1

else

card[i].flag=i+3

}

srand(time(NULL))

for(i=0i<54i++)

{

j=rand()%54

temp=card[i]

card[i]=card[j]

card[j]=temp

}

}

void display(void)

{

int i,j,counter=1

if(point==0)

{

for(i=0i<10i++)

{

if((i%2)==0)

a[i/2]=card[point++]

else

b[(i-1)/2]=card[point++]

}

}

if(point>0)

{

if(tag==0)/*表示playeer大,故先抽牌*/

{

for(j=0j<5&&point<54j++)

if(a[j].flag==0)

a[j]=card[point++]

for(i=0i<5&&point<54i++)

if(b[i].flag==0)

b[i]=card[point++]

}

else if(tag==1) /*表示computer大,故先抽牌*/

{

for(i=0i<5&&point<54i++)

if(b[i].flag==0)

b[i]=card[point++]

for(j=0j<5&&point<54j++)

if(a[j].flag==0)

a[j]=card[point++]

}

}

for(i=0i<5i++)

{

if(a[i].flag==0)

continue

else

{

printf("%c%10s%30d\n",a[i].suit,a[i].face,i+1)

}

}

if(point<11)

printf("The five cards above are yours.\n")

}

int finger_guess(void)

{

char ch

char artificial

int random

int p=0

while (p==0)

{

srand(time(NULL))

printf("Please input one case you want to put:\n(A/a:stoneB/b:clothC/c:forfex)\n")

artificial=getch()

if(artificial!='A'&&artificial!='B'&&artificial!='C'&&artificial!='a'&&artificial!='b'&&artificial!='c')

continue

if(artificial=='A'||artificial=='a')

printf("You put out stone.\n")

if(artificial=='B'||artificial=='b')

printf("You put out cloth.\n")

if(artificial=='C'||artificial=='c')

printf("You put out forfex.\n")

random=rand()%3+1

switch(random)

{

case 1:

printf("I put out stone.\n")

if(artificial=='A'||artificial=='a')

{

printf("Ah,We are the same.\n")

continue

}

if(artificial=='B'||artificial=='b')

{

p=1

return 1

}

if(artificial=='C'||artificial=='c')

{

p=1

return 0

}

case 2:

printf("I put out cloth.\n")

if(artificial=='B'||artificial=='b')

{

printf("Ah,We are the same.\n")

continue

}

if(artificial=='C'||artificial=='c')

{

p=1

return 1

}

if(artificial=='A'||artificial=='a')

{

p=1

return 0

}

case 3:

printf("I put out forfex.\n")

if(artificial=='C'||artificial=='c')

{

printf("Ah,We are the same.\n")

continue

}

if(artificial=='B'||artificial=='b')

{

p=1

return 0

}

if(artificial=='A'||artificial=='a')

{

p=1

return 1

}

}

}

}

void EXIT(void)

{

if(s1==5)

printf("Ha!I have won!")

if(s2==5)

printf("Oh!You are perfect!")

getch()

exit(0)

}

void put_cards(void)

{

int wanna_put,i,j,tag2,guess

int q,p/*标记牌小于牌temp的个数,若p或q等于5,则表示没有*/

int r,s/*分别用来标记玩家和电脑牌还剩多少张*/

puke temp2,temp

if(point<11)

{

guess=finger_guess() /*调用猜拳函数决定谁先出牌*/

if(guess==1)/*如果玩家赢拳,则标记tag=0,表示玩家先出*/

tag2=0

else /*如果电脑赢拳,则标记tag=1,表示电脑先出*/

tag2=1

}

if(tag==3&&tag2==0)

{

while(1)

{

scanf("%d",&wanna_put)

if(a[wanna_put-1].flag==0)

{

printf("Wrong!\nInput again.")

continue

}

else

{

printf(" player: %c%10s\n",a[wanna_put-1].suit,a[wanna_put-1].face)

temp=a[wanna_put-1]

a[wanna_put-1].flag=0

tag2=2/*表示该computer出牌了*/

break

}

}

}

if(tag==3&&tag2==1)

{

for(j=0j<5j++)

if(b[j].flag!=0)

{

temp=b[j]

break

}

for(i=1i<5i++)

if(b[i].flag>0&&temp.flag>b[i].flag)

temp=b[i]

for(j=0j<5j++)

if(temp.flag==b[j].flag)

b[j].flag=0

printf("computer: %c%10s\n",temp.suit,temp.face)

tag2=3/*表示该玩家出牌*/

}

while(tag!=0&&tag!=1)/*即当tag等于3的时候为入口。tag为0时玩家大,为1时电脑大*/

{

if(tag2==2) /*如果是该电脑出牌*/

{

p=0

s=0

for (i=0i<5i++)

{

if((b[i].flag>0)&&(b[i].flag<temp.flag))

{

p++

continue

}

else if(b[i].flag>temp.flag)

{

temp2=temp

temp=b[i]

break

}

}

for(j=0j<5j++)

{

if(b[j].flag!=0)

s++

}

if(p<s)

{

for(j=ij<5j++)

if(b[j].flag>0&&b[j].flag<temp.flag&&b[j].flag>temp2.flag)

temp=b[j]

printf("computer: %c%10s\n",temp.suit,temp.face)

tag2=3 /*表示该玩家出牌*/

for(j=0j<5j++)

if(temp.flag==b[j].flag)

b[j].flag=0

if(point==54)

{

s1=0

for(i=0i<5i++)

if(b[i].flag==0)

s1++/*用来标记电脑是否已经赢牌*/

if(s1==5)

EXIT()/*如果赢牌,则程序结束,跳到末尾*/

}

}

if(p==s) /*表示没有,退出循环*/

{

tag=0

tag2=0

temp.flag=0

printf("The card is so high.I can't put down.\n")

}

}

if(tag2==3)

{

q=0

r=0

for (i=0i<5i++)

{

if((a[i].flag>0)&&(a[i].flag<temp.flag))

q++

}

for(j=0j<5j++)

{

if(a[j].flag!=0)

r++

}

if(q==r)

{

printf("Sorry.The card is so high.You have to give up!\nLet's take new cards.\n")

temp.flag=0

tag=1/*表示电脑这局大*/

tag2=1/*表示下次开牌由电脑先出*/

}

while (q<r)

{

scanf("%d",&wanna_put)

if(wanna_put>6||(wanna_put<6&&a[wanna_put-1].flag<=temp.flag)||a[wanna_put-1].flag==0) /*错误:电脑如果没有,而我又出牌导致temp是前一次的牌。*/

{

printf("Wrong!Input again!")

continue

}

else if(wanna_put==6)

{

tag=1

tag2=1

printf("You give up!\n")

break

}

else

{

temp=a[wanna_put-1]

a[wanna_put-1].flag=0

printf(" player: %c%10s\n",temp.suit,temp.face)

if(point==54)

{

s2=0

for(i=0i<5i++)

if(a[i].flag==0)

s2++

if(s2==5) /*表示玩家已经赢牌*/

EXIT()

}

tag2=2

break

}

}

}

}

}

main()

{

riffle()

while (1)

{

display()

tag=3

put_cards()

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11425895.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存