一下是一个纸牌发牌游戏。其中函数及其思路皆为个人所写。虽然我不知道别人会不会跟我一样。但是这个我确实是从头到尾独立思考。我的个人准则是,能想出来的,绝不找度娘。
#include<iostream>
#include<stdlib.h>#include<stdio.h>
using namespace std;
int pk[53]={0,
101,201,301,401,
102,202,302,402,
103,203,303,403,
104,204,304,404,
105,205,305,405,
106,206,306,406,
107,207,307,407,
108,208,308,408,
109,209,309,409,
110,210,310,410,
111,211,311,411,
112,212,312,412,
113,213,313,413};
//交换函数
void swap(int& a,int& b)
{
int c;
c=a;
a=b;
b=c;
}
//洗牌
void randa()
{
int a,c,k,i;
for(i=0;i<50;i++)
{
do{
a=rand()%52;
k=rand()%52;
}while(k==a);
swap(pk[a],pk[k]);
}
}
//具体输出
int opk(int i)
{
int a,b;
a=i/100;
b=i%100;
switch(a)
{
case 1:
cout<<"方块";
break;
case 2:
cout<<"梅花";
break;
case 3:
cout<<"红桃";
break;
case 4:
cout<<"黑桃";
break;
}
switch(b)
{
case 10:
cout<<"10";
break;
case 11:
cout<<"J";
break;
case 12:
cout<<"Q";
break;
case 13:
cout<<"K";
break;
case 1:
cout<<"A";
break;
default:
cout<<i%10;
}
cout<<" ";
}
//发牌
int fapai(int k)//k代表第K名玩家
{
int i,j;
int a[13];
for(i=0;i<13;i++)
{
a[i]=pk[k+i*4];
}
//冒泡排序
for(i=0;i<12;i++)
for(j=0;j<13-i-1;j++)
{
if(a[j]>a[j+1])
swap(a[j],a[j+1]);
}
cout<<"第"<<k<<"名玩家的牌为"<<endl;
for(i=0;i<13;i++)
opk(a[i]);
cout<<endl;
return 0;
}
int main()
{
randa();
fapai(1);
fapai(2);
fapai(3);
fapai(4);
return 0;
}