自己绘制
能否给我个完整带步骤的参考
给个斗地主 纸牌 你参考下:
* 程序流程:
* 1、首先定义需要使用的数组、变量等
* 2、用Random.nextInt方法生成随机数,并通过循环判断语句将说得的值进行比较,不重复的记入pai[]
* 3、进行分牌,分配到play_a、play_b、play_c三位玩家手中
*
* 关于牌的大小安排
3 4 5 6 7 8 9 10 J Q K A 2 小王 大王
黑 4 8 12 16 20 24 28 32 36 40 44 48 52 53 54
红 3 7 11 15 19 23 27 31 35 39 43 47 51
梅 2 6 10 14 18 22 26 30 34 38 42 46 50
方 1 5 9 13 17 21 25 29 33 37 41 45 49
*
* 分配原则为:因为已经随机抽取牌,所以直接将pai[]中的
* 0-16分给play_a
* 17-33分给play_b
* 34-50分给play_c
* 51-53为底牌
*
* 4、对每位玩家手上的牌进行大小排序,使用Arrays.sort()可以很方便的对数组进行排序
* 5、进行花色定义,这是一个复杂的手工过程,但是这样可以方便以后操作,然后将花色牌打印出来
* 6、玩家a当地主,将底牌给玩家a,然后将地主的牌打印
* 待续。。。
*
*
* */
import java.util.Random;
import java.util.Arrays;
public class ddz {
public static void main(String args[]){
int pai[] = new int[54]; //用于保存取出来的54个随机数
int play_a[] = new int[17];
int play_b[] = new int[17];
int play_c[] = new int[17]; //存放a,b,c三个玩家的牌
int k=0,m,n=0,paishu=0,qu = 0; // paishu用来表示pai[]数组里面的数的位置
//qu表示随机数每次取出来的数值,k,m,n表示自由变量,根据需要设置的;
Random rnd;
rnd=new Random(System.currentTimeMillis()); //随机数xuan
//随机生成54张不重复的牌
while(paishu<54) //while语句的作用,机选出54个数据,按选出来的顺序依次放在pai[]中
{
qu = Math.abs(rnd.nextInt())%54+1;
for(m = 0; m<=paishu ;m++) //判断机选出来的数值qu是否已经在pai[]中
{
if(pai[m]==qu)
{
n=0;
break;
}
else n= 1;
}
if(n==1) //如果机选出来的数值不在pai[]中,则把qu的值加入到pai[]里面相应的位置
{
pai[paishu]=qu;
paishu++;
}
}
//第二部分,将初始牌分配给每个人
/*关于牌的大小安排
3 4 5 6 7 8 9 10 J Q K A 2 小王 大王
黑 4 8 12 16 20 24 28 32 36 40 44 48 52 53 54
红 3 7 11 15 19 23 27 31 35 39 43 47 51
梅 2 6 10 14 18 22 26 30 34 38 42 46 50
方 1 5 9 13 17 21 25 29 33 37 41 45 49
*/
//把随机牌分给3位玩家
for(k=0,m=0;m<17;k++,m++)
{
play_a[k] = pai[m];
}
for(k=0,m=17;m<34;k++,m++)
{
play_b[k] = pai[m];
}
for(k=0,m=34;m<51;k++,m++)
{
play_c[k] = pai[m];
}
//直接将3人的牌排序
Arrays.sort(play_a);
Arrays.sort(play_b);
Arrays.sort(play_c);
//将牌和花色定义
String flowers[] = new String[55];
flowers[1]= "方"+"3";
flowers[2]= "梅"+"3";
flowers[3]= "红"+"3";
flowers[4]= "黑"+"3";
flowers[5]= "方"+"4";
flowers[6]= "梅"+"4";
flowers[7]= "红"+"4";
flowers[8]= "黑"+"4";
flowers[9]= "方"+"5";
flowers[10]= "梅"+"5";
flowers[11]= "红"+"5";
flowers[12]= "黑"+"5";
flowers[13]= "方"+"6";
flowers[14]= "梅"+"6";
flowers[15]= "红"+"6";
flowers[16]= "黑"+"6";
flowers[17]= "方"+"7";
flowers[18]= "梅"+"7";
flowers[19]= "红"+"7";
flowers[20]= "黑"+"7";
flowers[21]= "方"+"8";
flowers[22]= "梅"+"8";
flowers[23]= "红"+"8";
flowers[24]= "黑"+"8";
flowers[25]= "方"+"9";
flowers[26]= "梅"+"9";
flowers[27]= "红"+"9";
flowers[28]= "黑"+"9";
flowers[29]= "方"+"10";
flowers[30]= "梅"+"10";
flowers[31]= "红"+"10";
flowers[32]= "黑"+"10";
flowers[33]= "方"+"J";
flowers[34]= "梅"+"J";
flowers[35]= "红"+"J";
flowers[36]= "黑"+"J";
flowers[37]= "方"+"Q";
flowers[38]= "梅"+"Q";
flowers[39]= "红"+"Q";
flowers[40]= "黑"+"Q";
flowers[41]= "方"+"K";
flowers[42]= "梅"+"K";
flowers[43]= "红"+"K";
flowers[44]= "黑"+"K";
flowers[45]= "方"+"A";
flowers[46]= "梅"+"A";
flowers[47]= "红"+"A";
flowers[48]= "黑"+"A";
flowers[49]= "方"+"2";
flowers[50]= "梅"+"2";
flowers[51]= "红"+"2";
flowers[52]= "黑"+"2";
flowers[53]= "小王";
flowers[54]= "大王";
flowers[0]= "???";
//将原来的数字牌换成花色牌
String[] play_apai= new String[17];
String[] play_bpai= new String[17];
String[] play_cpai= new String[17];
for(k=0;k<17;k++){
play_apai[k]=flowers[play_a[k]];
play_bpai[k]=flowers[play_b[k]];
play_cpai[k]=flowers[play_c[k]];
}
//将花色牌打印出来
System.out.print(" \n =打印出已经排序且转换牌面的牌=");
System.out.print(" \n 玩家a的牌: ");
for(k=0;k<17;k++) System.out.print( play_apai[k]+" " );
System.out.print(" \n 玩家b的牌: ");
for(k=0;k<17;k++) System.out.print( play_bpai[k]+" " );
System.out.print(" \n 玩家c的牌: ");
for(k=0;k<17;k++) System.out.print( play_cpai[k]+" " );
System.out.print(" \n 打印出底牌: ");
for(k=51;k<54;k++)
System.out.print(flowers[pai[k]]+" ");
System.out.println(" \n \n 玩家a始终为当前玩家,玩家b、c为AI控制,玩家a如果当地主,牌为: ");
//定义地主的牌
String dizhu[]=new String[20];
int dizhushu[]=new int[20];
for(k=0;k<17;k++)
dizhushu[k]=play_a[k];
dizhushu[17]=pai[51];
dizhushu[18]=pai[52];
dizhushu[19]=pai[53];
//排序地主的牌
Arrays.sort(dizhushu);
//转换牌面
for(k=0;k<20;k++)
dizhu[k]=flowers[dizhushu[k]];
//打印地主的牌
System.out.print(" \n 地主的牌: " );
for(k=0;k<20;k++)
System.out.print(dizhu[k]+" ");
}
}
//把随机牌分给3位玩家
for(k=0,m=0;m<17;k++,m++)
{
play_a[k] = pai[m];
}
for(k=0,m=17;m<34;k++,m++)
{
play_b[k] = pai[m];
}
for(k=0,m=34;m<51;k++,m++)
{
play_c[k] = pai[m];
}
这一段代码改成这样会不会好点:
for(k=0;k<17;k++)
{ play_a[k]=pai[k];
play_b[k]=pai[k+17];
play_c[k]=pai[k+34];
}
兄弟能否把整个项目发给我,我没做过这些小游戏。