- import java.util.*;
- /*
- 1 2 3
- 4 5 6
- 7 8
-
- 1 2 3
- 4 5 6
- 7 8
- ■■■■■■■ 6 =7*1-1 // 7列,5行
- ■1■2■3■ 13 =7*2-1 8 10 12 0 1 2
- ■4■5■6■ 20 =7*3-1 15 17 19 3 4 5
- ■7■8■ ■ 27 =7*4-1 22 24 26 6 7 8
- ■■■■■■■ 34 =7*5-1
- 用一个数组定义9个位置,通过WASD进行空白的移动。
- */
- class YouXi
- {
- public static void main (String[] args)
- {
- GamePingTu gg=new GamePingTu ();
- gg.run();
- }
- }
- class GamePingTu
- {
- private int [] arr =new int [9];
- private int [] arrV={1,2,3,4,5,6,7,8,0}; //目标数组,如果变化数组与目标数组内值对应都相同则win。
- String str = " "; //将数组输出为0的位置替换为空白。
- boolean xunHuan = true;
- {
- Random r = new Random();
- arr[0]=r.nextInt(9); //先产生第一个随机数,到数组第一位置。
-
- for (int i =1;i<9 ;i++ ) //通过一个for产生随机数。
- {
- do
- {
- arr[i]=r.nextInt(9);
- for (int ii=0;ii<i ;ii++ ) //判断产生随机数如果与前面数相同,则xunHuan=true,进入循环,重新生成数。
- {
- if (arr[i]==arr[ii])
- {
- arr[i]=r.nextInt(9);
- xunHuan=true;
- ii=i;
- }
- else
- xunHuan=false;
- }
- }
- while (xunHuan); //判断产生随机数如果与前面数相同,则xunHuan=true,进入循环,重新生成数。
- }
- defaultPrint();
- }
- public void run() //运行函数
- {
- Scanner in =new Scanner (System.in);
- System.out.println("请输入w,a,s,d(必须小写)按规则游戏。");
- String ss =in.nextLine();
- caseSS(ss);
- while (win())
- {
- ss=in.nextLine();
- caseSS(ss);
- }
- System.out.println("恭喜过关");
- }
- private boolean win()
- //对游戏win的判断:游戏运行数组与目标(V)数组,对应位置数值有任一不相等,返回True,对应位置值都相等,则返回false.
- {
- for (int i=0;i<9 ;i++ )
- {
- if (arr[i]!=arrV[i])
- return true;
- }
- return false;
- }
- private void caseSS(String ss) //对输入的 ss (String类型),进行Switch选择,对应调用动作函数。
- {
- switch (ss)
- {
- case "s":
- upW();
- defaultPrint();
- break;
- case "d":
- leftA();
- defaultPrint();
- break;
- case "w":
- downS();
- defaultPrint();
- break;
- case "a":
- rightD();
- defaultPrint();
- break;
- default:
- defaultPrint();
- break;
- }
- return;
- }
- private void upW() // 值为0对应角标数值的与对应角标正上面数值换位。
- {
- if(arr[0]!=0 && arr[1]!=0 && arr[2]!=0)
- swap(arr,getIndex0(),getIndex0()-3);
-
- return;
-
- }
- private void leftA()
- {
- if(arr[0]!=0 && arr[3]!=0 && arr[6]!=0)
- swap(arr,getIndex0(),getIndex0()-1);
-
- return;
- }
-
- private void downS()
- {
- if(arr[6]!=0 && arr[7]!=0 && arr[8]!=0)
- swap(arr,getIndex0(),getIndex0()+3);
-
- return;
- }
- private void rightD()
- {
- if(arr[2]!=0 && arr[5]!=0 && arr[8]!=0)
- swap(arr,getIndex0(),getIndex0()+1);
-
- return;
- }
- private void setArr(int [] arr,int a,int b )
- {
-
- }
- private int getIndex0()
- {
- for (int i = 0;i<arr.length ;i++ )
- {
- if (arr[i]==0)
- {
- return i;
- }
- }
- return 0;
- }
- private void swap(int [] arr,int a,int b)
- {
- int temp =arr[a] ;
- arr[a]=arr[b];
- arr[b]=temp;
- return;
- }
- //默认输出:
- private void defaultPrint()
- {
- for (int i=0,ii=1,iii=0;i<35 ;i++ ) // 5行,7列 定义到一起0~35
- {
- /* if(arr[iii]==0){
- System.out.print("■"+str);
- i++;
- iii++;}
- else
- { */
- switch (i)
- {
- case 8:
- case 10:
- case 12:
- case 15:
- case 17:
- case 19:
- case 22:
- case 24:
- {
- if (arr[iii]==0)
- System.out.print(str);
- else
- System.out.print(arr[iii]+""+arr[iii]);
- iii++;
- break;
- }
- case 26:
- if (arr[iii]==0)
- System.out.print(str);
- else
- System.out.print(arr[iii]+""+arr[iii]);
- iii=0;
- break;
- default:
- {
- if (i!=(7*ii-1))
- {
- System.out.print("■");
-
- }
- else
- {
- System.out.println("■");
- ii++;
- }
- break;
- }
- }//}
- }
- return;
- }
- }
复制代码
总是喜欢倒腾一点小东西,只是才疏学浅,要黑马发掘自己无限牛X的潜力,我爱编程,我爱黑马,我要做程序猿。
|