作业帮 > 字数作文 > 教育资讯

推箱子

来源:学生作业帮助网 编辑:作业帮 时间:2024/09/24 05:26:54 字数作文
推箱子字数作文

篇一:推箱子游戏

推箱子游戏

(说明:随机根据输入情况生成推箱子游戏有解地图,输入数据包括地图尺寸和箱子数量。)

1.课程设计的目的

通过课程设计,巩固Java基础知识,增进编程基本功,熟练eclipse 和 EditPlus 的使用方法,通过该系统的设计与开发,将所学知识真正的应用于实践当中,培养实际动手能力。并在设计实践过程中,学习到更深的知识,掌握先进的Java技术,从而来增强对一个系统设计的整体认识,熟悉软件开发过程,更深刻的理解软件工程的知识。

2.设计方案论证 2.1设计思路

经典的推箱子是一个来自日本的古老游戏,目的是在训练人的逻辑思考能力。在一个狭小的仓库中,要求把木箱从开始位置推放到指定的位置。在仓库有障碍物,稍不小心就会出现箱子无法移动或者通道被堵住的情况,而且箱子只能推,不能拉,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。本游戏一共10关,由易到难,每一关都有初化、按键处理、重置及退出功能。

(1)初始化包括屏幕初始化和每一关卡的初始化,屏幕被初始化宽80像素,高25像素。 (2)按键处理包括移动小人和移动箱子,通过移动上下左右键来控制小人的移动,从而推动箱子,以把箱子推到指定的目的地为过关。

(3)每一关都可以重置,按选项——重新开始可以重置当前关。 (4)可以进行选关操作,按选项——选关可以选择1-10关的任一关。

(3)可以返回至上一位置,按选项——返回可以退回到上一位置,相当于悔一步。 (4)按选项——退出键可以在任何时候退出游戏。

2.2详细设计 2.2.1系统模块图

本程序包括5个模块,分别是初始化模块、画图模块、移动箱子模块、移动小 模块和功能控制模块,如图1所示。各个模块的功能描述如下: (1)初始化模块。

该模块包括屏幕初始化和游戏第一关的初始化。屏幕初始化用于输出欢迎信息和操作提示,游戏每一关的初始化是构建每一关的关卡。 (2)画图模块。

该模块主要是被其它模块调用,用于画墙、在空地画箱子、在目的地画箱子、画小人和画目的

1

地。

(3)移动箱子模块。

该模块用于移动箱子,包括目的地之间、空地之间和目的地与空地之间的箱子移动。 (4)移动小人模块。

该模块用于控制小人移动,从而推动箱子到目的地。 (5)功能控制模块。

该模块是几个功能函数的集合,包括屏幕输出功能、指定位置状态判断功能和关卡重置功能。

2.2.2任务执行流程图

游戏从第一关开始,按上下左右方向键控制小人移动来推动箱子,可以在游戏中的任何时候按退出键退出。如果游戏无成功希望,可以按空格键回到当前任务的开始状态;如果成功完成当前关,则进入下一关,如果当前关是最后一关,则显示通关信息,提示游戏结束。

游戏同时还具有时间和步数的记录,在开始游戏之前首先把图片添加到pic目录下,程序会自动获取该目录下的所有文件,

图1 系统模块图

2

图2 任务流程图

2.2.3 类及实现的功能

本程序包括三个类文件:主类Main.java,类Gui.java,类Readmap.java。其中类Main.java包含main()方法。Main extends JFrame. Gui 继承 JFrame 并且实现ActionListener这个接口。AbstractAction() Action 接口提供 ActionListener 接口的一个有用扩展,以便若干控件访问相同的功能。Readmap.java主要是实现地图的初始化以及每一关地图的重载。keyPressed的功能是响应工人和箱子的移动以及工人、箱子、墙之间的碰撞检测。

3

表1 成员变量表

成员变量 开始状态 窗口高度 窗口宽度 计时器 延时 开始时间 步数 地图容器 玩法介绍 开始状态

变量类型 Boolean int int Timer int Date int MapPanel String Boolean 表2方法表

