利用方向键来控制一个猪字的移动。
来源:互联网 发布:以下禁止淘宝发布 编辑:程序博客网 时间:2024/05/18 02:43
package 猪吃食;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Image;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import javax.swing.JFrame;public class MainFrame extends JFrame{public MainFrame() {//设置标题this.setTitle("猪吃食物");//设置窗体大小this.setSize(800,600);//定位更居中this.setLocationRelativeTo(null); //下面注释的两行代码也可以用来控制窗体显示的位置// Toolkit tl = Toolkit.getDefaultToolkit();// this.setLocation((tl.getScreenSize().width-800)/2, (tl.getScreenSize().height-600)/2); //添加默认关闭方法this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//不可改变窗体大小this.setResizable(false);//使窗体可见this.setVisible(true);//添加按键监听器 //适配器this.addKeyListener(new KeyAdapter(){//键盘按下public void keyPressed(KeyEvent e)//要实现这个方法,方法里面的keyPressed()方法为自己所定义{MainFrame.this.keyPressed(e);}//释放按键public void keyReleased(KeyEvent e){MainFrame.this.keyReleased(e);}});//启动一个线程 20毫秒重画一次new Thread(){public void run(){while(true){//repaint();//也可以MainFrame.this.repaint();try {Thread.sleep(20);} catch (InterruptedException e) {e.printStackTrace();}}}}.start();//启动}//每隔20毫秒被执行一次private Image bufferImage = null;public void paint(Graphics g)//要实现此方法{if(bufferImage ==null){bufferImage=this.createImage(800,600);}//先拿到图片的画笔Graphics gg = bufferImage.getGraphics();gg.setColor(Color.red);gg.fillRect(0, 0, 800, 600);this.draw(gg);//调用自定义画图方法g.drawImage(bufferImage,0,0,null);}private int pigX=350;private int pigY=250;public void draw(Graphics g){//画四个角的四个坑,猪的槽槽g.setColor(Color.WHITE);//猪槽是白色//g.fillRect(x, y, width, height);g.fillRect(0, 25, 60, 60);g.fillRect(740, 25, 60, 60);g.fillRect(0, 540, 60, 60);g.fillRect(740, 540, 60, 60);//画猪g.setColor(Color.WHITE);//画猪,颜色为白色g.fillOval(pigX, pigY, 50, 50);//猪开始的坐标为(350,250),宽和高为50,即是一个圆g.setColor(Color.BLACK);//圆圈里面为黑色g.setFont(new Font("隶书",Font.BOLD,30));g.drawString("猪", pigX+10, pigY+35);//字 猪在圆圈里面//调用移动move();this.move();}//设置四个布尔变量:上下左右方向键。组合起来有八种方向private boolean isUp = false;private boolean isDown=false;private boolean isLeft=false;private boolean isRight=false;//自定义移动猪的位置private void move(){if(isUp && !isDown && !isLeft && !isRight){//上pigY-=5;}else if(!isUp && isDown && !isLeft & !isRight){//下pigY+=5;}else if(!isUp && !isDown && isLeft && !isRight){//坐pigX-=5;}else if(!isUp && !isDown && !isLeft && isRight){//右,pigX+=5;}else if(isUp && !isDown && isLeft && !isRight){//左上pigX-=5;pigY-=5;}else if(!isUp && isDown && isLeft && !isRight){//左下pigX-=5;pigY+=5;}else if(isUp && !isDown && !isLeft && isRight){//右上pigX+=5;pigY-=5;}else if(!isUp && isDown && !isLeft && isRight){//右下pigX+=5;pigY+=5;}}//按下键时,获取按下的键的值,找出对应的键,然后使其变为真truepublic void keyPressed(KeyEvent e){int keyCode=e.getKeyCode();//获取对应键的值if(keyCode == KeyEvent.VK_UP ||keyCode ==KeyEvent.VK_W){//上isUp=true;}else if(keyCode ==KeyEvent.VK_DOWN || keyCode ==KeyEvent.VK_S){//下isDown=true;}else if(keyCode == KeyEvent.VK_LEFT || keyCode ==KeyEvent.VK_A){//左isLeft=true;}else if(keyCode == KeyEvent.VK_RIGHT || keyCode ==KeyEvent.VK_D){//右isRight=true;}}//释放,释放了那个键就使对应键设为falsepublic void keyReleased(KeyEvent e){int keyCode=e.getKeyCode();//获取对应键的值if(keyCode == KeyEvent.VK_UP || keyCode == KeyEvent.VK_W){isUp = false;}else if(keyCode ==KeyEvent.VK_DOWN || keyCode == KeyEvent.VK_S){isDown=false;}else if(keyCode == KeyEvent.VK_LEFT || keyCode == KeyEvent.VK_A){isLeft=false;}else if(keyCode == KeyEvent.VK_RIGHT || keyCode == KeyEvent.VK_D){isRight=false;}}}
测试类:
package 猪吃食;public class Test {public static void main(String[] args) {new MainFrame();}}
0 0
- 利用方向键来控制一个猪字的移动。
- javascript入门基础小案例-----按键盘的方向键来控制块的移动z注释:
- Jquery通过方向键(左上右下) 来控制表格内输入框的自由移动
- jQuery:用方向键控制层的移动
- jQuery:用方向键控制层的移动
- java用键盘的方向键控制一个图形块推着另一个图形块移动
- 方向键控制移动移动.cpp
- actionscript 3.0方向键控制移动
- GUI 剖析之 键盘方向键控制鼠标移动的实现
- 通过方向键控制球的移动(练习5)
- FLASH人物移动方向键控制源码.
- libgdx实现模拟方向键控制角色移动
- JAVA======利用定时器时间来控制移动的对象
- 利用OnAnimatorove函数控制人物的移动
- 利用PANEL来控制窗体的技巧
- libgdx 学习笔记(三)四个方向键控制物体移动
- Unity 碰撞检测,触发检测,方向键控制物体移动
- LayaAir 使用方向键 控制精灵在格子中移动
- 进制转化
- GitHub for Windows安装失败解决
- Sublime Text 3配置Windows下C/C++编译环境
- 素数求和问题
- 企业信息安全的第一步,内网加密
- 利用方向键来控制一个猪字的移动。
- 静态局部变量求阶乘
- 卡布列克常数
- 国家需协调各应用部门加快提升信息安全保障能力
- EasyUI学习之RSSReader应用的学习笔记(二)
- 牛顿迭代法求方程的根
- #include与import的区别
- How to use on-screen virtual keyboard on Linux
- 判断是否闰年