不懂难度就大了。。。
先学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小游戏,我只有源代码可是不知道怎么运行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)