Puzzle() backaction() getmap() StartGame() endgame() getmap()/ menuShowClik() actionPerformed() menuExit() flush()

A、地图设计

游戏中用一个 MapFactory 类操作地图,其中用三维矩阵记录游戏地图信息。三维矩阵便于管理,如果要加入新关卡,只需要在三维矩阵中加入二维矩阵就可以了,同时,可以加入不同大小的地图。 a、 地图矩阵信息 // 地图坐标状态描述

1、private final int Black = -2; // 外界 2、private final int Wall = -1; // 墙 3、private final int Ground = 0; // 地面

4

名称 Start fHeight fWidth timer delay starttime steps mapPanel instruction Start

创建游戏窗口和设置图

标 后台操作 返回地图的方法 开始游戏控制,更新开始菜单 结束游戏控制 返回地图的方法 在游戏中显示完整图片 动作演示 退出游戏 清空缓存

弹出结束窗口 调用类 spite() 调用类class ShowImage

4、private final int Boxes = 1; // 箱子

5、private final int Boxes_position = 2; // 箱子位置

6、private final int Boxes_in_place = 3; // 箱子移动到合适位置 7、矩阵中标有 数字 4 的位置表示 该位置是游戏主角的初始位置 B、游戏过程设计

游戏中过程中,最为主要地方在于对地图矩阵,以及主角状态信息(包括位置、行走状态等)的维护,主角每行走一步,就更新一次地图信息和主角状态信息。另外一个比较重要的地方是游戏状态的保存方面。在该游戏中,使用栈结构保存主角每次行走的状态信息(包括游戏矩阵和主角位置等)。为保存主角信息,特别开设了一个undoState类,该类主要作用就是保存玩家每一步的游戏状态,便于撤销。

在游戏画面处理和逻辑判断方面,都放在了 GameSurfaceView 类里面。因为考虑到该游戏的逻辑判断和画面绘制较为简单,不需要长时间的运算,所以就把很多功能都放在了主线程里。因为采取的是单线程,所以,重画操作都是 事件驱动的。 1、地图载入、绘制

根据玩家选择的关卡,载入地图矩阵。在载入地图的过程中,根据屏幕大小,对图片进行了缩放(使用矩阵缩放)。这些功能主要在 setMapAndactorPosition(); initPicture();函数中实现 2、地图切换

玩家每过一关,就载入一张新地图,地图信息都保存在 private int[][] map 对象里面,然后重新绘制地图。该功能主要在 nextPass() 函数实现。 3、重玩

如果玩家选择重玩,只要重新把目前关卡的地图载入就可以了,同时删除原有的信息。该功能在replacePass()函数实现。 4、后退\撤销

如果玩家选择该功能,主要从栈对象中 private Stack save 弹出前一步的游戏状态记录即可。该功能主要在 undo() 函数实现。 5、游戏是否结束

玩家每移动一步,就判断是否所有箱子都移动到了相应位置(实现该判断的方法有很多,考虑到游戏的可扩展性,在该游戏中主要通过 isGameover() 遍历地图矩阵 来进行判断的,如果游戏结束则提示玩家过关,在 gameState() 函数中实现。

3.设计结果与分析

5

篇二:推箱子需求分析

《推箱子》

需求报告分析说明

NIIT

项目名称: 推箱子 设计人姓名:戴佳陵

编写日期:2012年5月8日

目录

? 前言

目的 ................................................ 1.1 范围 ................................................ 1.2 ? 项目介绍

产品描述 ......................................... 2.1 产品功能 ......................................... 2.2 功能系统详细说明 ................................. 2.3 ? 项目周期

项目周期表 ....................................... 3.1 ? 产品技术架构

技术架构介绍 ..................................... 4.1

? 前言 本软件是使用C#语言开发的一款具有开发智力,增强逻辑推理的小游戏。 1. 目的 现在大多数的游戏,是消极型的、容易让人沉迷进去的纯娱乐型游戏,为了打造一个良好的游戏环境,所以我们设计出了这一款游戏软件,为的是让玩家能够在娱乐的过程中,还能开动脑筋,增强逻辑推理能力。 2. 范围 本软件主要针对,沉迷于纯娱乐型游戏,不思进行、不知动脑的群体,使玩家既能娱乐,又能开动脑筋,从而达到娱乐中学习,学习中娱乐的效果。

? 项目介绍 1. 产品描述 《推箱子》是单机游戏软件。游戏的界面是由一些不同的格子绘成了迷宫地图。当游戏开始时,根据不同的地图,我们需要箱子推放到规定的摆放区域,进入下一关卡。 2. 产品功能 《推箱子》软件中,玩家通过移动地图中的小人,进而推动上面的箱子,目标将地图中的每个一个箱子都推放到规定摆放的区域,算是完成本关卡,可以进入下一关。 3. 功能系统详细说明 a) 首先,我们打开软件,可以看到整个游戏界面,分别由:菜单栏(图2-1)、游戏区(图2-2)组成。

