- 浏览: 190218 次
- 性别:
- 来自: 大连
-
文章分类
最新评论
-
wangxd1208:
太感谢了,编译出问题,照着你这方法做了,解决问题了,感谢!
Eclipse 总是在编译的时候卡住 -
1336224635:
問題は解決しました。
有難うございます!hyfkasim 写道 ...
关于windows无法正确加载日语键盘布局的解决办法 -
hyfkasim:
問題は解決しました。有難うございます!
关于windows无法正确加载日语键盘布局的解决办法 -
1336224635:
yjlleilei 写道我操,不行。。。
怎么不行?
eclipse下安装js插件-spket(支持Ext) 能格式化Js(JQuery自动提示) -
yjlleilei:
我操,不行。。。
eclipse下安装js插件-spket(支持Ext) 能格式化Js(JQuery自动提示)
内容介绍:
1.坦克大战游戏图片
2.java绘图坐标体系
3.java绘图技术
4java时间处理机制
5.我的坦克大战游戏(1.0版)
目标:
1)理解java绘图坐标体系
2)掌握java绘图基本技术
3)充分理解java时间处理机制
4)完成坦克大战游戏(1.0版)
用到的知识:
1.java绘图坐标体系
下图说明了java坐标体系,坐标原点位于左上角,以像素为单位,像素是计算机屏幕上最小的显示单位,在java的坐标体系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直放行,距离坐标原点y个像素。
案例:我们画一个圆圈
案例代码:
/**
* 功能:java绘图技术
*
* @author Administrator
*
*/
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Test extends JFrame {
MyPanel mp = null;
public static void main(String[] args) {
Test test = new Test();
}
public Test() {
mp = new MyPanel();
this.add(mp);
this.setSize(400, 300);
this.setLocation(100, 100);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
// 定义一个MyPanel(我自己的面板,是用于绘图和显示的区域)
class MyPanel extends JPanel {
// 覆盖JPanel 的paint放啊
// Graphics是绘图的重要类,你可以把它理解成一只画笔
public void paint(Graphics g) {
// 1.调用父类函数完成初始化任务
// 这句话,不能少
super.paint(g);
// 先画一个圆圈
// g.drawOval(10, 10, 30, 30);
// 画出直线
// g.drawLine(10, 10, 100, 10);//(x1,y1)起点坐标,(x2,y2)终点坐标
// 矩形边框
// g.drawRect(10, 10, 100, 100);// (x1,y1)左上角的坐标,(x2,y2)右下角坐标
// 填充矩形
// 设置矩形颜色
// g.setColor(Color.YELLOW);
// g.fillRect(10, 10, 100, 100);
// 填充椭圆
// g.drawOval(10, 10, 50, 100);
// 在面板上画出图片
// Image im = Toolkit.getDefaultToolkit().getImage(
// Panel.class.getResource("/labixiaoxin.png"));// 图片放在src目录下面
// g.drawImage(im, 80, 80, 200, 150, this);
// // 如何画出字
// g.setColor(Color.blue);
// g.setFont(new Font("隶书",Font.BOLD,30));
// g.drawString("祖国万岁", 100, 100);
// g.draw3DRect(100, 100, 50, 30, true);
// g.drawRect(10, 10, 10, 10);
}
}
绘图原理(1)
Component类提供了两个和绘图相关的最重要的方法:
1)paint(Graphics g)绘制组件的外观
2)repaint()刷新组件的外观
当组件第一次在屏幕上显示的时候,程序会自动的调用paint()方法来绘制组件
绘图原理(2)
在以下情况paint()将会被调用:
1)窗口最小化,再最大化。
2)窗口的大小发生变化。
3)repaint函数被调用
绘图小练习
坦克大战游戏中,我们用到坦克,现在我们就利用java绘图技术来画出一个小坦克,完成我们坦克大战的1.0版本,因为用图片很浪费资源,所以我们还是自己用java画坦克。
开始画坦克:
案例代码:
/**
* 功能:坦克游戏的1.0
* 1.画出坦克
*/
package tankev1;
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class MyTankGame1 extends JFrame {
MyPanel mp = null;
public static void main(String[] args) {
MyTankGame1 myTankGame1 = new MyTankGame1();
}
public MyTankGame1() {
mp = new MyPanel();
this.add(mp);
this.setSize(400, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
// 我的面板
class MyPanel extends JPanel {
// 定义一个我的坦克
Hero hero = null;
// 构造函数
public MyPanel() {
hero = new Hero(10, 10);
}
// 重写paint方法
public void paint(Graphics g) {
super.paint(g);
g.fillRect(0, 0, 400, 300);
this.drawTank(hero.getX(), hero.getY(), g, 0, 0);
}
// 画出坦克的函数
public void drawTank(int x, int y, Graphics g, int direct, int type) {
// 判断坦克类型
switch (type) {
case 0:
g.setColor(Color.CYAN);
break;
case 1:
g.setColor(Color.YELLOW);
break;
}
// 判断方向
switch (direct) {
case 0:
// 画出我的坦克(到时候在封装成一个函数)
// 1.画出左面的矩形
g.fill3DRect(x, y, 5, 30, false);
// 画出右面矩形
g.fill3DRect(x + 15, y, 5, 30, false);
// 3画出中间矩形
g.fill3DRect(x + 5, x + 5, 10, 20, false);
// 4画出圆形
g.fillOval(x + 5, x + 10, 10, 10);
// 画线
g.drawLine(x + 10, x + 15, x + 10, y);
break;
}
}
}
// 坦克类
class Tank {
// 表示坦克横坐标
int x = 0;
// 坦克纵坐标
int y = 0;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public Tank(int x, int y) {
this.x = x;
this.y = y;
}
}
// 我的坦克
class Hero extends Tank {
public Hero(int x, int y) {
super(x, y);
}
}
//-----------------------------------------------------------------------------------------------------------------
java事件处理机制
请大家看一个小程序,怎么样让小球受到键盘的空值,上下左右移动呢?
初步介绍
java事件处理是采用“委派事件模型” ,所谓“委派事件模型”是指当事件发生时,产生事件的对象(即事件源),会把此“信息”传递给“事件的监听者” 处理的一种方式,而这里所说的“信息”,实际上市java.awt.event 事件类库里面的某个类所创建的对象,我们暂时把它称为“事件的对象”。
请大家看一个示意图:
案例:
案例代码:
/**
* 功能:讲解事件处理机制
*/
package demo9;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Test extends JFrame implements ActionListener {
// 定义一个Panel
JPanel jp = null;
JButton jb1 = null;
JButton jb2 = null;
public static void main(String[] args) {
Test test = new Test();
}
public Test() {
jp = new JPanel();
jb1 = new JButton("黑色");
jb2 = new JButton("红色");
this.add(jb1, BorderLayout.NORTH);
jp.setBackground(Color.yellow);
this.add(jp);
this.add(jb2, BorderLayout.SOUTH);
Cat cat = new Cat();
// 注册监听
jb1.addActionListener(this);// this代表当前JFrame监听,也可以写成类的对象来继承
//事件源对象时jb1,事件监听对象时cat
jb1.addActionListener(cat);
// 指定action命令
jb1.setActionCommand("黑色");// 用来区分事件源
jb2.addActionListener(this);
jb2.setActionCommand("红色");
this.setSize(200, 150);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
//对事件处理的方法
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
// 判断是哪个按钮被点击
if (arg0.getActionCommand().equals("黑色")) {
jp.setBackground(Color.BLACK);
} else if (arg0.getActionCommand().equals("红色")) {
jp.setBackground(Color.RED);
}
}
}
class Cat implements ActionListener {
//对事件处理的方法
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getActionCommand().equals("黑色")) {
System.out.println("猫也在监听");
}
}
}
运动的小球案例:
案例代码:
/**
* 功能:加深对事件处理机制的理解
* 1.通过上下左右的光标来控制一个小球的位置
*/
package demo9;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Test2 extends JFrame {
MyPanel mp = null;
public static void main(String[] args) {
Test2 test2 = new Test2();
}
public Test2() {
mp = new MyPanel();
this.add(mp);
// 事件监听
this.addKeyListener(mp);
this.setTitle("运动的小球");
this.setSize(400, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
// 定义自己的面板
class MyPanel extends JPanel implements KeyListener {
int x = 10;
int y = 10;
public void paint(Graphics g) {
super.paint(g);
g.fillOval(x, y, 10, 10);
}
// 键被按下
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
System.out.println("键被按下" + (char) e.getKeyCode());
if (e.getKeyCode() == KeyEvent.VK_DOWN) {
y++;
System.out.println("下");
} else if (e.getKeyCode() == KeyEvent.VK_UP) {
y--;
System.out.println("上");
}else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
x--;
System.out.println("左");
}else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
x++;
System.out.println("右");
}
// 重绘
// 调用repaint()函数
this.repaint();
}
// 键被释放
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
// 键的一个值被输出
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
}
注:一个类要实现监听的步骤
1)实现相应的接口(KeyListener,MouseListener,ActionLister,WindowListener)
2)把接口的处理方法根据需要重新编写(Override)
3) 在事件源注册监听
4)事件传递时靠事件对象传递
//-------------------------------------------------------------------------------------------------------
java事件处理机制深入理解
前面我们提到的几个重要概念
1)事件源2)事件3)事件监听器
我们下面来看全面的介绍他们,因为这几个概念是非常重要的。
1)事件源
事件源是一个产生(或触发)事件的对象,比如前面的JButton的一个对象btn1.当这个事件源对象的某些状态可能会生成多个不同类时,就会产生某种类型的事件(一个事件源可能会生成多个不同类型的事件)。如果某个组件(对象)希望得到事件源产生的事件,就需要在这个事件源上注册,比如前面的案例。
2)事件
事件就是承载事件源状态改变的信息对象。或者说,事件是事件源向事件监听器传输事件源状态的载体。在用户和GUI组件进行交互时就会生成事件,比如当鼠标在面板中移动时,就会生成一个鼠标移动的事件对象,而这个对象保存着当前鼠标在面板中位置信息。java.awt.event包和javax.swing.event包中定义了各种事件类型,常见的有:
正在续写中!!!
- 坦克游戏说明文档.zip (51.2 KB)
- 下载次数: 0
发表评论
-
java实现简单的单点登录
2014-09-04 15:29 847转自:http://www.blogjava.net/ ... -
GUI 复习
2012-07-20 11:19 1154GUI程序开发的步骤: 1.继承JFrame 2.定 ... -
java 泛型
2012-07-20 09:31 1018泛型的基本概念: 泛型是java SE1.5的新 ... -
LinkedList Vector
2012-07-19 14:48 1252LinkedList LinkedList 包含addFi ... -
ArrayList
2012-07-19 13:03 940java集合讲解: import java.io.Bu ... -
java 集合1
2012-07-19 12:12 1426为什么需要集合?(数组定义好了就不能修改了 ) ... -
Hibernate HQL查询
2012-07-09 16:44 844Hibernate HQL查询:Criteri ... -
java序列化的作用
2012-07-09 15:24 822最近在阅读Core J2EE Patterns 的时候发 ... -
Java 输入输出流
2012-07-09 10:19 6981 -
java编程中从键盘输入两个数并求其和,差,积,商
2012-06-07 22:49 12506import java.util.*; publi ... -
线程 Thread
2012-06-07 18:47 887//简单线程的编写 package com.sts.b ... -
深入探讨Iterator模式
2012-06-02 13:52 829java.util包中包含了一系 ... -
java 调用oracle 存储过程
2012-05-15 13:06 1450用java调用:class.forName(\&qu ... -
java 操作json之二 操作google-gson包
2012-05-06 13:58 1380Test2 package com.sun; ... -
java 操作json之一 操作org.json包
2012-05-06 13:29 20313例一。(org.json包) 首先导入org.json下面的 ... -
java socket 传输文件(2)
2012-05-03 16:06 1346发送端: import java.io.Buffere ... -
java socket 传输文件
2012-04-26 17:05 1433客户端: package com.s ... -
java 读写txt文件
2012-04-20 10:20 1490读取: public class ReadFromFile ... -
java 导出excel
2012-03-14 15:17 898public class creatFile { ...
相关推荐
li_3ck_02a_1118
基于MATLAB的牛顿迭代法实现
mellitz_3ck_01_0319
内容概要:文章阐述了银行采用人工智能(AI)技术替代传统系统的紧迫性和收益,讨论了通过构建现代化的数据和技术平台实现效率提升的方法,同时强调实施过程中确保数据质量和建立信任的重要性。文中提及,在金融行业中,若想优化业绩则必须拥抱AI带来的机遇,并为此进行经营模式的革新。根据Workday主办的研讨会内容,PwC金融服务风险与监管领导和Workday金融服务高层指出了大部分银行对AI认知不足的问题,强调AI在金融、人力资源以及IT等领域的广泛应用潜力及具体应用场景,如欺诈检测、技能映射和财务管理方面的作用。并且提到了AI部署过程中可能出现的技术与非技术难题及相应解决办法,鼓励金融机构及时投资建设新型基础设施,以保持竞争力。 适用人群:银行及其他金融机构管理人员;金融科技领域的专业研究人员;对企业数字化和智能化转型感兴趣的商业分析师、投资者;从事信息技术咨询工作的顾问。 使用场景及目标:本文可以帮助金融机构制定合理的技术发展战略规划,评估是否有必要推进AI技术转型,同时也为希望涉足银行科技项目的开发者提供了宝贵的市场洞察,帮助理解行业内普遍存在的困难与潜在的市场需求。此外,对于想要了解银行
matlab程序代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
chromedriver-linux64-136.0.7058.0.zip
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
内容概要:本文档介绍了背压热电联产(CHP)发电厂的详细设计步骤,涵盖确定各状态点的压力、温度、比焓以及质量流率的具体方法。主要内容围绕计算净电功率、燃料消耗及其效率展开,并提供了T-s图绘制的指南。针对每个组件(如蒸汽轮机、冷凝器、除氧器等),都列出了详细的效率假设和压力损失表,为实际工程应用提供了宝贵的参考资料和操作指导。同时,该作业任务要求学生从给定初始值中选择合适的操作条件进行系统模拟,并利用课程讲义和Moodle平台资料完成计算流程。 适用人群:对能源转换和动力设备设计感兴趣的学生或者初涉该领域的工程师。 使用场景及目标:旨在帮助学员深入了解并掌握背压热电联产装置的工作原理和技术指标计算的方法论,通过实践练习提高他们的问题解决能力。 其他说明:文档强调了稳态运行假设的重要性,即物质平衡等于能量输入等于输出的原则,并鼓励参与者借助附录提供的典型操作参数图表来寻找解决问题的方向。此外,它还特别指出对于一些变量值求解可能需要迭代法来进行调整,直至获得稳定结果。提交的报告必须含有一份详细的T-s图和其他必要附件。
机器学习_市财政收入分析(含数据集)
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
tracy_3cd_01_0318
lusted_3cd_01_0918
题目:基于51的自动分拣系统设计 主控:AT89C52 测距模块:超声波测距模块 甲醛传感器(ADC0832+滑动变阻器模拟) 粉尘传感器(PCF8591+滑动变阻器模拟) 净化模块(继电器驱动蓝灯) 排风模块(继电器驱动绿灯) 电源电路(5V降压为3.3V供电) 显示模块(LCD1602) 声光报警 按键(3个,切换阈值选择,阈值加减) 检测物体:开关模拟 电机驱动模块(继电器驱动直流电机转动) 功能: 1.显示屏显示甲醛,粉尘浓度可以切换设置阈值。 2.通过甲醛传感器检测车间环境,大于阈值时声光报警并启动净化模块。 3.通过粉尘传感器检测车间环境,大于阈值时声光报警并启动排风模块。 4.采用超声波传感器进行物体超高监测异常(大于XX距离)时触发声光报警 5.检测到物体(开关闭合)直流电机转动(模拟传送带)
network_server
AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!