用java小游戏编写入门,高手指教

用java小游戏编写入门,高手指教,第1张

不懂难度就大了。。。

先学java基础知识,学完面向对象再学一个绘图就可以了。

然后学J2ME编程。找个模拟器,初学就用Sun的WTK就行了。

如果过去没有编程基础,那你的数据组织就成了问题。需要多写程序来练习。

/// <summary>

/// 模型层附加数据基类

/// </summary>

[Serializable]

public class ModelBase

{

private Dictionary<string, object> _exData = new Dictionary<string, object>();

public Dictionary<string, object> ExData

{

get { return _exData; }

set { _exData = value; }

}

分情况看:

(1)如果你没用非官方集成的开发环境的话,首先在你电脑上装个JDK,然后设置下电脑环境变量,里面有PATH和CLASSPATH这两个参数,具体怎么设置呢就是把安装目录的地址拷贝到里面就好了,略有不同这两个参数的设置安装完成后,把源代码文件的目录记下,源代码拷贝到记事本上,把后缀名改成"java";打开CMD窗口,先执行"javac 文件名java"命令,在目录下会生成一个"class"的文件,那是编译生成的文件,如果顺利通过编译,说明源代码没错误,OK,你再执行"java 文件名class"就执行程序了

(2)如果你用的是Eclipse或者Jbuilder这类的集成开发环境的话,那太简单了,导入源代码的文件,点工具栏上的快捷图标,是个平放着的三角形,就可以执行了

总之,你只要把JDK装上,调试成功了,剩余的就小意思,如果实在搞不定,把你代码发过来,我给你生成"jar"文件好了,就像"exe"的可执行文件呵呵,说了这么多,自己要多摸索下啊,我是学java的,欢迎交流,希望你能顺利解决,编程要自己多摸索

1、设计游戏,首先就要设计界面。首先看一下我设计的一个界面。界面分为左边的游戏区与右边的控制区。游戏区包含“得分信息”和贪吃蛇的游戏区,右边控制区有“开始”“暂停”“停止”按钮,等级选择单选框以及游戏排行榜。

2、所以我们需要定义swing组件,并在类初始化时初始化这些组件,添加组件。因为后面设计游戏的时候,我们要确切知道游戏区的大小,所以这里设置游戏区固定大小值。本来想用布局来更好的管理,但作者对布局也掌握不够,所以就先设置固定大小吧。

3、定义我们的游戏。贪吃蛇游戏其实就是包含很多细小网格,然后蛇在网格中移动。蛇由一连串的网格组成,为了视觉效果,蛇身用蓝色标记,食物用红色标记,背景白色。如第一张所示。所以,我们需要定义二维数组,保存网格信息,保存蛇身和食物的位置信息等。初始化时,还需要添加键盘事件控制上下左右移动。

4、食物的位置信息是二维的,所以我简单定义了一个类用来保存二维信息。

5、接着就是实现游戏的功能了。开始,暂停,停止按钮添加事件控制游戏开始。等级按钮定义游戏难度等。

6、开始游戏后,我们定义一个定时器。蛇身按照指定的方向移动,方向是通过初始化时添加的键盘事件,键盘的上下左右按钮来控制。蛇身是连续的位置信息,保存到队列中,所以蛇身的移动就是队首增加一个位置,队尾减少位置,然后重新绘画游戏区就可以了。

import javaawt;

import javaapplet;

import javaawtevent;

import javaawtimage;

import javaawtgeom;

import javautil;

class Car{

Image img;

int x, y;

Dimension dim;

Car(Image img){

thisimg=img;

}

Car(Image img, int x, int y){

thisimg=img; thisx=x; thisy=y;

}

Car(Image img, int x, int y, Dimension dim){

this(img, x, y);

thisdim=dim;

}

void draw(Graphics g, ImageObserver observer){

gdrawImage(img, x, y, observer);

}

int getX(){ return x;}

int getY(){ return y;}

void setX(int x){thisx=x;}

void setY(int y){thisy=y;}

void setLocation(int x, int y){

thisx=x; thisy=y;

}

int getWidth(){ return imggetWidth(null);}

int getHeight(){ return imggetHeight(null);}

Rectangle2D getRectangle(){

return new Rectangle2DFloat(x, y, getWidth(), getHeight());

}

void move(int dx, int dy){

x+=dx;

y+=dy;

if(dim!=null){

if(x<0)x=0;

if(x+getWidth()>dimgetWidth())

x=(int)dimgetWidth()-getWidth();

}

}

boolean intersects(Car car){

return getRectangle()intersects(cargetRectangle());

}

boolean intersects(int x, int y){

return getRectangle()intersects(x, y, getWidth(), getHeight());

}

}

public class CarRace extends Applet implements KeyListener, Runnable{

Image buff;

Canvas screen;

Graphics2D gs, gb;

Car redCar;

Car[] enemy=new Car[20];

Button bStart;

Thread game;

boolean loop=true;

Dimension dim=new Dimension(200, 300);

int road;

Random rnd=new Random();

public void init(){

prepareResource();

setBackground(Colorblue);

initScreen();

add(screen);

bStart=new Button("霸烙 矫累");

add(bStart);

bStartaddActionListener(new ActionListener(){

public void actionPerformed(ActionEvent ae){

screenrequestFocus();

if(!gameisAlive())

gamestart();

}

});

}

void prepareResource(){

Image imgRed=getImage(getCodeBase(),"images/red_cargif");

Image imgBlue=getImage(getCodeBase(),"images/blue_cargif");

Image imgGreen=getImage(getCodeBase(),"images/green_cargif");

MediaTracker mt=new MediaTracker(this);

try{

mtaddImage(imgRed, 0);

mtaddImage(imgBlue, 1);

mtaddImage(imgGreen, 2);

mtwaitForAll();

}catch(Exception e){}

buff=createImage((int)dimgetWidth(), (int)dimgetHeight());

gb=(Graphics2D)buffgetGraphics();

redCar=new Car(imgRed, 80,250, dim);

for(int i=0;i<10;i++){

enemy[i]=new Car(imgBlue, 0, 0);

}

for(int i=10;i<enemylength;i++){

enemy[i]=new Car(imgGreen, 0, 0);

}

for(int i=0;i<enemylength;i++){

setEnemy(i);

}

game=new Thread(this);

}

public void stop(){

loop=false;

}

public void run(){

while(loop){

drawScreen();

try{ Threadsleep(50);}catch(Exception e){}

}

}

void initScreen(){

screen=new Canvas(){

public void paint(Graphics g){

if(gs==null){

gs=(Graphics2D)screengetGraphics();

}

drawScreen();

}

};

screensetSize(dim);

screenaddKeyListener(this);

}

void setEnemy(int en){

int x, y;

next:while(true){

x=rndnextInt((int)dimgetWidth()-enemy[en]getWidth());

y=-rndnextInt(5000)-200;

for(int j=0;j<enemylength;j++){

if(j!=en && enemy[j]intersects(x, y))continue next;

}

enemy[en]setLocation(x, y);

break;

}

}

void check(Car en){

if(redCarintersects(en)){

if(redCargetX()>engetX()){

enmove(-20, 0);

redCarmove(20, 0);

}

else{

enmove(20,0);

redCarmove(-20, 0);

}

}

}

synchronized void drawScreen(){

gbclearRect(0, 0, (int)dimgetWidth(), (int)dimgetHeight());

gbsetPaint(new Color(100, 100, 100));

gbfillRect(0, 0, (int)dimgetWidth(), (int)dimgetHeight());

drawRoad();

for(int i=0;i<enemylength;i++){

enemy[i]move(0, 15);

enemy[i]draw(gb, screen);

if(enemy[i]getY()>dimgetHeight())

setEnemy(i);

check(enemy[i]);

}

redCardraw(gb, screen);

gsdrawImage(buff, 0,0, screen);

}

void drawRoad(){

road+=80;

gbsetPaint(Coloryellow);

gbfillRect((int)dimgetWidth()/2, road,10,150);

if(road>=dimgetHeight())road=-150;

}

public void keyPressed(KeyEvent ke){

if(kegetKeyCode()==KeyEventVK_LEFT){

redCarmove(-10,0);

}

else if(kegetKeyCode()==KeyEventVK_RIGHT){

redCarmove(10,0);

}

}

public void keyReleased(KeyEvent ke){}

public void keyTyped(KeyEvent ke){}

}

这个是一个典型的Applet,文件名应该是CarRacejava,需要作为车子等等,本人也是别人给的,但是还要个html文件来运行它,代码为:

<Applet code="CarRaceclass" width=250 height=350 >

</Applet>

请楼主采纳

以上就是关于用java小游戏编写入门,高手指教全部的内容,包括:用java小游戏编写入门,高手指教、求助,用Java编写一个记忆类小游戏 要有难度上中下,排行榜等功能、怎样运行java小游戏,我只有源代码可是不知道怎么运行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9719982.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存