人生如痴如醉 如梦如醒游戏间,可叹痴可叹癫

7690人阅读
&&&&&&&& 从星期一开始一直郁闷&&
最近的状况&&用迷信的说法就是犯小人,以社会学的观点是由于出现人际交往困难造成社会评价降低&&无比郁闷中,继续写这个&&
上一回我们写到关于如何改变角色的移动样式及线程的初步处理,本次将继续进行下一步,即角色多步走法中方向变化的实现。
程序源码如下,我一直相信,源码是最好的老师,与其向白痴一样以死背下多少API自鸣得意,还不如踏踏实实写点东西!!!了解一下程序本质!!!竟然让我一个搞后台的默写,默写!!!出CSS的布局实现效果&&7456~~~(这种人也能当技术总监&&中国啊~~~)
程序源码如下:
package org.loon.chair.example4;
import java.awt.D
import java.awt.G
import java.awt.I
import java.awt.event.KeyE
import java.awt.event.KeyL
import javax.swing.ImageI
import javax.swing.JP
&* Example3中自定义面板,用于描绘底层地图。
&* @author chenpeng
&* Loon Framework in Game
&* PS:请注意,此处与前例不同,新增键盘事件监听
public class MyPanel extends JPanel implements& KeyListener {
&&& //窗体的宽与高
&&& private static final int WIDTH = 480;
&&& private static final int HEIGHT = 480;
&&& //设定背景方格默认行数
&&& private static final int ROW = 15;
&&& //设定背景方格默认列数
&&& private static final int COL = 15;
&&& //单个图像大小,我默认采用32x32图形,可根据需要调整比例。
&&& //当时,始终应和窗体大小比例协调;比如32x32的图片,如何
&&& //一行设置15个,那么就是480,也就是本例子默认的窗体大小,
&&& //当然,我们也可以根据ROW*CS,COl*CS在初始化时自动调整
&&& //窗体大小,以后的例子中会用到类似情况。总之一句话,编程
&&& //是[为目的而存在的],所有的方法,大家都可任意尝试和使用。
&&& private static final int CS = 32;
&&& //设定地图,通常在rpg类型游戏开发中,以[二维数组]对象为
&&& //基础进行地图处理,用以描绘出X坐标和Y坐标。实际上,即令
&&& //再华丽的RPG类游戏,都是从这些简单的X,Y坐标开始的。
&&& //PS:所谓[数组],大家可以简单的理解为即数据的集合,一维数组
&&& //仅包含X轴,而二维是由X,Y两个轴组成的,X与Y的交织点,即为
&&& //一条数据。
&&& private int[][] map = {
&&&&&&& {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
&&&&&&& {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
&&&&&&& {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
&&&&&&& {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
&&&&&&& {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
&&&&&&& {1,0,0,0,0,1,1,1,1,1,0,0,0,0,1},
&&&&&&& {1,0,0,0,0,1,0,0,0,1,0,0,0,0,1},
&&&&&&& {1,0,0,0,0,1,0,0,0,1,0,0,0,0,1},
&&&&&&& {1,0,0,0,0,1,0,0,0,1,0,0,0,0,1},
&&&&&&& {1,0,0,0,0,1,1,0,1,1,0,0,0,0,1},
&&&&&&& {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
&&&&&&& {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
&&&&&&& {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
&&&&&&& {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
&&&&&&& {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}};
&&& //设定显示图像对象
&&& private Image floorImage;
&&& private Image wallImage;
&&& //角色
&&& private Image roleImage;
&&& //角色坐标
&&& private int x, y;
&&& //增加计步器
&&& private int count;
&&& //此处我们添加一组常数,用以区别左右上下按键的触发,
&&& //之所以采用数字进行区别,原因大家都很清楚^^,数字
&&& //运算效率高嘛~
&&& private static final int LEFT = 0;
&&& private static final int RIGHT = 1;
&&& private static final int UP = 2;
&&& private static final int DOWN = 3;
&&& private int //新增变量,用以确认角色所对方向,对应按键触发
&&& private Thread threadAnime;
&&& public MyPanel() {
&&&&&&& //设定初始构造时面板大小
&&&&&&& setPreferredSize(new Dimension(WIDTH, HEIGHT));
&&&&&&& //于初始化时载入图形
&&&&&&& loadImage();
&&&&&&& //初始化角色所在位置,由于本例行列皆为15,估x与y的极限数值也皆为15,
&&&&&&& //即由15x15的方格图像,组成了角色的可见活动区域。
&&&&&&& x = 8;
&&&&&&& y = 8;
&&&& &&&direction=DOWN; //默认为角色向下
&&&&&&& //在面板构建时赋予计步器初值
&&&&&&& count = 0;
&&&&&&& //设定焦点在本窗体并付与监听对象
&&&&&&& setFocusable(true);
&&&&& &&addKeyListener(this);
&&&&&&& //实例化内部线程AnimationThread
&&&&&&& threadAnime = new Thread(new AnimationThread());
&&&&&&& //启动线程
&&&&&&& threadAnime.start();
&&& //描绘窗体,此处在默认JPanel基础上构建底层地图.
&&& public void paintComponent(Graphics g) {
&&& &&&&super.paintComponent(g);
&&&&&&& //画出地图
&&&&&&& drawMap(g);
&&&&&&& //画出人物
&&&&&&& drawRole(g);
&&&& * 载入图像
&&& private void loadImage() {
//获得当前类对应的相对位置image文件夹下的地板图像
&&&&&&& ImageIcon icon = new ImageIcon(getClass().getResource(&image/floor.gif&));
&&&&&&& //将地板图像实例付与floorImage
&&&&&&& floorImage = icon.getImage();
&&&&&&& //获得当前类对应的相对位置image文件夹下的墙体图像
&&&&&&& icon = new ImageIcon(getClass().getResource(&image/wall.gif&));
&&&&&&& //将墙体图像实例付与wallImage
&&&&&&& wallImage = icon.getImage();
&&&&&&& icon = new ImageIcon(getClass().getResource(&image/role.gif&));
&&&&&&& roleImage = icon.getImage();
&&&& * 绘制角色
&&& private void drawRole(Graphics g) {
//以count作为图像的偏移数值,并于Example4中添加direction以获取所处图像块位置
&&g.drawImage(roleImage, x * CS, y * CS, x * CS + CS, y * CS + CS,
&&count * CS, direction * CS, CS + count * CS, direction * CS + CS, this);
&&& //换算公式如下:
&&& private void drawMap(Graphics g) {
& && //在Java或任何游戏开发中,算法都是最重要的一步,本例尽使用
//简单的双层for循环进行地图描绘,
&&&&&&& for (int x = 0; x & ROW; x++) {
&&&&&&&&&&& for (int j = 0; j & COL; j++) {
&&&&&&&&&&& &
&&&&&&&&&&&&&&& // switch作为java中的转换器,用于执行和()中数值相等
&&&&&&&&&&& & // 的case操作。请注意,在case操作中如果不以break退出
&&&&&&&&&&& & // 执行;switch函数将持续运算到最后一个case为止。
&&&&&&&&&&&&&&& switch (map[x][j]) {
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&& case 0 : //map的标记为0时画出地板
&&&&&&&&&&&&&&&&&&& && //在指定位置[描绘]出我们所加载的图形,以下同
&&&&&&&&&&&&&&&&&&&&&&& g.drawImage(floorImage, j * CS, x * CS, this);
&&&&&&&&&&&&&&&&&&&&&&& break;
&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&& case 1 : //map的标记为1时画出城墙
&&&&&&&&&&&&&&&&&&&&&&& g.drawImage(wallImage, j * CS, x * CS, this);
&&&&&&&&&&&&&&&&&&&&&&& break;
&&&&&&&&&&&&&&&&&&&& //我们可以依次类推出无数的背景组合,如定义椅子为2、宝座为3等
&&&&&&&&&&&&&&&&&&&& //很容易即可勾勒出一张背景地图。&&
&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&& default: //当所有case值皆不匹配时,将执行此操作。
&&&&&&&&&&&&&&&&&&& && break;
&&&&&&&&&&&&&&& }
&&&&&&&&&&& }
&&& public void keyPressed(KeyEvent e) {
&&&&&& //获得按键编号
&&&&&&& int keyCode = e.getKeyCode();
&&&&&&& //通过转换器匹配事件
&&&&&&& switch (keyCode) {
&&&&&&&&&&& //当触发Left时
&&&&&&&&&&& case KeyEvent.VK_LEFT :
&&&&&&&&&&&&&&& //进行left操作,仅符合move()中[规范]时执行,以下相同
&&&&&&&&&&& & move(LEFT);
&&&&&&&&&&&&&&& break;
&&&&&&&&&&& //当触发Right时&&&&&
&&&&&&&&&&& case KeyEvent.VK_RIGHT :
&&&&&&&&&&&
&&&&&&&&&&& & move(RIGHT);
&&&&&&&&&&&&&&& break;
&&&&&&&&&&& //当触发Up时&&&
&&&&&&&&&&& case KeyEvent.VK_UP :
&&&&&&&&&&&&&&&
&&&&&&&&&&& & move(UP);
&&&&&&&&&&&&&&& break;
&&&&&&&&&&& //当触发Down时&&&
&&&&&&&&&&& case KeyEvent.VK_DOWN :
&&&&&&&&&&&&&
&&&&&&&&&&& & move(DOWN);
&&&&&&&&&&&&&&& break;
&&&&&&& // 重新绘制窗体图像
&&&&&&& // PS:在此例程中,仅进行了角色的简单移动处理
&&&&&&& // ,关于避免闪烁及限制活动区域问题,请见后续
&&&&&&& // 案例。
&&&&&&& repaint();
&&&& * 用于判定是否允许移动的发生,被move()函数调用
&&&& * @param x
&&&& * @param y
&&&& * @return
&&& private boolean isAllow(int x, int y) {
&&&&&&& // 以(x,y)交点进行数据判定,我们都知道,
// 在本例中我仅以0作为地板的参数,1作为
// 墙的参数,由于我们的主角是[人类],而
// 不是[幽灵],所以当他要[撞墙]时,我们
// 当然不会允许,至少,是我讲到剧情的触发
&&&&&&& if (map[y][x] == 1) {
&&&&&&& // 不允许移动时,返回[假]
&&&&&&&&&&& return false;
&&&&&&& // 允许移动时时,返回[真]
&&&&&&& return true;
&&&& * 判断移动事件,关联isAllow()函数
&&&& * 在Example4中,添加了对于移动方向的整型记录变量direction
&&&& * @param event
&&& private void move(int event) {
&&&&&&& //以转换器判断相关事件,仅执行符合[规范]的操作。
&&&&&&& switch (event) {
&&&&&&&&&&& case LEFT:
&&&&&&&&&&& & //依次判定事件
&&&&&&&&&&&&&&& if (isAllow(x-1, y)) x--;
&&&&&&&& &&&&&&&direction = LEFT;
&&&&&&&&&&&&&&& break;
&&&&&&&&&&& case RIGHT:
&&&&&&&&&&&&&&& if (isAllow(x+1, y)) x++;
&&&&&&&&&&& &&&&direction = RIGHT;
&&&&&&&&&&&&&&& break;
&&&&&&&&&&& case UP:
&&&&&&&&&&&&&&& if (isAllow(x, y-1)) y--;
&&&&&&&& &&&&&&&direction = UP;
&& &&&&&&&&&&&&&break;
&&&&&&&&&&& case DOWN:
&&&&&&&&&&&&&&& if (isAllow(x, y+1)) y++;
&&&&&&&&&&& &&&&direction = DOWN;
&&&&&&&&&&&&&&& break;
&&&&&&&&&&& default:
&&&&&&&&&&& & break;
&&&& * 暂无释放键盘事件
&&& public void keyReleased(KeyEvent e) {
&&& &* 暂无字符输入事件
&&& public void keyTyped(KeyEvent e) {
&&& //内部类,用于处理计步动作。
&&& private class AnimationThread extends Thread {
&&&&&&& public void run() {
&&&&&&&&&&& while (true) {
&&&&&&&&&&&&&&& // count计步
&&&&&&&&&&&&& &&if (count == 0) {
&&&&&&&&&&&&&&&&&&& count = 1;
&&&&&&&&&&&&&&& } else if (count == 1) {
&&&&&&&&&&&&&&&&&&& count = 0;
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& // 重绘画面。
&&&&&&&&&&&&&&& repaint();
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& // 每300毫秒改变一次动作。
&&&&&&&&&&&& &&&try {
&&&&&&&&&&&&&&&&&&& Thread.sleep(300);
&&&&&&&&&&&&&&& } catch (InterruptedException e) {
&&&&&&&&&&&&&&&&&&& e.printStackTrace();
&&&&&&&&&&&&&&& }
&&&&&&&&&&& }
新改角色图如下:
越想越生气&&越想越生气&&越想越生气&&今天就写到这里了&&下次继续&&
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2329821次
积分:27352
积分:27352
排名:第148名
原创:318篇
转载:66篇
评论:5516条
(1)(2)(1)(5)(3)(4)(1)(3)(4)(5)(3)(1)(1)(2)(1)(3)(2)(3)(3)(2)(2)(7)(1)(1)(3)(2)(10)(11)(14)(7)(11)(29)(4)(4)(11)(7)(5)(5)(9)(3)(10)(9)(2)(6)(11)(21)(21)(16)(16)(16)(8)(14)(7)(13)(7)(11)(1)(3)人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[4]——一步莲华
人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[4]——一步莲华
发布时间: 11:46:36
编辑:www.fx114.net
本篇文章主要介绍了"人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[4]——一步莲华",主要涉及到人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[4]——一步莲华方面的内容,对于人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[4]——一步莲华感兴趣的同学可以参考一下。
& 从星期一开始一直郁闷……
最近的状况……用迷信的说法就是犯小人,以社会学的观点是由于出现人际交往困难造成社会评价降低……无比郁闷中,继续写这个……
上一回我们写到关于如何改变角色的移动样式及线程的初步处理,本次将继续进行下一步,即角色多步走法中方向变化的实现。
程序源码如下,我一直相信,源码是最好的老师,与其向白痴一样以死背下多少API自鸣得意,还不如踏踏实实写点东西!!!了解一下程序本质!!!竟然让我一个搞后台的默写,默写!!!出CSS的布局实现效果……7456~~~(这种人也能当技术总监……中国啊~~~)
程序源码如下:
package org.loon.chair.example4;
import java.awt.D
import java.awt.G
import java.awt.I
import java.awt.event.KeyE
import java.awt.event.KeyL
import javax.swing.ImageI
import javax.swing.JP
&*Example3中自定义面板,用于描绘底层地图。
&*LoonFrameworkinGame
&*PS:请注意,此处与前例不同,新增键盘事件监听
publicclass MyPanel
extends JPanel
implements&
KeyListener {
&&& //窗体的宽与高
&&& privatestaticfinalintWIDTH
&&& privatestaticfinalintHEIGHT
&&& //设定背景方格默认行数
&&& privatestaticfinalintROW
&&& //设定背景方格默认列数
&&& privatestaticfinalintCOL
&&& //单个图像大小,我默认采用32x32图形,可根据需要调整比例。
&&& //当时,始终应和窗体大小比例协调;比如32x32的图片,如何
&&& //一行设置15个,那么就是480,也就是本例子默认的窗体大小,
&&& //当然,我们也可以根据ROW*CS,COl*CS在初始化时自动调整
&&& //窗体大小,以后的例子中会用到类似情况。总之一句话,编程
&&& //是[为目的而存在的],所有的方法,大家都可任意尝试和使用。
&&& privatestaticfinalintCS
&&& //设定地图,通常在rpg类型游戏开发中,以[二维数组]对象为
&&& //基础进行地图处理,用以描绘出X坐标和Y坐标。实际上,即令
&&& //再华丽的RPG类游戏,都是从这些简单的X,Y坐标开始的。
&&& //PS:所谓[数组],大家可以简单的理解为即数据的集合,一维数组
&&& //仅包含X轴,而二维是由X,Y两个轴组成的,X与Y的交织点,即为
&&& //一条数据。
&&& privateint[][]
&&&&&&& {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
&&&&&&& {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
&&&&&&& {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
&&&&&&& {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
&&&&&&& {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
&&&&&&& {1,0,0,0,0,1,1,1,1,1,0,0,0,0,1},
&&&&&&& {1,0,0,0,0,1,0,0,0,1,0,0,0,0,1},
&&&&&&& {1,0,0,0,0,1,0,0,0,1,0,0,0,0,1},
&&&&&&& {1,0,0,0,0,1,0,0,0,1,0,0,0,0,1},
&&&&&&& {1,0,0,0,0,1,1,0,1,1,0,0,0,0,1},
&&&&&&& {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
&&&&&&& {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
&&&&&&& {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
&&&&&&& {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
&&&&&&& {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}};
&&& //设定显示图像对象
&&& private Image
&&& private Image
&&& //角色
&&& private Image
&&& //角色坐标
&&& privateintx,
&&& //增加计步器
&&& //此处我们添加一组常数,用以区别左右上下按键的触发,
&&& //之所以采用数字进行区别,原因大家都很清楚^^,数字
&&& //运算效率高嘛~
&&& privatestaticfinalintLEFT
&&& privatestaticfinalintRIGHT
&&& privatestaticfinalintUP
&&& privatestaticfinalintDOWN
&&& p //新增变量,用以确认角色所对方向,对应按键触发
&&& private Thread
&&& public MyPanel() {
&&&&&&& //设定初始构造时面板大小
&&&&&&& setPreferredSize(new Dimension(WIDTH,
&&&&&&& //于初始化时载入图形
&&&&&&& loadImage();
&&&&&&& //初始化角色所在位置,由于本例行列皆为15,估x与y的极限数值也皆为15,
&&&&&&& //即由15x15的方格图像,组成了角色的可见活动区域。
&&&&&&& x = 8;
&&&&&&& y = 8;
&&&& &&&direction=DOWN; //默认为角色向下
&&&&&&& //在面板构建时赋予计步器初值
&&&&&&& count = 0;
&&&&&&& //设定焦点在本窗体并付与监听对象
&&&&&&& setFocusable(true);
&&&&& &&addKeyListener(this);
&&&&&&& //实例化内部线程AnimationThread
&&&&&&& threadAnime =
new Thread(new AnimationThread());
&&&&&&& //启动线程
&&&&&&& threadAnime.start();
&&& //描绘窗体,此处在默认JPanel基础上构建底层地图.
&&& publicvoid paintComponent(Graphics g) {
&&& &&&&super.paintComponent(g);
&&&&&&& //画出地图
&&&&&&& drawMap(g);
&&&&&&& //画出人物
&&&&&&& drawRole(g);
&&&& *载入图像
&&& privatevoid loadImage() {
&&& //获得当前类对应的相对位置image文件夹下的地板图像
&&&&&&& ImageIcon icon =
new ImageIcon(getClass().getResource(&image/floor.gif&));
&&&&&&& //将地板图像实例付与floorImage
&&&&&&& floorImage = icon.getImage();
&&&&&&& //获得当前类对应的相对位置image文件夹下的墙体图像
&&&&&&& icon = new ImageIcon(getClass().getResource(&image/wall.gif&));
&&&&&&& //将墙体图像实例付与wallImage
&&&&&&& wallImage = icon.getImage();
&&&&&&& icon = new ImageIcon(getClass().getResource(&image/role.gif&));
&&&&&&& roleImage = icon.getImage();
&&&& *绘制角色
&&& privatevoid drawRole(Graphics g) {
&&& //以count作为图像的偏移数值,并于Example4中添加direction以获取所处图像块位置
&&& &&g.drawImage(roleImage, x *
CS, y * CS, x * CS + CS, y * CS +
&&& &&count * CS, direction *
CS, CS + count * CS, direction * CS + CS,
&&& //换算公式如下:
&&& privatevoid drawMap(Graphics g) {
//在Java或任何游戏开发中,算法都是最重要的一步,本例尽使用
&&& //简单的双层for循环进行地图描绘,
&&&&&&& for (int x = 0; x &
ROW; x++) {
&&&&&&&&&&& for (int j = 0; j &
COL; j++) {
&&&&&&&&&&& &
&&&&&&&&&&&&&&& // switch作为java中的转换器,用于执行和()中数值相等
&&&&&&&&&&& &
// 的case操作。请注意,在case操作中如果不以break退出
&&&&&&&&&&& &
// 执行;switch函数将持续运算到最后一个case为止。
&&&&&&&&&&&&&&& switch (map[x][j]) {
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&& case 0 :
//map的标记为0时画出地板
&&&&&&&&&&&&&&&&&&& &&
//在指定位置[描绘]出我们所加载的图形,以下同
&&&&&&&&&&&&&&&&&&&&&&& g.drawImage(floorImage, j *
&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&& case 1 :
//map的标记为1时画出城墙
&&&&&&&&&&&&&&&&&&&&&&& g.drawImage(wallImage, j *
&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&& //我们可以依次类推出无数的背景组合,如定义椅子为2、宝座为3等
&&&&&&&&&&&&&&&&&&&& //很容易即可勾勒出一张背景地图。&&
&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&& default:
//当所有case值皆不匹配时,将执行此操作。
&&&&&&&&&&&&&&&&&&& &&
&&&&&&&&&&&&&&& }
&&&&&&&&&&& }
&&& publicvoid keyPressed(KeyEvent e) {
&&&&&& //获得按键编号
&&&&&&& int keyCode = e.getKeyCode();
&&&&&&& //通过转换器匹配事件
&&&&&&& switch (keyCode) {
&&&&&&&&&&& //当触发Left时
&&&&&&&&&&& case KeyEvent.VK_LEFT :
&&&&&&&&&&&&&&& //进行left操作,仅符合move()中[规范]时执行,以下相同
&&&&&&&&&&& & move(LEFT);
&&&&&&&&&&&&&&&
&&&&&&&&&&& //当触发Right时&&&&&
&&&&&&&&&&& case KeyEvent.VK_RIGHT :
&&&&&&&&&&&
&&&&&&&&&&& & move(RIGHT);
&&&&&&&&&&&&&&&
&&&&&&&&&&& //当触发Up时&&&
&&&&&&&&&&& case KeyEvent.VK_UP :
&&&&&&&&&&&&&&&
&&&&&&&&&&& & move(UP);
&&&&&&&&&&&&&&&
&&&&&&&&&&& //当触发Down时&&&
&&&&&&&&&&& case KeyEvent.VK_DOWN :
&&&&&&&&&&&&&
&&&&&&&&&&& & move(DOWN);
&&&&&&&&&&&&&&&
&&&&&&& //
重新绘制窗体图像
&&&&&&& // PS:在此例程中,仅进行了角色的简单移动处理
&&&&&&& //
,关于避免闪烁及限制活动区域问题,请见后续
&&&&&&& //
&&&&&&& repaint();
&&&& *用于判定是否允许移动的发生,被move()函数调用
&&& privateboolean isAllow(int
x, int y) {
&&&&&&& //
以(x,y)交点进行数据判定,我们都知道,
在本例中我仅以0作为地板的参数,1作为
墙的参数,由于我们的主角是[人类],而
不是[幽灵],所以当他要[撞墙]时,我们
当然不会允许,至少,是我讲到剧情的触发
&&&&&&& if (map[y][x] == 1) {
&&&&&&& //
不允许移动时,返回[假]
&&&&&&&&&&&
&&&&&&& //
允许移动时时,返回[真]
&&&& *判断移动事件,关联isAllow()函数
&&&& *在Example4中,添加了对于移动方向的整型记录变量direction
&&& privatevoid move(int
&&&&&&& //以转换器判断相关事件,仅执行符合[规范]的操作。
&&&&&&& switch (event) {
&&&&&&&&&&& caseLEFT:
&&&&&&&&&&& &
//依次判定事件
&&&&&&&&&&&&&&& if (isAllow(x-1,
&&&&&&&& &&&&&&&direction =
&&&&&&&&&&&&&&&
&&&&&&&&&&& caseRIGHT:
&&&&&&&&&&&&&&& if (isAllow(x+1,
y)) x++;
&&&&&&&&&&& &&&&direction =
&&&&&&&&&&&&&&&
&&&&&&&&&&& caseUP:
&&&&&&&&&&&&&&& if (isAllow(x,
y-1)) y--;
&&&&&&&& &&&&&&&direction =
&& &&&&&&&&&&&&&
&&&&&&&&&&& caseDOWN:
&&&&&&&&&&&&&&& if (isAllow(x,
y+1)) y++;
&&&&&&&&&&& &&&&direction =
&&&&&&&&&&&&&&&
&&&&&&&&&&& default:
&&&&&&&&&&& &
&&&& *暂无释放键盘事件
&&& publicvoid keyReleased(KeyEvent e) {
&&& &*暂无字符输入事件
&&& publicvoid keyTyped(KeyEvent e) {
&&& //内部类,用于处理计步动作。
&&& privateclass AnimationThread
extends Thread {
&&&&&&& publicvoid run() {
&&&&&&&&&&& while (true) {
&&&&&&&&&&&&&&& // count计步
&&&&&&&&&&&&& &&if (count == 0) {
&&&&&&&&&&&&&&&&&&& count = 1;
&&&&&&&&&&&&&&& } elseif (count
&&&&&&&&&&&&&&&&&&& count = 0;
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& //
重绘画面。
&&&&&&&&&&&&&&& repaint();
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& //
每300毫秒改变一次动作。
&&&&&&&&&&&& &&&try {
&&&&&&&&&&&&&&&&&&& Thread.sleep(300);
&&&&&&&&&&&&&&& } catch (InterruptedException e) {
&&&&&&&&&&&&&&&&&&& e.printStackTrace();
&&&&&&&&&&&&&&& }
&&&&&&&&&&& }
新改角色图如下:
越想越生气……越想越生气……越想越生气……今天就写到这里了……下次继续……
本文标题:
本页链接:您现在的位置: >
来源:www. 作者:
时间: 16:44
人生如梦提起人生这个词,总是只有一个模糊的概念.随着年龄的增长,我对人生逐渐有了新的理解与体会.人生如梦,在不知觉间开始,又在嬉戏间结束.梦一般的人生,让我们期待.梦,本来就很难说.它是一个抽象的词,但又很现实.它总是我们在夜晚的另一种体验,恍惚间便开始了,我在静谧中,体会到了难以言说的感觉,我为此激动过,愉快过,伤心过,甚至还掉过眼泪.它是我现实生活中的一种寄托.我不满的情绪总是在梦中得以安慰.但梦又是人生的精缩版.我们常常为过去的梦而感到惋惜,却从不感慨我们的人生却在悄悄度过.我们的梦是精彩的,我们的人生有何尝不是呢?我们常常抱怨生活的无聊,却不努力去发现精彩.如果梦没有我们奇特的幻想,会如此美妙吗?梦会给我们以无尽的遐想,而人生也留有余地.不同的是,梦只需简单的幻想,可谓日有所思,夜有所梦.而人生是我们所要付出努力的.但他们结构相似,我们从梦中感悟人生.人生也有传奇,也有另人回味的经典.我们为什么不努力去创造呢!抓住正在度过的点滴,也许它是你人生中的高潮,一个足以让你骄傲的精彩.努力啊,珍惜现在,用乐观的态度去面对人生.用自信的态度去创造人生.那么你的人生就是一个令人回味的梦.别让自己的人生是一个让别人不曾想起的梦.人生如梦人生如梦,哭过笑过.一切都过来了,活蹦乱跳到白发苍苍到死去,活了几十年都为了什么?应该是梦吧!人生如梦可是世界就这么折磨人,越是想当名人,就越不如愿,使我终于相信一句话,“要想成功靠自己”是啊!人生如梦,醒来后,发觉自己已经白过了一生,惭愧,惭愧,成功靠自己,这句佳话,当永记在心,不可忘记啊!人生如梦从盘古开天辟地,女娲造人;三国的战场硝烟,唐宋元明清的辉煌与坠落;新中国的建立···古来事如梦,可歌可泣。人生如梦,又可悲可叹,可喜可忧。那些悲悲切切凄凄惨惨的人生大道又藏着无数幻想与猜测,有如一场梦虚虚幻幻,有如一场迷宫或停或走,举棋不定。我们就在这场如梦的虚幻人生中,寻找生命的真谛···观稼轩的“醉里挑灯看剑”的豪爽气概,品清照的“才下心头却上眉头”的千古柔肠,尝苏轼的“东坡肉”他的千古名句“人生如梦,一樽还酹江月。”的飒爽。人生就在不知不觉中更换了几个轮回,唯有不变的是一份执着,一个理想。那些留名千古的名人,一生留下百折不挠的精神,坚贞不屈的品质。看尽人生权贵,一笑而过的豪爽。成为千古绝唱的回响,大气回肠。那些令人憎恨的臭名远扬的佞臣,一生恍如梦,享尽了荣华权贵,“一失足成千古恨”叛国不忠的罪名与他们长眠土地令人耻笑。活着不求轰轰烈烈,名垂青史。可以淡泊明志,可以宁静致远。但不要人云亦云,要活出自我崭新的自我。人生如梦,一晃而过。珍惜岁月,珍重自己,珍爱生命。不要让梦想搁浅在岁月的沙滩上,不要让信念停在枝头随风而去。今天在整理书桌的时候,突然看到尘封已久的日记本。那些看似幼稚单纯的文字,一个个却向我展现了似水流年。那些记载童年的文字,那一张张模糊的笑脸,纯真的友情,都不复存在了。记起往事,哭也罢笑也罢。点点滴滴的记忆,只有信念在随岁月,不断更变。我留下了什么,又带走了什么呢?只有回忆,只有笑脸,只有信念···人生一场空如梦,来也空空,去也空空。唯有信念永存心中。不要让人生在最美的花期憨憨入睡,开出最美的花朵,亮出精彩的青春。让我们带着信念飞翔,不要荒芜在寂寞的沙滩上。人生如梦多少真真切切都随“花自飘零水自流”唯有信念常驻心扉,带给喜悦与汗水。不管前方的路有多艰难,只要努力过了就不枉人生在世,所付出的一切。不要抛弃信念,因为它是你逃离苦难的力量,信心上路的决心。人生如梦,在最美的虚幻梦境里开出最亮丽的风景,才是人生的真谛··&#183人生如梦人生如梦一般,挥挥手就过去了。也许还留下很多遗憾,期待着下辈子去完成,可是下辈子也许还有遗憾,闭上眼,在天空中有你最灿烂的微笑,有你最美好的回忆,梦去了,还有明天在等着你。不知在干什么,在这喧乱的世界,好像缺了点什么?美丽的黄昏即将落下,不知明天的朝霞还会如此辉煌吗?一个人的寂寞,一个人的孤独,独自承受着,失败或胜利,都与泪水擦边,不知每一天可否过的完美?也许期待着世界末日,也许渴望彩虹的出现,流星有时也是一种灾难,明天的琐事,都不得而知。曾带着期望来到这个世界,却又安详的死去,人生如此短暂,你此刻是否有在浪费?无知者的误解?智者的期待?我已经累了,好困,雪花漫过我的身体,闭上眼,彩虹出现了,可惜没有人能懂得它的真谛。上帝赋予了我一切,为何还是不满足?我的心思又有谁能明白?独自一人琢磨着,好像梦一般的度过每一天……人生人常曰:&人生如梦,梦如人生.&是啊!人生苦短数十载,难得一知己,以诉心事.可世事难料,所遇之辈,无非是些庸才,不免使人心酸.问苍天:&何为知己?&天有愧,不敢答.指天而骂曰:&何故欺我?&于是日渐消沉,无人过问.终憔悴而死.人生如梦,梦如人生.生活生活是一次奉献,你要学会付出;生活是一场游戏,你要学会参与;生活是一支风筝,你要学会把握;生活是一个梦想,你要学会追逐;生活是一次感恩,你要学会报答;生活是一种幸福,你要学会享受。人生如梦生活中有许多回让你烦恼的事,我也一样.我有一个妹妹,然而,我妈妈就应此而偏爱她.比如说犯了错误,明明应该是她错才对,可是我的妈妈总是说我的不是,所以我非常地厌恶她.生活中,我总是找她麻烦,处处难为她,她呢,非但没有被我整到,反而到处跟我捣蛋,惹的妈妈对我的意见越来越多,对她的感觉越来越好.但是,我对妹妹的看法,是在一次事情中改变的.那天下午,她因为吹风而感冒了,我妈正好也去出差了,妹妹无力地躺在床上,额头上垫着重重的毛巾.她因为生病而哭闹,嘴里喊着的,竟是我的名字!只听她说:&姐姐,我好难受,姐姐...”我被震惊的在一时间还没有反映过来,回神后急忙把她送进医院,可是......“什么?先天性心脏病?”医院中,妈妈大吼着。是的,我妹妹,没有几天可以活的了。我走进妹妹的病房,她正在看书,清晨的阳光照在她恬静的脸上,仿佛一切死亡都跟她无关。她朝我微微笑着,说:“姐姐,知道我为什么喜欢整你吗?你知道吗?一般人死后,没有多少人会记住她们的,但是,我要你记住我!”我哭了,哭的很凶......几天后,妹妹死了......我在梦中见到妹妹,才发现她是那么的可爱,俏皮。人生如梦,只有当你失去,你才会想起去珍惜......人生如梦偶尔问自己:什么是梦?也许迷迷糊糊,虚度年华就叫做梦吧!人没有不苦恼,不伤心,不烦恼的时候,也许来自学校,也许来自家庭,也许来自同学等。总之,没有人一生是无比快活的,至少是一个成功的人。偶然的一次回想从前的事,却发现很多事情一点印象都没有了,就像做了一场梦,醒来后什么都不记得了。到头来,才发现六年在欢乐与痛苦之中快过完了,心里不禁泛起一阵涟漪,像被什么触动了一下,才突然明白他为什么容忍我了那么多次,从来都没有怪过我,依然对我微笑。我原以为他好欺负,想能欺负一个正校长,真是我无尚的光荣,偶然看他对别人的样子时才终于醒悟。偶然想起曾经与老师的过意不去,才觉得自己傻到了极点,才从恍惚中明白,才明白综合老师为什么那么“怕”我们,我才明白,老师是那么宽容,我自己竟然这么渺小。当我再看到那个跟我差不多高的老师时,我便不会觉得她跟我差不多高,而是比我高很多很多!往事如今才明白,每当再回首那些自以为骄傲的手段对付老师的事时,便不再觉得有什么意义,也许老师永远是对的,又似乎总也是错的吧!往事如烟,模模糊糊,平淡无奇,可当你忽然明白时,才知道什么是对,什么是错。我忘不了我的老师,他(她)们所有的“罪过”我都不记得了,可是,也许错的就是错的吧,我永远也无法原谅那个我从来也没有喜欢过的老师。往事如烟,人生如梦,你偶然回头,你便会发现,在这场梦里,有辛酸,有误会,有快乐,有忧愁......&常记溪亭日暮,沉醉不知归路,兴尽晚回舟,误入藕花深处......''念着念着,我不禁泪流满面......  
  转载分享本站内容www.,请保留文章来源信息和原文链接!
人生如梦作文

我要回帖

更多关于 如花如痴如梦 的文章

 

随机推荐