图2-1 图2-2 b) 其次,我们通过菜单栏中的游戏(图2-3)和工具栏,可以看到一些游戏相关的操作,如:新游戏(Q)、上一关(1)、下一关(2)、选关(F)等操作

图2-3 图2-4

c) 通过选关操作,我们可以打开,选关对话框(图2-4),我们可以输入数字进行选关。 d) 玩家需要通过使用W、S、A、D键来控制游戏中小人物的走向,来推动地图中的箱子,使箱子能够顺利的移动到坑当中去。 e) 小人物每次只能推动一个箱子,并且只能使用推的方法来进行游戏。 f) 顺利的将所有的箱子都推到坑当中去,及为顺利通过本关卡,由于本软件中没有设置撤消操作,所以玩家在进行每一步操作的时候,都必须谨慎的走好每一步,并计算好下一步甚至下N步,否则将会一步错则满盘皆输的情况。

g) 如果玩家有任何对游戏的操作不明白的地方,我们还可以通过F1,打开我们的帮助系统(图2-7),找出相关的游戏操作帮助,进行了解如何游戏。

? 项目周期

? 产品技术架构 1. 技术架构介绍 本软件使用Microsoft Visual Studio 2010 旗舰版,是基于.NET平台,使用C#语言编写的,该软件面向对象的可视化设计,通俗易懂,便于操作。

篇三:毕业设计之推箱子

安徽大学

本科毕业论文(设计、创作)

题 目: 面向过程的推箱子设计

学生姓名: 王** 学号: P010*****

院(系): 电子信息工程专业 专业: 电子信息工程

入学时间: 2010 年 9 月

导师姓名: 李** 职称/学位: 副教授/硕士

导师所在单位: 电子信息工程学院

完成时间: 2014 年 6 月

面向过程的推箱子设计

摘 要

推箱子游戏是一款很有趣味的游戏,目的在于训练玩家的逻辑思维能力。游戏中通过控制人物上下左右移动,将箱子推到指定的地点,从而通关游戏。本文主要介绍了推箱子游戏的游戏规则、需求分析、流程设计以及游戏中的主要算法的分析、设计和实现。并通过游戏规则分析,确定任务流程,展开设计。最终在VC6.0和OpenCV上实现图像加载、显示和游戏交互。本次设计实现了推箱子游戏的基本功能。

关键词:推箱子;图像处理;

OpenCV

Procedure Oriented Sokoban Design

Abstract Sokoban game, a very interesting game, which is aimed at training logical thinking ability of player. By controlling the porters moved from top to bottom, or left to right, and push the box to the specified location, and complete the game at last. This paper mainly introduces the rules and features of Sokoban game, analysis of the demand of it’s design, execution process, analysis and implementation of algorithm design in the game. This design was analyzed by rules of the game, determining the task flow and analysis the system, and finally realized image load, display, mutual in VC6.0 and OpenCV. The design realized the basic functions of Sokoban game.

Keywords: Sokoban; image processing; OpenCV

目 录

1 引言 ............................................................................................................................................. 1

