java me 旋转的X案例

package com.xushouwei.cn;

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class SimpleGameDemo extends MIDlet implements CommandListener{

private Command exitCommand;
private SimpleGameCanvas sg;
public SimpleGameDemo()
{
exitCommand=new Command("Exit",Command.EXIT,1);
sg=new SimpleGameCanvas();
sg.addCommand(exitCommand);
sg.setCommandListener(this);
Display.getDisplay(this).setCurrent(sg);

}

public void commandAction(Command c, Displayable d) {
// TODO Auto-generated method stub
if(c==exitCommand)
{
try {
destroyApp(false);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
notifyDestroyed();
}

}

protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub

}

protected void pauseApp() {
// TODO Auto-generated method stub

}

protected void startApp() throws MIDletStateChangeException {
// TODO Auto-generated method stub

}

}

class SimpleGameCanvas extends GameCanvas implements Runnable
{

//private static boolean suppressKeyEvents;
private boolean mTrucking;
private long mFrameDelay;
private int mX,mY;
private int mState;

public SimpleGameCanvas() {
super(true);
// TODO Auto-generated constructor stub
mX=getWidth()/2;
mY=getHeight()/2;
mState=0;
mFrameDelay=20;
start();
}

public void start()
{
mTrucking=true;
Thread t=new Thread(this);
t.start();
}
public void stop()
{
mTrucking=false;
}

public void run() {
// TODO Auto-generated method stub
Graphics g=getGraphics();
while(mTrucking==true)
{
tick();
input();
render(g);
try {
Thread.sleep(mFrameDelay);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}

}
public void tick()
{
mState=(mState+1)%20;
}

public void input()
{
int keyStates=getKeyStates();
if((keyStates&LEFT_PRESSED)!=0)
{
mX=Math.max(0, mX-1);
}
if((keyStates&RIGHT_PRESSED)!=0)
{
mX=Math.min(getWidth(), mX+1);
}
if((keyStates&UP_PRESSED)!=0)
{
mY=Math.max(0, mY-1);
}
if((keyStates&DOWN_PRESSED)!=0)
{
mY=Math.min(getHeight(), mY+1);
}
}

public void render(Graphics g)
{
g.setColor(0xffffff);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(0x0000ff);
g.drawLine(mX, mY, mX-10+mState, mY-10);
g.drawLine(mX, mY, mX+10, mY-10+mState);
g.drawLine(mX, mY, mX+10-mState, mY+10);
g.drawLine(mX, mY, mX-10, mY+10-mState);
flushGraphics();
}
}

时间: 2024-08-01 21:05:29

java me 旋转的X案例的相关文章

Java指针详解___案例解答

大家先看看下面的这个程序:--------->相信初级程序员就能看得懂 int k1=1; int k2=k1; k2+=8; System.out.println("k1:"+k1); 大声回答,k1等于几? 输出: k1:1 这是为什么呢?不是明明k2已经指向了k1,然后k2的值发生改变,k1就要发生改变吗? 刚开始:k1 ,k2指向同一个内存地址: 当发生语句:k2+=8的时候,我们这么看:k2=k2+8,第一步:k2+8,很简单啊,等于9呗,这时候,内存空间会自动分配一个

java 生产者 与 消费者的案例

主要理解了两个问题 1.线程数据同步的问题 2.线程交替运行的方式 package ThreadDemo; /** * 生产者与消费者的案例(一,同步的问题,值的问题 二,交替执行的问题) * @author lile * 同步的问题(synchronized 知识点) * 交替执行的问题(notify ,wait, 线程等待) */public class ThreadDemo { public static void main(String[] args) { Food food = new

Java利用webservice创建接口案例源码

环境要求: JDK1.7,并配置Java的环境变量 BaseDao  接口: /** * 要使得成为一个可供访问的接口,必须添加:@WebService * */ @WebServicepublic interface BaseDao {    //添加一个加法的接口        @WebResult(name="addddddre")    public int add(@WebParam(name="add01")int a,@WebParam(name=&q

java简单打印金字塔(案例)

学习编程语言,打印简单的金字塔是基础的案例,在这里就简单的写了个案例,希望能帮助到各位 代码 效果 class  kinTa{    public static void main(String[] args) {        Scanner input = new Scanner(System.in);        for(int i = 1; i < 8; i++){   //控制行数            for(int j = 0; j < 8-i;j++){   //每行要打印的

Java基于springMVC的验证码案例

1 ``` 2 Java验证码案例(基于springMVC方式) 3 4 验证码工具类 5 package com.ekyb.common.util; 6 7 import java.awt.Color; 8 import java.awt.Font; 9 import java.awt.Graphics; 10 11 import java.awt.image.BufferedImage; 12 import java.util.ArrayList; 13 import java.util.A

Java自动化测试工具Parasoft Jtest案例分享

Parasoft Jtest是Parasoft旗下的一个可以提高开发团队生产力和软件质量方法的集成解决方案.它着重在用于验证 Java代码和应用程序的方法,并且能够无缝集成Parasoft SOAtest 来确保对当今复杂,分布式应用程序和业务实现端到端功能和压力试. >>下载最新版Parasoft Jtest试用<< 今天给大家分享几个Parasoft Jtest经典测试案例,让大家更深入了解这一测试工具. TransCore静态分析和单元测试案例研究 TransCore需要具有

12 自定义标签/JSTL标签库/web国际化/java web之设计模式和案例

EL应用 自定义一个标签,实现两个字符串的相加 1回顾 1.1servlet生命周期 init(ServletConfig) service(ServletRequest,ServletResponse) destory() 1.2回话技术 cookie:浏览器端 (服务器需要浏览器保存少量的数据) 服务器创建对象:new Cookie(name,value) cookie.setMaxage(秒);  有效时间 cookie.setMaxage(0)  删除cookie cookie.setP

JAVA并发,经典死锁案例-哲学家就餐

转自:http://blog.csdn.net/tayanxunhua/article/details/38691005 死锁经典案例:哲学家就餐. 这个案例会导致死锁. 通过修改<Java编程思想4>一书中的案例,来做实验,代码更易理解,结果也相对容易控制. 附代码: 筷子类: 1 package com.tyxh.ch21.c6; 2 3 public class Chopstick { 4 private boolean taken = false;//判断是此筷子是否被拿起 5 pub

【转】Java 8十个lambda表达式案例

1. 实现Runnable线程案例 使用() -> {} 替代匿名类: //Before Java 8: new Thread(new Runnable() { @Override public void run() { System.out.println("Before Java8 "); } }).start(); //Java 8 way: new Thread( () -> System.out.println("In Java8!") ).s