站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2ME 专题如何把这个小游戏做的修改的更加漂亮????

如何把这个小游戏做的修改的更加漂亮????

摘要: 如何把这个小游戏做的修改的更加漂亮????




import java.util.Random;

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.midlet.MIDlet;

public class rungame extends Canvas implements Runnable{

MIDlet midlet;
int state;
int dir;
int curmenu;
boolean foodlife=true;
boolean snakeLife=true;
Random rx;
int width,height;
Thread t=new Thread(this);
String []menu={"开始游戏","关于游戏","退出游戏"};
final static int STATE_MENU=0;
final static int STATE_START=1;
final static int STATE_ABOUT=2;
final static int STATE_EXIT=3;
final static int STATE_GAMEOVER=4;
Snake snake=new Snake();
int snakeNode=2;
int foodOver=-1;
public rungame(MIDlet midlet)
{
this.midlet=midlet;
state=0;
curmenu=0;
snake.dir=1;
width=getWidth();
height=getHeight();
rx=new Random();
snake.x[0]=60;snake.y[0]=50;
snake.x[1]=50;snake.y[1]=50;
t.start();
}
protected void paint(Graphics g) {
// TODO Auto-generated method stub
switch (state) {
case STATE_MENU:
g.setColor(0);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(0xffff0000);
g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD|Font.STYLE_ITALIC, Font.SIZE_LARGE));
g.drawString("游 戏 菜 单", getWidth()/2-40, getHeight()/3-40, Graphics.TOP|Graphics.LEFT);
for(int i=0;i{
if(i==curmenu){
g.setColor(0xffff0000);
g.setFont(Font.getFont(Font.FACE_SYSTEM,Font.STYLE_BOLD|Font.STYLE_PLAIN,Font.SIZE_LARGE));
g.drawString(menu[i],getWidth()/2-30,getHeight()/3+i*30,Graphics.TOP|Graphics.LEFT);

}
else{
g.setColor(0xff00ff00);
g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD|Font.STYLE_ITALIC, Font.SIZE_LARGE));
g.drawString(menu[i], getWidth()/2-30, getHeight()/3+i*30, Graphics.TOP|Graphics.LEFT);

}
}
repaint();
break;
case STATE_START:
g.setColor(0,150,0);
g.fillRect(0, 0, getWidth(), getHeight());
if(foodOver==1)
{
g.fillRect(Food.x,Food.y,10,10);
foodOver=-1;
}
g.setColor(0xff00ff00);
if(snakeLife)
{

for(int k=0;kg.fillRect(snake.x[k], snake.y[k], 10, 10);

}

}

g.setColor(0xffffff00);
if(foodlife==false)
{

g.fillRect(Food.x, Food.y, 10, 10);
}


break;
//case STATE_COL:

//break;
case STATE_ABOUT:
g.setColor(0);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(0xffff00ff);
g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD|Font.STYLE_ITALIC,Font.SIZE_LARGE));
g.drawString("制作人:软件学院--朱露", getWidth()/2-70, getHeight()/2,
Graphics.TOP | Graphics.LEFT);
g.drawString("返回主菜单", 150, 140, Graphics.TOP | Graphics.RIGHT);
repaint();
break;
case STATE_EXIT:
midlet.notifyDestroyed();
break;
case STATE_GAMEOVER:
g.setColor(0);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(0xff00ff00);
g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_LARGE));
g.drawString("GAME OVER", getWidth()/2-60, getHeight()/2-30, Graphics.TOP|Graphics.LEFT);
break;
default:
break;
}
}
protected void keyPressed(int keycode) {
// TODO Auto-generated method stub
super.keyPressed(keycode);
int ga=getGameAction(keycode);
switch (state) {
case STATE_MENU:
if (ga == Canvas.DOWN) {
curmenu = (curmenu + 1) % 3;
}
if (ga == Canvas.UP) {
if (curmenu == 0)
curmenu = 3;
curmenu = (curmenu - 1) % 3;
}
if (ga == Canvas.FIRE) {
state = curmenu + 1;
}
repaint();
break;
case STATE_START:
if(ga==Canvas.FIRE)
{
state=0;
}
if(ga==Canvas.RIGHT)
{

snake.dir=1;
}
if(ga==Canvas.LEFT)
{

snake.dir=2;
}
if(ga==Canvas.UP)
{

snake.dir=3;
}
if(ga==Canvas.DOWN)
{

snake.dir=4;
}
repaint();
break;

//case STATE_COL:
//if(ga==Canvas.FIRE)
//{
//state=0;
//}
//repaint();
//break;
case STATE_ABOUT:
if(ga==Canvas.FIRE)
{
state=0;
}
repaint();
break;
case STATE_EXIT:
if(ga==Canvas.FIRE)
midlet.notifyDestroyed();
break;
case STATE_GAMEOVER:
if(ga==Canvas.FIRE)
{
state=0;
}
break;
default:
break;
}
}
public void run() {
// TODO Auto-generated method stub
while(true){
if(state==STATE_START)
{
switch (snake.dir) {
case 1:
snake.x[0]+=10;

break;
case 2:
snake.x[0]-=10;

break;
case 3:
snake.y[0]-=10;

break;
case 4:
snake.y[0]+=10;

break;
default:
break;

}
if(foodlife){
Food.x=Math.abs(rx.nextInt())%width-15;
Food.y=Math.abs(rx.nextInt())%height-15;
if(Food.x<0)Food.x=Food.x+10;
if(Food.y<0)Food.y=Food.y+10;
while(Food.x%10!=0)
Food.x++;
while(Food.y%10!=0)
Food.y++;
for(int l=0;lif(Food.x==snake.x[l]&&Food.y==snake.y[l])
{
foodlife=true;
break;
}
}
if((Food.x%10==0)&&(Food.y%10==0))
{
foodlife=false;
}
else{
foodlife=true;
}
repaint();
}

if(snakeLife){

//判断蛇是否吃到食物
if(snake.x[0]==Food.x&&snake.y[0]==Food.y)
{
foodlife=true;
snakeNode++;
foodOver=1;
snake.x[snakeNode]=-20;
snake.y[snakeNode]=-20;
repaint();
}
//判断蛇是否存活
if((snake.x[0]+10)>width||(snake.y[0]+10)>height||snake.x[0]<0|snake.y[0]<0)
{
snakeLife=false;
state=5;
repaint();
}
for(int j=3;j<=snakeNode-1;j++){
if(snake.x[j]==snake.x[0]&&snake.y[j]==snake.y[0]){

state=5;

snakeLife=false;
break;

}
repaint();
}
//计算蛇每节的坐标
for(int i=snakeNode-1;i>0;i--){
snake.x[i]=snake.x[i-1];
snake.y[i]=snake.y[i-1];

repaint();
}
}


repaint();
}

try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}

}
class Food{
public static int x;
public static int y;
}
class Snake{
public static int x[]=new int[40];
public static int y[]=new int[40];
public static int dir;
}



你说的更加漂亮指什么?指画面更华丽漂亮吗??

如果是的话,程序不需要修改的,只要找一个NB的美工就可以了.

以上纯属个人意见.


请问一下,你的javax.microedition软件包在哪里下载的?


楼上你用什么编译器啊?这个软件包你没有吗?


找个好美工


↑返回目录
前一篇: 寻求热心的朋友,互相交流学习
后一篇: 新手求教问题(关于方块上下左右移动)