2 推箱子游戏概述 ......................................................................................................................... 2

2.1 游戏起源 .................................................................................................................................. 2

2.2 游戏的操作方法 ...................................................................................................................... 2

2.3 游戏规则 ............(来自:WWw.SmhaiDa.com 海达范文网:推箱子)...................................................................................................................... 2

3 使用软件简介 ............................................................................................................................. 2

3.1 VC6.0简介 ............................................................................................................................... 2

3.2 OpenCV简介 ........................................................................................................................... 2

4 任务描述 ..................................................................................................................................... 3

4.1 界面显示 .................................................................................................................................. 3

4.2 实现键盘操作 .......................................................................................................................... 3

4.3 图像变化显示 .......................................................................................................................... 3

4.4 游戏胜负的判断 ...................................................................................................................... 3

5 系统分析 ..................................................................................................................................... 3

5.1 界面设计 .................................................................................................................................. 3

5.2 数据组织 .................................................................................................................................. 3

5.3 游戏执行流程图 ...................................................................................................................... 4

5.4 程序中各个函数的简要介绍 .................................................................................................. 5

6 推箱子游戏算法的设计和实现 ................................................................................................. 5

6.1 地图的绘制与读取 .................................................................................................................. 5

6.2 查找人物坐标 .......................................................................................................................... 5

6.3 键盘操作 .................................................................................................................................. 6

6.4 游戏胜利的判断 ...................................................................................................................... 7

6.5 整合与测试 .............................................................................................................................. 7

7 结束语 ......................................................................................................................................... 8

主要参考文献 ................................................................................................................................. 9

致 谢 ........................................................................................................................................... 10

1 引言

目前,在中国乃至全世界,游戏产业已经逐渐成为微控制器领域的一个相当庞大的分支。随着网络和智能手机的兴起,各种网络游戏和手机游戏在国内层出不穷。从魔兽世界、英雄联盟到水果忍者、神庙逃亡,巨大的市场需求量使游戏行业在中国飞速发展。未来,游戏必将成为网络竞争中的主角,它的商业利益和商业价值是无法估量的。中国,一个人口众多的国家,随着人们生活水平的提高,温饱已不是最终的目的,我们寻求的是更加多姿多彩的生活,那我们又怎能错过游戏这一最佳休闲娱乐项目呢?所以游戏在我国的发展前景一片大好[1]。

经典的推箱子是一个来自日本的古老游戏,目的在于训练人的逻辑思维能力。在一个狭小的仓库中,要求把箱子推到指定的位置,稍有不慎就会出现箱子无法移动或通道被堵住的情况。所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。目前,推箱子作为一个经典游戏,非但没有没落,还被很多编程爱好者开发出了各种版本、各种类型。本次毕业设计我将就推箱子游戏做一个研究。通过本次设计让我能更好的将理论与实践相结和,加深对理论的理解,同时培养我的动手意识,强化专业知识,为以后研究更加复杂的设计打下坚实的基础。本设计主要是基于VC6.0和OpenCV软件实现的。

篇四:C语言课程设计--推箱子

山东交通学院

C语言课程设计

推箱子游戏

院(系)别 信息工程系 班 级 信息093 学 号 090810313 姓 名 陈新龙 指导教师 ****** 时 间 2010-04-06—2010-04-10

课 程 设 计 任 务 书

题 目 推箱子 系 (部) 信息工程系 专 业 计算机科学与技术 班 级 信息093班 学生姓名 陈新龙 学 号 090810313

04 月 06 日至 04 月 10 日 共 1 周

指导教师(签字) 系 主 任(签字)

2010年 04月 11日

篇五:推箱子程序

C语言编写推箱子程序

摘要

本文以Turbo C作为编程工具,编写推箱子游戏,并给出最后成功运行的推箱子游戏C语言源程序。

关键词: C语言 编程 游戏 推箱子

一、程序设计

1.1程序的目标

字符模式,四个简单任务的推箱子游戏。

1.2程序任务的流程

二、程序的具体设计

2.1程序的开始

#include

