扑克牌单机游戏游戏规则:1、点击重新开始游戏,系统将5张扑克牌随机

JavaScript019

扑克牌单机游戏游戏规则:1、点击重新开始游戏,系统将5张扑克牌随机,第1张

MHOL其实这一路,真的一点都不枯燥,可能确实是因为真爱。除了和朋友组队,以及单刷材料,平时能匹配的我都尽量匹配,以前玩掌机主机的时候无法或很难联机的痛苦让我非常珍惜和猎友一起狩猎的感觉。

定义一个结构类型表示一张牌,结构包含3个成员,第一个成员char:取值2,3~K,A表示牌名字,第二个成员int:取值2~14表示牌真实大小。第三个成员:结构链表指针。写一个初始化函数,定义52大小的结构数组,成员值初值分别和牌对应,遍历数组并将每个元素的链表指针依次指向下一个元素地址。这样得到一个初始链表。(相当于一盒新牌)所有涉及随机数都用rand函数,洗牌分四份就是循环取随机数m=1~n,n是随循环自减,初值52,直到n变成0。每随一次循环就从初始链表中遍历取出对应第m个节点,并从初始链表中将这个节点断开(既前一个节点指针直接指向后一个节点指针)。每取13张就组成一个新的链表。这样获得4个新链表分别表示4个玩家。最后出牌就是分别遍历自己的链表,利用循环取牌比较结构数值大小。(取出的牌要从链表断开和上面一样,你把取出节点写成独立函数就能反复使用)。

#include<iostream>

#include<string>

using namespace std

struct puke

{

string str

puke *next

}

struct puke* creat(void)

{

int i

struct puke *head,*p,*q

p=new puke

head=p

q=p

cin>>p->str

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

{

q=p

p=new puke

cin>>p->str

q->next=p

}

q=q->next

q->next=NULL

return head

}

struct puke* last(struct puke*head)

{

while(head->next!=NULL)

{

head=head->next

}

return head

}

/*void display(struct puke *head)

{

while(head!=NULL)

{

cout<<head->str

head=head->next

}

} */

int main()

{

puke *head1,*last1,*head2,*last2

puke *p1,*p2,*q1,*q2

int i,j=0,k=0,n=0,m

bool flag

head1=creat()

head2=creat()

p1=head1

p2=head2

last1=last(head1)

last2=last(head2)

// display(head1)

string str[52]

for(i=0i++)

{

if(i%2==0)

{

str[n]=p1->str

p1=p1->next

flag=0

}

else

{

str[n]=p2->str

p2=p2->next

flag=1

}

m=n

cout<<str[n]<<endl

n++

for(j=0j<mj++)

{

if(str[m]==str[j])

{

k=m

n=j

// cout<<m<<" "<<k<<" "<<n<<" "<<flag<<endl

if(flag==0)

{

for(jj<=kj++)

{

last1->next=q1

q1=new puke

q1->str=str[j]

last1=q1

str[j]='0'

}

last1->next=NULL

}

if(flag==1)

{

for(j<=kj++)

{

last2->next=q2

q2=new puke

q2->str=str[j]

last2=q2

str[j]='0'

}

last2->next=NULL

}

continue

}

}

if(p1==NULL||p2==NULL)

{

break

}

}

// cout<<i<<endl

if(p1==NULL)

cout<<"Bob"<<endl

else

cout<<"Alice"<<endl

return 0

}

自己电脑上测试可以。。求采纳。