电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

java實現九宮格游戲

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

本文實例為大家分享了java實現九宮格游戲的具體代碼,供大家參考,具體內容如下

代碼思路:

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

代碼

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);//根據指定字體名稱、樣式和磅值大小,創建一個新 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());//添加監聽器 } 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的隨機數 Rand = new int[8];//隨機數 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];//移動坐標 boolean Move(int x,int y) {//是否可以移動 int [][]Flag = {//四個方向 {-1,0},{0,1},{1,0},{0,-1} }; for(int i=0;i<4;i++) {//判斷四個方向是否可以移動 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) {//有空格,可以移動 move[0]=xi; move[1]=yi; return true; } } return false;//是否不可以運動 } 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 自動生成的方法存根 //((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('可以移動'); 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('不可以移動'); } if(Win()) { int res = JOptionPane.showConfirmDialog(null, 'GameWin', '你贏了,是否繼續', JOptionPane.YES_NO_OPTION); if (res == JOptionPane.YES_OPTION) { new Box(); } else { return; } } } }}public class Play { public static void main(String[] args) { // TODO 自動生成的方法存根 Box b = new Box(); }}

運行結果:

java實現九宮格游戲

java實現九宮格游戲

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 胜为光纤光缆_光纤跳线_单模尾纤_光纤收发器_ODF光纤配线架厂家直销_北京睿创胜为科技有限公司 - 北京睿创胜为科技有限公司 | 多功能三相相位伏安表-变压器短路阻抗测试仪-上海妙定电气 | 对辊破碎机_四辊破碎机_双齿辊破碎机_华盛铭重工 | 工业PH计|工业ph酸度计|在线PH计价格-合肥卓尔仪器仪表有限公司 济南画室培训-美术高考培训-山东艺霖艺术培训画室 | 超声波_清洗机_超声波清洗机专业生产厂家-深圳市好顺超声设备有限公司 | SEO网站优化,关键词排名优化,苏州网站推广-江苏森歌网络 | 双杰天平-国产双杰电子天平-美国双杰-常熟双杰仪器 | 智能型高压核相仪-自动开口闪点测试仪-QJ41A电雷管测试仪|上海妙定 | 标策网-专注公司商业知识服务、助力企业发展 | 不锈钢法兰-碳钢法兰-法兰盘生产加工厂家-[鼎捷峰]-不锈钢法兰-碳钢法兰-法兰盘生产加工厂家-[鼎捷峰] | 酒精检测棒,数显温湿度计,酒安酒精测试仪,酒精检测仪,呼气式酒精检测仪-郑州欧诺仪器有限公司 | 安徽净化板_合肥岩棉板厂家_玻镁板厂家_安徽科艺美洁净科技有限公司 | CXB船用变压器-JCZ系列制动器-HH101船用铜质开关-上海永上船舶电器厂 | 心得体会网_心得体会格式范文模板 | cnc精密加工_数控机械加工_非标平键定制生产厂家_扬州沃佳机械有限公司 | 全自动五线打端沾锡机,全自动裁线剥皮双头沾锡机,全自动尼龙扎带机-东莞市海文能机械设备有限公司 | 咖啡加盟,咖啡店加盟连锁品牌-卡小逗| 食药成分检测_调料配方还原_洗涤剂化学成分分析_饲料_百检信息科技有限公司 | 诺冠气动元件,诺冠电磁阀,海隆防爆阀,norgren气缸-山东锦隆自动化科技有限公司 | 细沙回收机-尾矿干排脱水筛设备-泥石分离机-建筑垃圾分拣机厂家-青州冠诚重工机械有限公司 | 飞扬动力官网-广告公司管理软件,广告公司管理系统,喷绘写真条幅制作管理软件,广告公司ERP系统 | 滑石粉,滑石粉厂家,超细滑石粉-莱州圣凯滑石有限公司 | 德州网站制作 - 网站建设设计 - seo排名优化 -「两山建站」 | 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | 深圳标识制作公司-标识标牌厂家-深圳广告标识制作-玟璟广告-深圳市玟璟广告有限公司 | 美国查特CHART MVE液氮罐_查特杜瓦瓶_制造全球品质液氮罐 | 挖掘机挖斗和铲斗生产厂家选择徐州崛起机械制造有限公司 | 深圳货架厂_仓库货架公司_重型仓储货架_线棒货架批发-深圳市诺普泰仓储设备有限公司 | 气弹簧定制-气动杆-可控气弹簧-不锈钢阻尼器-工业气弹簧-可调节气弹簧厂家-常州巨腾气弹簧供应商 | 风信子发稿-专注为企业提供全球新闻稿发布服务 | 办公室装修_上海办公室设计装修_时尚办公新主张-后街印象 | 氨水-液氨-工业氨水-氨水生产厂家-辽宁顺程化工 | 派克防爆伺服电机品牌|国产防爆伺服电机|高低温伺服电机|杭州摩森机电科技有限公司 | 选矿设备-新型重选设备-金属矿尾矿重选-青州冠诚重工机械有限公司 | 酒水灌装机-白酒灌装机-酒精果酒酱油醋灌装设备_青州惠联灌装机械 | 粉丝机械,粉丝烘干机,粉丝生产线-招远市远东粉丝机械有限公司 | 机制砂选粉机_砂石选粉机厂家-盐城市助成粉磨科技有限公司 | 济南品牌包装设计公司_济南VI标志设计公司_山东锐尚文化传播 | 智能垃圾箱|垃圾房|垃圾分类亭|垃圾分类箱专业生产厂家定做-宿迁市传宇环保设备有限公司 | 10吨无线拉力计-2吨拉力计价格-上海佳宜电子科技有限公司 | 飞歌臭氧发生器厂家_水处理臭氧发生器_十大臭氧消毒机品牌 |