Java初学之华容道游戏
时间:2022-05-05
本文章向大家介绍Java初学之华容道游戏,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1 package hhuarongdao;
2
3 public class example {
4 public static void main(String args[])
5 {
6 new Hua_Rong_Road();
7 }
8 }
1 package hhuarongdao;
2 import java.awt.*;
3 import javax.swing.*;
4
5 import java.awt.event.*;
6 public class Hua_Rong_Road extends JFrame implements MouseListener,KeyListener,ActionListener
7 {
8 Person [] person = new Person[10]; //person 为自定义的一个变量类型
9 JButton left,right,above,below ;
10 JButton restart = new JButton("重新开始");
11 public Hua_Rong_Road()
12 {
13 init();
14 setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
15 setBounds(100,100,320,500); //设置窗口初始位置以及大小的一个函数
16 setVisible(true); //窗口是否可见
17 validate(); //使用 validate 方法会使容器再次布置其子组件。确保布局有效。
18 }
19 public void init()
20 {
21 setLayout(null);
22 add(restart);
23 restart.addActionListener(this);
24 String name [] = {"曹操","关","张","刘","周","黄","兵","兵","兵","兵"};
25 for(int i=0;i<name.length;i++)
26 {
27 person[i]= new Person(i,name[i]);
28 person[i].addMouseListener(this);
29 person[i].addKeyListener(this);
30 add(person[i]);
31 }
32 person[0].setBounds(104, 54, 100, 100);
33 person[1].setBounds(104,154,100,50);
34 person[2].setBounds(54,154,50,100);
35 person[3].setBounds(204,54,50,100);
36 person[4].setBounds(54,54,50,100);
37 person[5].setBounds(204, 54, 50, 100);
38 person[6].setBounds(54,254,50,50);
39 person[7].setBounds(204,254,50,50);
40 person[8].setBounds(104,204,50,50);
41 person[9].setBounds(154,204,50,50);
42 person[9].requestFocus(); //将焦点放在控件上面
43 left=new JButton();
44 right=new JButton();
45 above=new JButton();
46 below = new JButton();
47 add(left);
48 add(right);
49 add(above);
50 add(below);
51 left.setBounds(49, 49, 5, 260);
52 right.setBounds(254,49,5,260);
53 above.setBounds(49,49,210,5);
54 below.setBounds(49,304,210,5);
55 validate(); //确保布局有效...这条语句不要也不会对程序有太大的影响
56 }
57 public void keyTyped(KeyEvent e){}
58 public void keyReleased(KeyEvent e){}
59 public void keyPressed(KeyEvent e)
60 {
61 Person man= (Person)e.getSource();
62 if(e.getKeyCode()==KeyEvent.VK_DOWN)
63 go(man,below);
64 if(e.getKeyCode()==KeyEvent.VK_UP)
65 go(man,above);
66 if(e.getKeyCode()==KeyEvent.VK_LEFT)
67 go(man,left);
68 if(e.getKeyCode()==KeyEvent.VK_RIGHT)
69 go(man,right);
70 }
71 public void mousePressed(MouseEvent e)
72 {
73 Person man=(Person)e.getSource();
74 int x=-1,y=-1;
75 x=e.getX();
76 y=e.getY();
77 int w=man.getBounds().width;
78 int h=man.getBounds().height;
79 if(y>h/2) go(man,below);
80 if(y<h/2) go(man,above);
81 if(x<w/2) go(man,left);
82 if(x>w/2) go(man,right);
83 }
84 public void mouseReleased(MouseEvent e){}
85 public void mouseEntered(MouseEvent e){}
86 public void mouseExited(MouseEvent e){}
87 public void go(Person man, JButton direction) {
88 // TODO Auto-generated method stub
89 boolean move=true;
90 Rectangle manRect=man.getBounds();
91 int x=man.getBounds().x;
92 int y=man.getBounds().y;
93 if(direction==below) y+=50;
94 else if(direction==above)y-=50;
95 else if(direction==left)x-=50;
96 else if(direction==right)x+=50;
97 manRect.setLocation(x, y);
98 Rectangle directionRect=direction.getBounds();
99 for(int k=0;k<10;k++)
100 {
101 Rectangle personRect=person[k].getBounds();
102 if(manRect.intersects(personRect)&&man.number!=k)
103 move=false;
104 }
105 if(manRect.intersects(directionRect))
106 move=false;
107 if(move==true) man.setLocation(x,y);
108 }
109 @Override
110 public void mouseClicked(MouseEvent e) {
111 // TODO Auto-generated method stub
112
113 }
114 public void actionPerformed(ActionEvent e)
115 {
116 dispose(); //注销
117 new Hua_Rong_Road();
118 }
119
120 }
1 package hhuarongdao;
2 import javax.swing.*;
3 import java.awt.*;
4 import java.awt.event.*;
5 public class Person extends JButton implements FocusListener
6 {
7
8 int number ;
9 Color c= new Color(255,245,170);
10 Font font=new Font("宋体",Font.BOLD,12);
11 Person(int number,String s)
12 {
13 super(s);
14 setBackground(c);
15 setFont(font);
16 this.number=number;
17 c=getBackground();
18 addFocusListener(this);
19 }
20 public void focusGained(FocusEvent e)
21 {
22 setBackground(Color.red);
23 }
24 public void focusLost(FocusEvent e)
25 {
26 setBackground(c);
27 }
28 }
效果图:
- centos 6x系统下源码安装mysql操作记录
- 【3】利用Word模板生成文档的总结
- 【2】快速代码集的由来及概览
- silverlight数据绑定模式TwoWay,OneWay,OneTime的研究
- Silverlight数据绑定/IValueConverter学习笔记
- silverlight:DeepZoom版的图片局部放大效果
- Linq之ToDictionary<TSource, TKey, TElement>的写法
- vs.net的调试小技巧之#define debug(适合新手)
- byte[]数组下标的最大值
- silverlight图片局部放大效果
- 局域网与互联网环境下MTU的快速确定方法
- 【4】通过简化的正则表达式处理字符串
- silverlight中的socket编程注意事项
- socket中的byte消息格式设计
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 最简单入门深度学习
- 持续集成-Jenkins常用插件安装
- 小白学PyTorch | 15 TF2实现一个简单的服装分类任务
- 小白学PyTorch | 16 TF2读取图片的方法
- 小白学PyTorch | 17 TFrec文件的创建与读取
- 小白学PyTorch | 18 TF2构建自定义模型
- 扩展之Tensorflow2.0 | 19 TF2模型的存储与载入
- 扩展之Tensorflow2.0 | 20 TF2的eager模式与求导
- Django JSONField SQL注入漏洞(CVE-2019-14234)分析与影响
- 扩展之Tensorflow2.0 | 21 Keras的API详解(上)卷积、激活、初始化、正则
- 持续代码质量管理-SonarQube-7.3部署
- 攻击Scrapyd爬虫
- 【webpack】从vue-cli 2x 到 3x 迁移与实践
- 前端单元测试那些事
- 前端Nginx那些事