分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
没有标题写的那么大……真要用Java重写太阁五不说别的,光整理原图就够累死我的……
游戏截图:
只是一个太阁五中加农业水平小游戏的再现……用本人loonframework-game包进行图形处理,算是一个对jar包的测试程序,完整程序下载地址,仅将使用到的类和图形打包:
http://looframework.sourceforge.net/download/Tg.jar
源码如下:
TgIrrigationScript.java
游戏截图:
只是一个太阁五中加农业水平小游戏的再现……用本人loonframework-game包进行图形处理,算是一个对jar包的测试程序,完整程序下载地址,仅将使用到的类和图形打包:
http://looframework.sourceforge.net/download/Tg.jar
源码如下:
TgIrrigationScript.java
package
org.loon.framework.test.tg;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Panel;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Random;
import javax.swing.JOptionPane;
import org.loon.framework.game.collection.SimpleArray;
import org.loon.framework.game.image.Bitmap;
/** */ /**
* <p>
* Title: LoonFramework
* </p>
* <p>
* Description:[太阁立志传小游戏Java模拟之水渠贯通]loonframework-game包由于标准类及接口未完成暂不开源(我懒……目前只完成大约45%而已|||三月没动……)
* </p>
* <p>
* Copyright: Copyright (c) 2007
* </p>
* <p>
* Company: LoonFramework
* </p>
*
* @author chenpeng
* @email:[email protected]
* @version 0.1
*/
public class TgIrrigationScript extends Panel implements KeyListener ... {
/** *//**
*
*/
private static final long serialVersionUID = 1L;
// 生成缓存用背景Image
Image _screen = new Bitmap(640, 480, 1).getImage();
//获得画布
Graphics _graphics = _screen.getGraphics();
final private int _rs = 6;
private int[][] _chess = null;
private int[] _obj_block = null;
// Bitmap为loonframework提供类,内部混合封装了Image和BufferedImage,提供了通用的处理方式
// 背景图
Bitmap _back_bitmap = null;
// 出水图1
Bitmap _water_start = null;
// 出水图2
Bitmap _water_start2 = null;
// 左边框图
Bitmap _left_box = null;
// 左侧辅助框
Bitmap[] _leftnew_sprites = null;
// 砖块地图
Bitmap[][] _character_sprites = null;
// 光标
Bitmap _cursor = null;
Bitmap bitmap = null;
/** *//**
* 构造函数
*
*/
public TgIrrigationScript() ...{
initialize();
}
/** *//**
* 初始化
*
*/
public void initialize() ...{
setBackground(Color.BLACK);
setSize(640, 480);
_leftnew_sprites = new Bitmap[4];
_character_sprites = new Bitmap[_rs][_rs];
_back_bitmap = new Bitmap("./image/pano.png");
_water_start = new Bitmap("./image/water_start.png");
_water_start2 = new Bitmap("./image/spr16.png");
_left_box = new Bitmap("./image/left_box.png");
_cursor = new Bitmap("./image/choose_box.png");
bitmap = new Bitmap("./image/mud.png");
// 出水图绘制坐标
_water_start.setDrawXY(272, 2);
// 左边框绘制坐标
_left_box.setDrawXY(25, 20);
_water_start2.setDrawXY(308, 45);
//游标绘制坐标
_cursor.setDrawXY(308, 91);
for (int i = 0; i < _leftnew_sprites.length; i++) ...{
_leftnew_sprites[i] = new Bitmap("./image/mud.png");
_leftnew_sprites[i].setDrawXY(42, 204 - i * 56);
}
_leftnew_sprites[0].setDrawY(212);
for (int i = 0; i <_rs; i++) ...{
for (int j = 0; j < _rs; j++) ...{
_character_sprites[i][j] = new Bitmap("./image/mud.png");
_character_sprites[i][j].setDrawXY(i * 48 + 164, j * 48 + 91);
}
}
_chess = new int[_rs][_rs];
_obj_block = new int[4];
// 左侧辅助栏读取图形
for (int i = 0; i < 4; i++) ...{
down();
}
// 设定监听
setFocusable(true);
addKeyListener(this);
}
public void update(Graphics g) ...{
paint(g);
}
public void paint(Graphics g) ...{
// 背景绘制
_back_bitmap.draw(_graphics);
// 出水图绘制
_water_start.draw(_graphics);
//
_water_start2.draw(_graphics);
// 左边框图绘制
_left_box.draw(_graphics);
// 左侧辅助框绘制
for (int i = 0; i < _leftnew_sprites.length; i++) ...{
_leftnew_sprites[i].draw(_graphics);
}
// 绘制砖块
for (int i = 0; i < _character_sprites.length; i++) ...{
for (int j = 0; j < _character_sprites[i].length; j++) ...{
_character_sprites[i][j].draw(_graphics);
}
}
// 绘制选中光标
_cursor.draw(_graphics);
g.drawImage(_screen, 0, 0, this);
}
public void down() ...{
int steps = 0;
_obj_block[0] = _obj_block[1];
_leftnew_sprites[0].setBufferedImage(_leftnew_sprites[1]
.getBufferedImage());
_obj_block[1] = _obj_block[2];
_leftnew_sprites[1].setBufferedImage(_leftnew_sprites[2]
.getBufferedImage());
_obj_block[2] = _obj_block[3];
_leftnew_sprites[2].setBufferedImage(_leftnew_sprites[3]
.getBufferedImage());
if (steps < (_rs * _rs)) ...{
// 位图
int[] tmparr = new int[] ...{3,5,6,7,9,10,11,12,13,14,15};
// 随即选取
int tmpint = tmparr[new Random().nextInt(11)];
_obj_block[3] = tmpint;
_leftnew_sprites[3].setBufferedImage(new Bitmap("./image/spr"
+ tmpint + ".png").getBufferedImage());
} else ...{
_obj_block[3] = 0;
_leftnew_sprites[3].setBufferedImage(bitmap.getBufferedImage());
}
steps += 1;
}
/** *//**
* 放下事件处理
* @param x
* @param y
*/
public void putCase(int x, int y) ...{
if (this._chess[x][y] == 0) ...{
_character_sprites[x][y].setBufferedImage(_leftnew_sprites[0]
.getBufferedImage());
_chess[x][y] = _obj_block[0];
down();
//_obj_block[0]为最后的渠道方块,所以为0时代表数据读完
if (_obj_block[0] == 0) ...{
endCase();
}
}
}
/** *//**
* 判断选中图形能否贯通
* @param x
* @param y
* @param dire
* @return
*/
public boolean crossInclude(int x, int y, int dire) ...{
boolean flag = false;
switch (dire) ...{
case 1:
flag = SimpleArray.include("3,5,7,9,11,13,15", _chess[x][y]);
break;
case 2:
flag = SimpleArray.include("3,6,7,10,11,14,15", _chess[x][y]);
break;
case 3:
flag = SimpleArray.include("5,6,7,12,13,14,15", _chess[x][y]);
break;
case 4:
flag = SimpleArray.include("9,10,11,12,13,14,15", _chess[x][y]);
break;
}
return flag;
}
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Panel;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Random;
import javax.swing.JOptionPane;
import org.loon.framework.game.collection.SimpleArray;
import org.loon.framework.game.image.Bitmap;
/** */ /**
* <p>
* Title: LoonFramework
* </p>
* <p>
* Description:[太阁立志传小游戏Java模拟之水渠贯通]loonframework-game包由于标准类及接口未完成暂不开源(我懒……目前只完成大约45%而已|||三月没动……)
* </p>
* <p>
* Copyright: Copyright (c) 2007
* </p>
* <p>
* Company: LoonFramework
* </p>
*
* @author chenpeng
* @email:[email protected]
* @version 0.1
*/
public class TgIrrigationScript extends Panel implements KeyListener ... {
/** *//**
*
*/
private static final long serialVersionUID = 1L;
// 生成缓存用背景Image
Image _screen = new Bitmap(640, 480, 1).getImage();
//获得画布
Graphics _graphics = _screen.getGraphics();
final private int _rs = 6;
private int[][] _chess = null;
private int[] _obj_block = null;
// Bitmap为loonframework提供类,内部混合封装了Image和BufferedImage,提供了通用的处理方式
// 背景图
Bitmap _back_bitmap = null;
// 出水图1
Bitmap _water_start = null;
// 出水图2
Bitmap _water_start2 = null;
// 左边框图
Bitmap _left_box = null;
// 左侧辅助框
Bitmap[] _leftnew_sprites = null;
// 砖块地图
Bitmap[][] _character_sprites = null;
// 光标
Bitmap _cursor = null;
Bitmap bitmap = null;
/** *//**
* 构造函数
*
*/
public TgIrrigationScript() ...{
initialize();
}
/** *//**
* 初始化
*
*/
public void initialize() ...{
setBackground(Color.BLACK);
setSize(640, 480);
_leftnew_sprites = new Bitmap[4];
_character_sprites = new Bitmap[_rs][_rs];
_back_bitmap = new Bitmap("./image/pano.png");
_water_start = new Bitmap("./image/water_start.png");
_water_start2 = new Bitmap("./image/spr16.png");
_left_box = new Bitmap("./image/left_box.png");
_cursor = new Bitmap("./image/choose_box.png");
bitmap = new Bitmap("./image/mud.png");
// 出水图绘制坐标
_water_start.setDrawXY(272, 2);
// 左边框绘制坐标
_left_box.setDrawXY(25, 20);
_water_start2.setDrawXY(308, 45);
//游标绘制坐标
_cursor.setDrawXY(308, 91);
for (int i = 0; i < _leftnew_sprites.length; i++) ...{
_leftnew_sprites[i] = new Bitmap("./image/mud.png");
_leftnew_sprites[i].setDrawXY(42, 204 - i * 56);
}
_leftnew_sprites[0].setDrawY(212);
for (int i = 0; i <_rs; i++) ...{
for (int j = 0; j < _rs; j++) ...{
_character_sprites[i][j] = new Bitmap("./image/mud.png");
_character_sprites[i][j].setDrawXY(i * 48 + 164, j * 48 + 91);
}
}
_chess = new int[_rs][_rs];
_obj_block = new int[4];
// 左侧辅助栏读取图形
for (int i = 0; i < 4; i++) ...{
down();
}
// 设定监听
setFocusable(true);
addKeyListener(this);
}
public void update(Graphics g) ...{
paint(g);
}
public void paint(Graphics g) ...{
// 背景绘制
_back_bitmap.draw(_graphics);
// 出水图绘制
_water_start.draw(_graphics);
//
_water_start2.draw(_graphics);
// 左边框图绘制
_left_box.draw(_graphics);
// 左侧辅助框绘制
for (int i = 0; i < _leftnew_sprites.length; i++) ...{
_leftnew_sprites[i].draw(_graphics);
}
// 绘制砖块
for (int i = 0; i < _character_sprites.length; i++) ...{
for (int j = 0; j < _character_sprites[i].length; j++) ...{
_character_sprites[i][j].draw(_graphics);
}
}
// 绘制选中光标
_cursor.draw(_graphics);
g.drawImage(_screen, 0, 0, this);
}
public void down() ...{
int steps = 0;
_obj_block[0] = _obj_block[1];
_leftnew_sprites[0].setBufferedImage(_leftnew_sprites[1]
.getBufferedImage());
_obj_block[1] = _obj_block[2];
_leftnew_sprites[1].setBufferedImage(_leftnew_sprites[2]
.getBufferedImage());
_obj_block[2] = _obj_block[3];
_leftnew_sprites[2].setBufferedImage(_leftnew_sprites[3]
.getBufferedImage());
if (steps < (_rs * _rs)) ...{
// 位图
int[] tmparr = new int[] ...{3,5,6,7,9,10,11,12,13,14,15};
// 随即选取
int tmpint = tmparr[new Random().nextInt(11)];
_obj_block[3] = tmpint;
_leftnew_sprites[3].setBufferedImage(new Bitmap("./image/spr"
+ tmpint + ".png").getBufferedImage());
} else ...{
_obj_block[3] = 0;
_leftnew_sprites[3].setBufferedImage(bitmap.getBufferedImage());
}
steps += 1;
}
/** *//**
* 放下事件处理
* @param x
* @param y
*/
public void putCase(int x, int y) ...{
if (this._chess[x][y] == 0) ...{
_character_sprites[x][y].setBufferedImage(_leftnew_sprites[0]
.getBufferedImage());
_chess[x][y] = _obj_block[0];
down();
//_obj_block[0]为最后的渠道方块,所以为0时代表数据读完
if (_obj_block[0] == 0) ...{
endCase();
}
}
}
/** *//**
* 判断选中图形能否贯通
* @param x
* @param y
* @param dire
* @return
*/
public boolean crossInclude(int x, int y, int dire) ...{
boolean flag = false;
switch (dire) ...{
case 1:
flag = SimpleArray.include("3,5,7,9,11,13,15", _chess[x][y]);
break;
case 2:
flag = SimpleArray.include("3,6,7,10,11,14,15", _chess[x][y]);
break;
case 3:
flag = SimpleArray.include("5,6,7,12,13,14,15", _chess[x][y]);
break;
case 4:
flag = SimpleArray.include("9,10,11,12,13,14,15", _chess[x][y]);
break;
}
return flag;
}