目录
一、前言
1.斗地主:
1.1运行结果:
2.斗地主升级版
2.1原理:
2.2运行结果:
3.斗牛游戏:
3.1运行结果:
一、前言
练一个斗地主小游戏,只能发看牌
1.斗地主:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class PokerPlay2 {
public static void main(String[] args) {
ArrayList array=new ArrayList();
String []colors={"♣","♥","♠","♦"};
String[] numbers = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
for (String color:colors){
for (String number:numbers){
array.add(color+number);
}
}int count=1;
array.add("大");
array.add("小");
while(true){
System.out.println("第"+count+++"局");
Collections.shuffle(array);
ArrayList poker1=new ArrayList();
ArrayList poker2=new ArrayList();
ArrayList poker3=new ArrayList();
ArrayList poker4=new ArrayList();
for (int i=0;i=array.size()-3){
poker4.add(poker);
}else if(i%3==0){
poker1.add(poker);
}else if(i%3==1){
poker2.add(poker);
}else if(i%3==2){
poker3.add(poker);
}
}
Scanner sc=new Scanner(System.in);
String name1=sc.nextLine();
lookPoker("1", poker1);
lookPoker("2", poker2);
lookPoker("3", poker3);
lookPoker("底牌", poker4);
}}
public static void lookPoker(String name,ArrayList arrayList){
System.out.print(name+"的牌:");
for (String s:arrayList){
System.out.print(" "+s);
}
System.out.println();
}
}
1.1运行结果:
练一个斗地主小游戏,只能发看牌
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class PokerPlay2 {
public static void main(String[] args) {
ArrayList array=new ArrayList();
String []colors={"♣","♥","♠","♦"};
String[] numbers = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
for (String color:colors){
for (String number:numbers){
array.add(color+number);
}
}int count=1;
array.add("大");
array.add("小");
while(true){
System.out.println("第"+count+++"局");
Collections.shuffle(array);
ArrayList poker1=new ArrayList();
ArrayList poker2=new ArrayList();
ArrayList poker3=new ArrayList();
ArrayList poker4=new ArrayList();
for (int i=0;i=array.size()-3){
poker4.add(poker);
}else if(i%3==0){
poker1.add(poker);
}else if(i%3==1){
poker2.add(poker);
}else if(i%3==2){
poker3.add(poker);
}
}
Scanner sc=new Scanner(System.in);
String name1=sc.nextLine();
lookPoker("1", poker1);
lookPoker("2", poker2);
lookPoker("3", poker3);
lookPoker("底牌", poker4);
}}
public static void lookPoker(String name,ArrayList arrayList){
System.out.print(name+"的牌:");
for (String s:arrayList){
System.out.print(" "+s);
}
System.out.println();
}
}
1.1运行结果:
2.斗地主升级版
增加了对牌的排序和地主牌的加入,后续可能会增加玩牌的功能
2.1原理:
斗地主升级版的原理就是,创建HashMap用来后续键找值,然后创建ArrayList
集合(创建其他集合也是可以的)ArrayList集合的作用是用来存储和HashMap
对应的键值,通过两个for进行组合每产生一个就将键值加一,产生不同的键值,
所对应的牌是唯一, 这样为后续排列打下了坚实的前提,然后再创建TreeSet集
合(TreeSet集合可以进行自然排序),然后将ArrayList集合中的元素(其实就是
一些数子,这些数字是HashMap中的键值),分配到三个人上,里面的已经被
TreeSet排序完成,调用方法是通过HashMap将每个人的键值来得到对应的牌。
import java.util.*;
public class PokerPuls {
public static void main(String[] args) {
//定义HashMap集合
HashMap hm=new HashMap();
//定义ArrayList集合用来存储编号
ArrayList array=new ArrayList();
//定义花色和底数数组
String []colors={"♣","♥","♠","♦"};
String[] numbers = { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A","2"};
int index=0;
//注意需要将数字for在外头,否则是按花色排序的
for (String number:numbers){
for (String color:colors){
hm.put(index, color+number);
array.add(index);
index++;
}
}
hm.put(index, "小");
array.add(index);
index++;
hm.put(index, "大");
array.add(index);
int count=1;
while(true){
System.out.println("**********第"+count+++"局斗地主**********");
//洗牌
Collections.shuffle(array);
//创建四个牌位分别用来存储三个玩家和三张底牌,因要排序所以用TreeSet集合
TreeSet play1=new TreeSet();
TreeSet play2=new TreeSet();
TreeSet play3=new TreeSet();
TreeSet play4=new TreeSet();
for (int i=0;i=array.size()-3){
play4.add(index1);
}else if (i%3==0){
play1.add(index1);
}else if (i%3==1){
play2.add(index1);
}else if (i%3==2){
play3.add(index1);
}
}
Scanner sc=new Scanner(System.in);
System.out.print("第一位玩家:");
String name1=sc.nextLine();
System.out.print("第二位玩家:");
String name2=sc.nextLine();
System.out.print("第三位玩家:");
String name3=sc.nextLine();
lookerPoker("1号:"+name1, play1,hm);
lookerPoker("2号:"+name2, play2,hm);
lookerPoker("3号:"+name3, play3,hm );
lookerPoker("底牌", play4,hm);
int i=0; int num=0;
while(true){
System.out.print("几号是地主:");
num=sc.nextInt();
switch(num){
case 1:{i++;
play1.addAll(play4);break;
}
case 2:{i++;
play2.addAll(play4);break;
}
case 3:{i++;
play3.addAll(play4);break;
}
default:{
System.out.println("输入有误,重新输入");break;
}
}
lookerPoker("1号:"+name1, play1,hm);
lookerPoker("2号:"+name2, play2,hm);
lookerPoker("3号:"+name3, play3,hm );
if (i!=0){
break;
}
System.out.println("-------游戏结束-------");
} } }
//定义遍历方法,并通过存储的index1的键来获取对应的值
public static void lookerPoker(String name,TreeSet ts,HashMap hm){
System.out.print(name+"的牌:");
for (Integer key:ts){
String value=hm.get(key);
System.out.print(value+" ");
}
System.out.println();
}
2.2运行结果:
增加了对牌的排序和地主牌的加入,后续可能会增加玩牌的功能
斗地主升级版的原理就是,创建HashMap用来后续键找值,然后创建ArrayList
集合(创建其他集合也是可以的)ArrayList集合的作用是用来存储和HashMap
对应的键值,通过两个for进行组合每产生一个就将键值加一,产生不同的键值,
所对应的牌是唯一, 这样为后续排列打下了坚实的前提,然后再创建TreeSet集
合(TreeSet集合可以进行自然排序),然后将ArrayList集合中的元素(其实就是
一些数子,这些数字是HashMap中的键值),分配到三个人上,里面的已经被
TreeSet排序完成,调用方法是通过HashMap将每个人的键值来得到对应的牌。
import java.util.*;
public class PokerPuls {
public static void main(String[] args) {
//定义HashMap集合
HashMap hm=new HashMap();
//定义ArrayList集合用来存储编号
ArrayList array=new ArrayList();
//定义花色和底数数组
String []colors={"♣","♥","♠","♦"};
String[] numbers = { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A","2"};
int index=0;
//注意需要将数字for在外头,否则是按花色排序的
for (String number:numbers){
for (String color:colors){
hm.put(index, color+number);
array.add(index);
index++;
}
}
hm.put(index, "小");
array.add(index);
index++;
hm.put(index, "大");
array.add(index);
int count=1;
while(true){
System.out.println("**********第"+count+++"局斗地主**********");
//洗牌
Collections.shuffle(array);
//创建四个牌位分别用来存储三个玩家和三张底牌,因要排序所以用TreeSet集合
TreeSet play1=new TreeSet();
TreeSet play2=new TreeSet();
TreeSet play3=new TreeSet();
TreeSet play4=new TreeSet();
for (int i=0;i=array.size()-3){
play4.add(index1);
}else if (i%3==0){
play1.add(index1);
}else if (i%3==1){
play2.add(index1);
}else if (i%3==2){
play3.add(index1);
}
}
Scanner sc=new Scanner(System.in);
System.out.print("第一位玩家:");
String name1=sc.nextLine();
System.out.print("第二位玩家:");
String name2=sc.nextLine();
System.out.print("第三位玩家:");
String name3=sc.nextLine();
lookerPoker("1号:"+name1, play1,hm);
lookerPoker("2号:"+name2, play2,hm);
lookerPoker("3号:"+name3, play3,hm );
lookerPoker("底牌", play4,hm);
int i=0; int num=0;
while(true){
System.out.print("几号是地主:");
num=sc.nextInt();
switch(num){
case 1:{i++;
play1.addAll(play4);break;
}
case 2:{i++;
play2.addAll(play4);break;
}
case 3:{i++;
play3.addAll(play4);break;
}
default:{
System.out.println("输入有误,重新输入");break;
}
}
lookerPoker("1号:"+name1, play1,hm);
lookerPoker("2号:"+name2, play2,hm);
lookerPoker("3号:"+name3, play3,hm );
if (i!=0){
break;
}
System.out.println("-------游戏结束-------");
} } }
//定义遍历方法,并通过存储的index1的键来获取对应的值
public static void lookerPoker(String name,TreeSet ts,HashMap hm){
System.out.print(name+"的牌:");
for (Integer key:ts){
String value=hm.get(key);
System.out.print(value+" ");
}
System.out.println();
}
2.2运行结果:
3.斗牛游戏:
import java.util.*;
public class PokerPlay {
public static void main(String[] args) {
//定义一个ArrayList集合用来存放排盒
//分别用来给玩家和庄家的两副牌
ArrayList array = new ArrayList();
ArrayList array1 = new ArrayList();
//定义花色、点数数组
String[] color = {"♣", "♦", "♠", "♥"};
String[] numbers = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
//封装组合成牌放入集合中
for (String s1 : color) {
for (String s2 : numbers) {
array.add(s1 + s2);
}
}
//定义庄家的牌盒
String[] color1 = {"♣", "♦", "♠", "♥"};
String[] number1 = {"10", "J", "Q", "K",};
for (String s1 : color1) {
for (String s2 : number1) {
array1.add(s1 + s2);
}
}
int count = 1;//定义局数
while (true) {
int sum1 = 0, sum2 = 0, sum3 = 0; int sum4 = 0, sum5 = 0;
//打乱牌的顺序
Collections.shuffle(array);
Collections.shuffle(array1);
//定义五个牌位
ArrayList poker1 = new ArrayList();
ArrayList poker2 = new ArrayList();
ArrayList poker3 = new ArrayList();
ArrayList poker4 = new ArrayList();
ArrayList poker5 = new ArrayList();
// 为了防止玩家崩溃,随机数给庄家无敌牌或普通牌
Random r=new Random();
int 换位=r.nextInt(100);
//给庄家的无敌牌
for (int i=0;i arrayList){
//遍历牌
System.out.print(name + "的牌:");
for (String poker : arrayList) {
System.out.print(" " + poker);
}
System.out.println();
}}
其中 在用random,用if是控制庄家的牌
Random r=new Random();
int 换位=r.nextInt(100);
//给庄家的无敌牌
for (int i=0;i
3.1运行结果:
其中 在用random,用if是控制庄家的牌



