Mygame

package com.sun.c;

import java.awt.event.KeyListener;

import com.sun.v.MyJpanel;
import com.sun.v.Myjframe; public class Mygame { public Mygame() {
// TODO Auto-generated constructor stub
} public static void main(String[] args) {
// TODO Auto-generated method stub
Myjframe jframe = new Myjframe();
MyJpanel panel = new MyJpanel(); jframe.add(panel);
jframe.addKeyListener(panel);
} }
Myjframe
package com.sun.v;

import javax.swing.JFileChooser;
import javax.swing.JFrame; /*
* 这里采用MVC的设计模式,讲逻辑和页面分开,
*/
public class Myjframe extends JFrame{ public Myjframe(){ this.setTitle("myworld");
this.setVisible(true);
this.setSize(400,400);
this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
} }

MyJpanel

package com.sun.v;

import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener; import javax.swing.JPanel; import com.sun.m.Dog; public class MyJpanel extends JPanel implements KeyListener,Runnable{ public MyJpanel() {
//MyJpanel jp = new MyJpanel();
Thread td = new Thread(this);
td.start();
} Dog dog = new Dog(20,20,2); public void paint(Graphics g){
super.paint(g);
g.draw3DRect(dog.x, dog.y,20 ,20, false);
} @Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub } @Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
//System.out.println("sunzhiyan");
switch (e.getKeyCode()){
case KeyEvent.VK_W:
dog.direct = 0;
dog.move(dog.direct);
break;
case KeyEvent.VK_D:
dog.direct = 1;
dog.move(dog.direct);
break;
case KeyEvent.VK_S:
dog.direct = 2;
dog.move(dog.direct);
break;
case KeyEvent.VK_A:
dog.direct = 3;
dog.move(dog.direct);
break;
} this.repaint();
} @Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub } @Override
public void run() {
// TODO Auto-generated method stub
while(true){
try {
Thread.sleep(1000);
//System.out.println("我被调用了");
dog.direct = 2;
dog.move(dog.direct);
this.repaint();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } } }

Dog


 package com.sun.m;

 public class Dog {
public int x;
public int y;
public int direct ;
public Dog(int x,int y, int direct){
this.x = x;
this.y = y;
this.direct = direct;
}
public void move(int direct){
switch (direct){
case 0:
this.y--;
break;
case 1:
this.x++;
break;
case 2:
this.y++;
break;
case 3:
this.x--;
break;
} }
}


JAVA SE 框架之俄罗斯方块的效果的更多相关文章

  1. Java SE教程

    第0讲 开山篇 读前介绍:本文中如下文本格式是超链接,可以点击跳转 >>超链接<< 我的学习目标:基础要坚如磐石   代码要十份规范   笔记要认真详实 一.java内容介绍 ...

  2. Java Security:Java加密框架(JCA)简要说明

    加密服务总是关联到一个特定的算法或类型,它既提供了密码操作(如Digital Signature或MessageDigest),生成或供应所需的加密材料(Key或Parameters)加密操作,也会以 ...

  3. Java Web开发框架Spring+Hibernate整合效果介绍(附源码)

    最近花了一些时间整合了一个SpringMVC+springAOP+spring security+Hibernate的一套框架,之前只专注于.NET的软件架构设计,并没有接触过Java EE,好在有经 ...

  4. Java集合框架面试题

    www.cnblogs.com/zhxxcq/archive/2012/03/11/2389611.html 这里的两个图很形象,由于放进图片链接,图片显示不了,所以只能给出该链接. Java集合框架 ...

  5. java集合框架之java HashMap代码解析

     java集合框架之java HashMap代码解析 文章Java集合框架综述后,具体集合类的代码,首先以既熟悉又陌生的HashMap开始. 源自http://www.codeceo.com/arti ...

  6. Java SE 6 新特性: 对脚本语言的支持

    2006 年底,Sun 公司发布了 Java Standard Edition 6(Java SE 6)的最终正式版,代号 Mustang(野马).跟 Tiger(Java SE 5)相比,Musta ...

  7. java se 6在solaris的可观察性特征分析

        java平台标准版(java se)6,代码名为"mustang",是最新的java se发行版本(正在开发中).java se 6源码和二进制代码都可以在www.java ...

  8. DynamicMBean(Java SE 6 新特性: JMX 与系统管理)

    Dynamic MBean 是一种在运行时定义其管理接口的 MBean.例如,配置 MBean 可以通过解析 XML 文件来确定它所公开的属性名称和类型. 任何实现 DynamicMBean 接口的类 ...

  9. java fork-join框架应用和分析

    http://shmilyaw-hotmail-com.iteye.com/blog/1897636 java fork-join框架应用和分析 博客分类: concurrency multithre ...

随机推荐

  1. WordPress Quick Paypal Payments插件HTML注入漏洞

    漏洞名称: WordPress Quick Paypal Payments插件HTML注入漏洞 CNNVD编号: CNNVD-201310-491 发布时间: 2013-10-22 更新时间: 201 ...

  2. c++ lambda返回类型自动推导的一些需要注意的地方

    一句话,lambda返回类型自动推导走的是auto,而不是decltype,注意. class ObjectA { public: ObjectA() { val_ = ++g; } ObjectA( ...

  3. Android Loader详解四:回调及完整例子

    onLoadFinished 这个方法是在前面已创建的装载器已经完成其加载过程后被调用.这个方法保证会在应用到装载器上的数据被释放之前被调用.在此方法中,你必须删除所有对旧数据的使用(因为它将很快会被 ...

  4. POJ -- 1151

    Atlantis Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 16222   Accepted: 6172 Descrip ...

  5. OracleParameter 的使用(参数名要以:开头,不允许包含@等特殊字符)[转]

    在使用OracleParameters时,CommandText 中的参数要以":"开头,不能包含@等特殊字符.而在其它地方引用到此参数时可以不必加上":",程 ...

  6. java基础(十六)集合(三)

    这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...

  7. 用 localhost 访问正常,替换成 IP ,部分 CSS 或 JS 就失效了

    这应该是浏览器的兼容性问题. 经测试,只要不是360浏览器的兼容模式,将 localhost 替换成 IP 无影响. 来自为知笔记(Wiz)

  8. equals()和hashCode()区别?

    equals()和hashCode()区别? ------------------------------------------------- equals():反映的是对象或变量具体的值,即两个对 ...

  9. Http 缓存

    常用Http缓存页asp.net 页面上加上 <%@ OutputCache Duration="10" VaryByParam="None" %> ...

  10. SAP ABAP 程序调用FORM

    *&---------------------------------------------------------------------* *& Report ZHAIM_FOR ...