亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java實(shí)現(xiàn)九宮格游戲

瀏覽:92日期:2022-08-21 16:45:23

本文實(shí)例為大家分享了java實(shí)現(xiàn)九宮格游戲的具體代碼,供大家參考,具體內(nèi)容如下

代碼思路:

創(chuàng)建了一個(gè)九宮格按鈕類(繼承了JButton),定義了一個(gè)九宮格類,先隨機(jī)生成8個(gè)數(shù),用網(wǎng)格排版放入9個(gè)格子,然后在游戲創(chuàng)建了3x3的矩陣用于存儲(chǔ)狀態(tài),再對(duì)每個(gè)按鍵加監(jiān)聽器,當(dāng)按下去時(shí)判斷能否移動(dòng),能移動(dòng)則交換空格和這個(gè)按鈕的名字,每次按下去判斷是否從1-8排布,判斷是否贏。由于隨機(jī)生成的排序,所以沒有考慮到無解的情況。如果要使有解,可以對(duì)于12345678這樣的排列,逆序?qū)?,因此為偶排列,我們對(duì)其中的任意兩個(gè)數(shù)進(jìn)行交換一次,奇偶性對(duì)調(diào),變成奇排列,再交換一次又變成偶排列,因此你可以初始化游戲時(shí),通過對(duì)12345678進(jìn)行偶數(shù)次有效移動(dòng)即可。

代碼

Play.java

package game;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import java.util.LinkedList;import java.util.Random;import javax.swing.*;import java.util.*;class Number extends JButton{//按鍵 Number(int x,int y,String name){ super(name); this.name=name; this.x=x; this.y=y; } private String name; private int x;//所在位置的x private int y;//所在位置的y String GetName() { return name; } int GetX() { return x; } int GetY() { return y; }}//九宮格class Box extends JFrame{/* * 成員變量 */ Number []n;//方塊 int [][]A=new int[3][3];//地圖 Box(){//初始化 super('九宮格'); final int N = 9; setSize(500,500); Container c = getContentPane(); setLayout(new GridLayout(3,3)); n = new Number[N]; Font f=new Font('華文行楷',Font.BOLD,20);//根據(jù)指定字體名稱、樣式和磅值大小,創(chuàng)建一個(gè)新 Font。 Init(); for(int i=0;i<N-1;i++) { n[i]=new Number(i/3,i%3,' '+(Rand[i])); n[i].setBackground(Color.yellow); n[i].setFont(f); c.add(n[i]); n[i].addActionListener(new Change());//添加監(jiān)聽器 } n[N-1]=new Number(2,2,'');//空格 n[N-1].setBackground(Color.yellow); n[N-1].setFont(f); n[N-1].addActionListener(new Change()); c.add(n[N-1]); for(int i=0;i<A.length;i++) { for(int j=0;j<A[i].length;j++) { if(i==2&&j==2) { continue; } A[i][j]=Rand[i*3+j]; } } A[2][2]=0; for(int i=0;i<A.length;i++) { for(int j=0;j<A[i].length;j++) { System.out.print(A[i][j]+' '); } System.out.println(); } setVisible(true); } int []Rand; void Init() {//生成1-8的隨機(jī)數(shù) Rand = new int[8];//隨機(jī)數(shù) Random r = new Random(1); int n; LinkedList<Integer> l = new LinkedList<Integer>(); for(int i=1;i<=8;i++) { n = r.nextInt(8); n=(int)(Math.random()*8); n = n+1; while(l.contains(n)) { n = (int)(Math.random()*8); n = n +1; } l.add(n); } for (int i = 0; i < l.size(); i++) { Rand[i]=l.get(i); System.out.println(Rand[i]); } } int []move=new int[2];//移動(dòng)坐標(biāo) boolean Move(int x,int y) {//是否可以移動(dòng) int [][]Flag = {//四個(gè)方向 {-1,0},{0,1},{1,0},{0,-1} }; for(int i=0;i<4;i++) {//判斷四個(gè)方向是否可以移動(dòng) int xi,yi; xi=x+Flag[i][0]; yi=y+Flag[i][1]; if(xi>=0&&xi<=2&&yi>=0&&yi<=2&&A[xi][yi]==0) {//有空格,可以移動(dòng) move[0]=xi; move[1]=yi; return true; } } return false;//是否不可以運(yùn)動(dòng) } boolean Win() {//是否贏 boolean flag=true; for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { System.out.print(A[i][j]+' '); if(i==2&&j==2) { if(A[i][j]!=0) flag = false; } else{ if((A[i][j]!=i*3+j+1)) flag=false; } } System.out.println(); } if(flag) { System.out.println('你贏了'); } return flag; } class Change implements ActionListener{ @Override public void actionPerformed(ActionEvent e) { // TODO 自動(dòng)生成的方法存根 //((Number)e.getSource()).setText('取消'); int x=((Number)e.getSource()).GetX(); int y=((Number)e.getSource()).GetY(); System.out.print(x+' '+y+'|||'); String s = ((Number)e.getSource()).GetName(); System.out.print(s); if(Move(x,y)) { System.out.println('可以移動(dòng)'); int t = A[x][y]; System.out.print(t); A[x][y]=0; A[move[0]][move[1]]=t; System.out.println(move[0]+' '+move[1]); ((Number)e.getSource()).setText(''); System.out.println(t); n[move[0]*3+move[1]].setText(t+' '); } else { System.out.println('不可以移動(dòng)'); } if(Win()) { int res = JOptionPane.showConfirmDialog(null, 'GameWin', '你贏了,是否繼續(xù)', JOptionPane.YES_NO_OPTION); if (res == JOptionPane.YES_OPTION) { new Box(); } else { return; } } } }}public class Play { public static void main(String[] args) { // TODO 自動(dòng)生成的方法存根 Box b = new Box(); }}

運(yùn)行結(jié)果:

java實(shí)現(xiàn)九宮格游戲

java實(shí)現(xiàn)九宮格游戲

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 伊人影院在线观看视频 | 国产精品夜间视频香蕉 | 男女激情视频国产免费观看 | 国内国外精品一区二区 | 久久精品国产只有精品2020 | 亚洲国产精品久久日 | 一级骚片超级骚在线观看 | 在线永久免费观看的a站视频 | 一级人与动毛片免费播放 | 国产成人亚洲精品乱码在线观看 | 成人在线视频网站 | 一二级黄色片 | 青青青青久久国产片免费精品 | 国产一级一片免费播放 | 一级毛片日韩a欧美 | 精品视频一区二区 | 亚洲欧美日本国产综合在线 | 色欧美在线视频 | www日韩在线 | 精品视频一区二区三区在线播放 | 国产在线视频专区 | 日韩精品一区二区三区免费观看 | 国产成人小视频 | 道日本一本草久 | 97国产精品欧美一区二区三区 | 黄色免费看网站 | 中文国产成人精品久久一 | 国产亚洲欧美日韩在线一区 | 中国在线观看免费的www | 国产精品成人亚洲 | 国产成人精品免费视频大全麻豆 | 婷婷激情丁香 | 亚洲精品一区二区综合 | 在线观看中文字幕2021 | 久99视频| 国产无遮挡裸体免费视频在线观看 | 国产在线观看免费 | 成人免费视频网 | 美国一级毛片片aa久久综合 | 国产精品小黄鸭一区二区三区 | 成人国产片 |