Java来做马里奥 1 —木叶传承

                继续前两天的博客内容,接着写Java中的ACT游戏实现,本来记得手里有C++版马里奥的角色和地图的,突然找不到丢那里了,凑活ps个GBA火影的图代替下……

运行效果如下:
Java来做马里奥 1 —木叶传承



此次重点演示了角色和地图的绘制……其实看过我以前写JAVA的RPG开发blog文章的早知道怎么弄的了……所以此次只帖代码……


Role.java:
Java来做马里奥 1 —木叶传承package org.test.mario;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承
import java.awt.Graphics;
Java来做马里奥 1 —木叶传承
import java.awt.Image;
Java来做马里奥 1 —木叶传承
import java.awt.Point;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承
import org.loon.framework.game.image.Bitmap;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承
/** *//**
Java来做马里奥 1 —木叶传承 * <p>
Java来做马里奥 1 —木叶传承 * Title: LoonFramework
Java来做马里奥 1 —木叶传承 * </p>
Java来做马里奥 1 —木叶传承 * <p>
Java来做马里奥 1 —木叶传承 * Description:角色描述及绘制用类
Java来做马里奥 1 —木叶传承 * </p>
Java来做马里奥 1 —木叶传承 * <p>
Java来做马里奥 1 —木叶传承 * Copyright: Copyright (c) 2008
Java来做马里奥 1 —木叶传承 * </p>
Java来做马里奥 1 —木叶传承 * <p>
Java来做马里奥 1 —木叶传承 * Company: LoonFramework
Java来做马里奥 1 —木叶传承 * </p>
Java来做马里奥 1 —木叶传承 * 
Java来做马里奥 1 —木叶传承 * 
@author chenpeng
Java来做马里奥 1 —木叶传承 * @email:[email protected]
Java来做马里奥 1 —木叶传承 * 
@version 0.1
Java来做马里奥 1 —木叶传承 
*/

Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承
public class Role ...{
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承    
private double _x;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承    
private double _y;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承    
private double _vx;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承    
private double _vy;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承    
private boolean isFlat;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承    
private int _dir;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承    
private int _count;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承    
final static private Image role = new Bitmap("./role.gif").getImage();
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承    
private Map _map;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承    
final static public int WIDTH = 40;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承    
final static public int HEIGHT = 40;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承    
final static private int SPEED = 6;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承    
final static private int JUMP_SPEED = 16;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承    
final static private int RIGHT = 0;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承    
final static private int LEFT = 1;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承    
public Role(double _x, double _y, Map _map) ...{
Java来做马里奥 1 —木叶传承        
this._x = _x;
Java来做马里奥 1 —木叶传承        
this._y = _y;
Java来做马里奥 1 —木叶传承        
this._map = _map;
Java来做马里奥 1 —木叶传承        _vx 
= 0;
Java来做马里奥 1 —木叶传承        _vy 
= 0;
Java来做马里奥 1 —木叶传承        isFlat 
= false;
Java来做马里奥 1 —木叶传承        _dir 
= RIGHT;
Java来做马里奥 1 —木叶传承        _count 
= 0;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承        AnimationThread thread 
= new AnimationThread();
Java来做马里奥 1 —木叶传承        thread.start();
Java来做马里奥 1 —木叶传承    }

Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承    
public void stop() ...{
Java来做马里奥 1 —木叶传承        _vx 
= 0;
Java来做马里奥 1 —木叶传承    }

Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承    
public void left() ...{
Java来做马里奥 1 —木叶传承        _vx 
= -SPEED;
Java来做马里奥 1 —木叶传承        _dir 
= LEFT;
Java来做马里奥 1 —木叶传承    }

Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承    
public void right() ...{
Java来做马里奥 1 —木叶传承        _vx 
= SPEED;
Java来做马里奥 1 —木叶传承        _dir 
= RIGHT;
Java来做马里奥 1 —木叶传承    }

Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承    
public void jump() ...{
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承        
if (isFlat) ...{
Java来做马里奥 1 —木叶传承            _vy 
= -JUMP_SPEED;
Java来做马里奥 1 —木叶传承            isFlat 
= false;
Java来做马里奥 1 —木叶传承        }

Java来做马里奥 1 —木叶传承    }

Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承    
public void update() ...{
Java来做马里奥 1 —木叶传承        
//0.6为允许跳跃的高度限制,反值效果
Java来做马里奥 1 —木叶传承
        _vy += 0.6;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承        
double newX = _x + _vx;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承        Point tile 
= _map.getTileHit(this, newX, _y);
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承        
if (tile == null...{
Java来做马里奥 1 —木叶传承            _x 
= newX;
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承        }
 else ...{
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承            
if (_vx > 0...{
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承                _x 
= Map.tilesToPixels(tile.x) - WIDTH;
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承            }
 else if (_vx < 0...{
Java来做马里奥 1 —木叶传承                _x 
= Map.tilesToPixels(tile.x + 1);
Java来做马里奥 1 —木叶传承            }

Java来做马里奥 1 —木叶传承            _vx 
= 0;
Java来做马里奥 1 —木叶传承        }

Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承        
double newY = _y + _vy;
Java来做马里奥 1 —木叶传承        tile 
= _map.getTileHit(this, _x, newY);
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承        
if (tile == null...{
Java来做马里奥 1 —木叶传承            _y 
= newY;
Java来做马里奥 1 —木叶传承            isFlat 
= false;
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承        }
 else ...{
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承            
if (_vy > 0...{
Java来做马里奥 1 —木叶传承                _y 
= Map.tilesToPixels(tile.y) - HEIGHT;
Java来做马里奥 1 —木叶传承                _vy 
= 0;
Java来做马里奥 1 —木叶传承                isFlat 
= true;
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承            }
 else if (_vy < 0...{
Java来做马里奥 1 —木叶传承                _y 
= Map.tilesToPixels(tile.y + 1);
Java来做马里奥 1 —木叶传承                _vy 
= 0;
Java来做马里奥 1 —木叶传承            }

Java来做马里奥 1 —木叶传承        }

Java来做马里奥 1 —木叶传承    }

Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承    
public void draw(Graphics g, int offsetX, int offsetY) ...{
Java来做马里奥 1 —木叶传承        g.drawImage(role, (
int) _x + offsetX, (int) _y + offsetY, (int) _x
Java来做马里奥 1 —木叶传承                
+ offsetX + WIDTH, (int) _y + offsetY + HEIGHT, _count * WIDTH,
Java来做马里奥 1 —木叶传承                _dir 
* HEIGHT, _count * WIDTH + WIDTH, _dir * HEIGHT + HEIGHT,
Java来做马里奥 1 —木叶传承                
null);
Java来做马里奥 1 —木叶传承    }

Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承    
public double getX() ...{
Java来做马里奥 1 —木叶传承        
return _x;
Java来做马里奥 1 —木叶传承    }

Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承    
public double getY() ...{
Java来做马里奥 1 —木叶传承        
return _y;
Java来做马里奥 1 —木叶传承    }

Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承    
private class AnimationThread extends Thread ...{
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承        
public void run() ...{
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承            
while (true...{
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承                
if (_count == 0...{
Java来做马里奥 1 —木叶传承                    _count 
= 1;
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承                }
 else if (_count == 1...{
Java来做马里奥 1 —木叶传承                    _count 
= 0;
Java来做马里奥 1 —木叶传承                }

Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承                
try ...{
Java来做马里奥 1 —木叶传承                    Thread.sleep(
300);
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承                }
 catch (InterruptedException e) ...{
Java来做马里奥 1 —木叶传承                    e.printStackTrace();
Java来做马里奥 1 —木叶传承                }

Java来做马里奥 1 —木叶传承            }

Java来做马里奥 1 —木叶传承        }

Java来做马里奥 1 —木叶传承    }

Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承}

Java来做马里奥 1 —木叶传承

Map.java:
Java来做马里奥 1 —木叶传承package org.test.mario;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承
import java.awt.Graphics;
Java来做马里奥 1 —木叶传承
import java.awt.Image;
Java来做马里奥 1 —木叶传承
import java.awt.Point;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承
import org.loon.framework.game.image.Bitmap;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承
/** *//**
Java来做马里奥 1 —木叶传承 * <p>
Java来做马里奥 1 —木叶传承 * Title: LoonFramework
Java来做马里奥 1 —木叶传承 * </p>
Java来做马里奥 1 —木叶传承 * <p>
Java来做马里奥 1 —木叶传承 * Description:地图绘制及描述用类
Java来做马里奥 1 —木叶传承 * </p>
Java来做马里奥 1 —木叶传承 * <p>
Java来做马里奥 1 —木叶传承 * Copyright: Copyright (c) 2008
Java来做马里奥 1 —木叶传承 * </p>
Java来做马里奥 1 —木叶传承 * <p>
Java来做马里奥 1 —木叶传承 * Company: LoonFramework
Java来做马里奥 1 —木叶传承 * </p>
Java来做马里奥 1 —木叶传承 * 
Java来做马里奥 1 —木叶传承 * 
@author chenpeng
Java来做马里奥 1 —木叶传承 * @email:[email protected]
Java来做马里奥 1 —木叶传承 * 
@version 0.1
Java来做马里奥 1 —木叶传承 
*/

Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承
public class Map ...{
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承    
// 在以前的blog文章中我介绍过,游戏开发中通常以数组描述地图
Java来做马里奥 1 —木叶传承    
// 此处1描绘为一个障碍物,0描绘为一个可通行空间
Java来做马里奥 1 —木叶传承
    final static public int TILE_SIZE = 32;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承    
final static public int ROW = 20;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承    
final static public int COL = 30;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承    
final static public int WIDTH = TILE_SIZE * COL;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承    
final static public int HEIGHT = TILE_SIZE * ROW;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承    
final static public double GRAVITY = 0.6;
Java来做马里奥 1 —木叶传承
Java来做马里奥 1 —木叶传承    
// 地图描述
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承
    final static private int[][] map = ...{
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承            
...2222222222222222222222,
Java来做马里奥 1 —木叶传承                    
22222222 }
,
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承            
...1000000000000000000000,
Java来做马里奥 1 —木叶传承                    
00000001 }
,
Java来做马里奥 1 —木叶传承Java来做马里奥 1 —木叶传承            
...1000000000000000000000,
Java来做马里奥 1 —木叶传承                    
00000