#include

#include

#include

#include

#include

2.2定义二维数组

ghouse来记录屏幕上各点的状态,其中:0表示什么都没有,'b'表示箱子,'w'表示墙壁,'m'表示目的地,'i'表示箱子在目的地。

char ghouse[20][20];

2.3直接写屏函数

char far *screen=(char far* )0xb8000000;

void putchxy(int y,int x,char ch,char fc,char bc)

{

screen[(x*160)+(y<<1)+0]=ch;

screen[(x*160)+(y<<1)+1]=(bc*16)+fc;

}

2.4定义判断是否胜利的数据结构

typedef struct winer {

int x,y;

struct winer *p;

}winer;

2.5 箱子位置的数据结构

typedef struct boxs {

int x,y;

struct boxs *next;

}boxs;

2.6在特定的坐标上画墙壁并用数组记录状态的函数

void printwall(int x,int y)

{

putchxy(y-1,x-1,219,GREEN,BLACK);

ghouse[x][y]='w';

}

2.7在特定的坐标上画箱子并用数组记录状态的函数

void printbox(int x,int y)

{

putchxy(y-1,x-1,10,WHITE,BLACK);

ghouse[x][y]='b';

}

2.8 在特定的坐标上画目的地并用数组记录状态的函数

void printwhither1(int x,int y,winer **win,winer **pw)

{

winer *qw;

putchxy(y-1,x-1,'*',YELLOW,BLACK);

ghouse[x][y]='m';

if(*win==NULL)

{

*win=*pw=qw=(winer* )malloc(sizeof(winer));

(*pw)->x=x;(*pw)->y=y;(*pw)->p=NULL;

}

else

{

qw=(winer* )malloc(sizeof(winer));

qw->x=x;qw->y=y;(*pw)->p=qw;(*pw)=qw;qw->p=NULL;

}

}

2.9 在特定的坐标上画目的地并用数组记录状态的函数

void printwhither(int x,int y)

{

putchxy(y-1,x-1,'*',YELLOW,BLACK);

ghouse[x][y]='m';

}

2.10在特定的坐标上画人的函数

void printman(int x,int y)

{

gotoxy(y,x);

_AL=02;_CX=01;_AH=0xa;

geninterrupt(0x10);

}

2.11在特定的坐标上画箱子在目的地上并用数组记录状态的函数 void printboxin(int x,int y)

{

putchxy(y-1,x-1,10,YELLOW,BLACK);

ghouse[x][y]='i';

}

2.12初始化函数,初始化数组和屏幕

void init()

{

int i,j;

for(i=0;i<20;i++)

for(j=0;j<20;j++)

ghouse[i][j]=0;

_AL=3;

_AH=0;

geninterrupt(0x10);

gotoxy(40,4);

printf("Welcome to come box world!"); gotoxy(40,6);

printf("Press up,down,left,right to play."); gotoxy(40,8);

printf("Press Esc to quit it.");

gotoxy(40,10);

printf("Press space to reset the game."); gotoxy(40,12);

printf("Producer : wangdehao."); gotoxy(40,14);

printf("Mar. 30th 2003.");

}

2.13第一关的图象初始化 winer *inithouse1()

{

int x,y;

winer *win=NULL,*pw;

for(x=1,y=5;y<=9;y++)

printwall(x+4,y+10);

for(y=5,x=2;x<=5;x++)

printwall(x+4,y+10);

for(y=9,x=2;x<=5;x++)

printwall(x+4,y+10);

for(y=1,x=3;x<=8;x++)

printwall(x+4,y+10);

for(x=3,y=3;x<=5;x++)

printwall(x+4,y+10);

for(x=5,y=8;x<=9;x++)

printwall(x+4,y+10);

for(x=7,y=4;x<=9;x++)

printwall(x+4,y+10);

for(x=9,y=5;y<=7;y++)

printwall(x+4,y+10);

for(x=8,y=2;y<=3;y++)

printwall(x+4,y+10);

printwall(5+4,4+10);

printwall(5+4,7+10);

字数作文