搜档网
当前位置:搜档网 › 在visual c++下编写的c语言推箱子游戏

在visual c++下编写的c语言推箱子游戏

在visual c++下编写的c语言推箱子游戏
在visual c++下编写的c语言推箱子游戏

山东交通学院

C语言课程设计

推箱子游戏

院(系)别信息工程系

班级信息093 学号100819220

姓名贺可晓

指导教师 ****** 时间2011-08-28—2011-09-12

课程设计任务书

题目推箱子

系 (部) 信息工程系

专业电气工程及其自动化

班级电气102班

学生姓名贺可晓

学号 100819220 08 月 28 日至 09 月 2 日共 1 周

指导教师(签字)

系主任(签字)

2011 09 02

成绩评定表

私達の実践の能力を高めるため、学んだ知識を運用することができて行って更に創造して、学校は特に1週間手配して、私達にVisual C++の課程の設計の実習を行わせます.

このフ?イルの詳しい説明はVisual C++6.0環境の下で、1つのソフトウェ?の過程を設計して、このソフトウェ?は箱を押して遊戯することです。

つきましてはこのソフトウェ?の機能は、ユーザーは字の符を輸入する。字の符“a”は向左走を代表して、字の符“s”は代表して下で歩いて、字の符“d”は向右走を代表して、字の符“w”は向上して行くことを代表して、人を制御することは箱を行き先を押すことができてすぐ勝利した。ソフトウェ?の目的は人を鍛錬する能力を思惟することです。

以下は課程仕様を通過して、順序ソフトウェ?からの説明が提示することを操作して、手順は説明することを調節して、総括した方面を開発して、この手順を詳説する製造した過程和作は用いる、諸般のが執行されることができる操縦。

关键字:箱が遊戯を押す,VC++6.0, 源手順

前言 (1)

1 课程设计概述 (2)

1.1推箱子游戏软件功能概述 (2)

1.2Visual C++6.0概述 (2)

2推箱子游戏软件总体设计 (2)

2.1推箱子游戏软件总体设计思想 (2)

2.2总体设计流程图 (4)

3推箱子游戏软件详细设计 (5)

3.1两个主要问题 (5)

3.1.1 地图的生成 (5)

3.1.2 人或人和箱子的移动 (5)

4程序测试........................................... 错误!未定义书签。

4.1菜单界面.................................... 错误!未定义书签。

4.2游戏中的界面................................ 错误!未定义书签。5课程设计总结.. (6)

致谢 (6)

参考文献 (7)

6附录(程序源代码) (8)

山东交通学院课程设计报告

前言

随着计算机技术的发展,可视编程技术占有了越来越重要的作用。Visual C++6.0 是一种功能强大行之有效的可视化编程工具。因此此软件是在Visual C++6.0环境下编写的。对于我们,随着学习的深入,已经大体掌握了Visual C++6.0环境下的程序开发。为了将我们的编程能力提升到一个更高的水平,深化面向对象的编程思维和解决问题的能力,值此课程设计周期间,进行基于Visual C++6.0环境的软件开发,先以推箱子游戏作为开始,对Visual C++6.0环境和C语言的模块编程设计进行回忆和熟悉,有利于促进面向对象程序设计思想的理解,使得在此基础上的下一个软件的开发进行的更加顺利。

本文档详细叙述了基于Visual C++6.0环境下的推箱子游戏软件的设计过程以及程序源代码。

本文档从概要设计,详细设计,参考源程序代码以及显示程序运行的截屏等方面详尽的介绍了软件开发过程。

此次推箱子游戏软件的开发目的是使我们用最基础的C语言程序设计的方式来思考和解决问题的能力,并且可以掌握二维数组的使用、循环控制的使用、地图的设计和使用以及C语言语法。

本文档的安排如下:

第一章主要介绍了对面向对象C++语言以及Visual C++6.0编程环境。

第二章主要的介绍说明了推箱子游戏软件的编程思想和详细设计。

第三章主要对推箱子游戏软件进行调试,运行程序并截图,显示运行界面和结果。

第四章主要介绍了软件开发过程中遇到的一些问题,对该软件进行的一个总结。

程序在设计的过程中遇到的问题已及时更正,但由于编者的能力和水平有限,推箱子游戏软件和文档中不免会出现一些不期待的错误,望文档读者能够理解和体谅,并欢迎提醒和纠正,在此表示感谢以及敬意。

班级:信息093 姓名:陈新龙学号:090810313

1 课程设计概述

1.1推箱子游戏软件功能概述

在一个狭小的仓库中,把木箱放到指定的位置,通过控制人的走向来推箱子移动,箱子只能推动不能拉动,一次只能推动一个箱子。

稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道。

通过此游戏可以锻炼一个人的逻辑思维能力。

1.2Visual C++6.0概述

Visual C++是微软公司的重要产品之一, 是一种功能强大行之有效的可视化编程工具。它提供了MFC类库,使用户可以方便的开发自己想实现的功能。Visual C++6.0的主要特点:

(1)自动化和宏功能。

(2)可以灵活地定制工具栏和菜单。

(3)可以直接运行和调试程序,还可以使用宏语言来自动操作调试器。

(4)支持Internet连接。

(5)一个新的便捷的项目系统可以允许一个工作区内包含多个不同的项目类型。

(6)在工作区内可以包含多个并列的工程文件。

(7)可以在对话框中使用WizardBar将程序同可视化元素联系起来。

(8)Find in File命令支持两个独立的输出窗格,可以保存上一次搜索的结果。

这些新特性可以更好地利用Visual C++开发工具进行Windows应用程序开发。

2推箱子游戏软件总体设计

2.1推箱子游戏软件总体设计思想

推箱子游戏软件的功能是锻炼人的逻辑思维能力。

推箱子游戏软件的功能模块有:

(1)提供菜单界面,方便用户对程序个功能进行选择,选择要实现的功能按相应的键进入该功能。

山东交通学院课程设计报告

(2)地图的生成,用二维整型数组来构成地图,其中数字代表特殊的符号。

(3)移动,人或人和箱的移动,接受用户输入的一个字符,控制人的走向,并且可以在允许的情况下推动箱子。

(4)时间的统计,可以看整个程序(相当于游戏)运行时所用的时间。

(5)清屏功能,使用了清屏函数,当在游戏中时可以直接返回主菜单,

(6)利用了辅助色彩函数,使游戏界面更加好看,美观。

在源程序中声明并定义了void draw_map(int map[10][12]) //地图函数,void move(int map[10][12]) //移动函数

使用了:#include //标准输入输出头文件

#include //system函数的头文件

#include //getch函数的头文件

#include "time.h" //调用时间函数的头文件

多种头文件。

程序中还应用了全局变量:char le; //控制关数的全局变量

char input; //接收按键字符程序分为多个小模块,通过调用实现各种功能,增强了程序的可建设性。

班级:信息093 姓名:陈新龙学号:090810313 2.2总体设计流程图

图2-1-2 总体设计流程

3推箱子游戏软件详细设计

3.1两个主要问题

设计中的两个主要需解决的问题是:怎样生成地图、怎样实现人或人和箱子的移动。

3.1.1 地图的生成

设计中用二维整型数组中的数字元素表示不同的物体,比如0代表空地,1代表墙,2代表非游戏的填充内容(非必须内容),可以使地图规则,3代表目的地,4代表箱子,6代表人。然后用一个switch语句给每个数字赋予不同的符号,在输出二维数组,生成地图。

3.1.2 人或人和箱子的移动

设计中要想使人移动,首先要找到人的起始位置,然后才能开始移动。人向四个方向移动的原理是相同的,我们可以先研究一个方向的移动,找到人的位置后,以人向上走为例,因为向上走嘛(可以通过数组下标表示)。

(1)要判断人前面(上一行),是否为空地,是空地则可以移动,移动后判断并改变人员原位置的数值元素和空地原位置的数值元素;否则不移动。

(2)如果人前面是目的地,人也是可以移动的,同样判断人原位置数值元素,并改变人员位置的数值元素和前一位置的数值元素。

(3)如果人前是在空地上的箱子。如果箱子前面又是空地,则可以移动,改变箱子前位置的数值元素,还是判断原位置的数值元素,然后改之;如果箱子前为目的地,和上面说的一样移动和改数值元素,只是多了计分这一步。

(4)如果人前是已经进入目的地的箱子。如果箱子前又是空地,则可以移动箱子,但是要减分,改变空地位置的数值元素,判断人和箱子原地的数值元素,并改之;如果箱子前是另一目的地,方法同上,只是不减分。用分数控制箱子是否已全在目的地。

(5)每一次的移动,必须要清屏,然后再显示一次地图,这样便可以实现人或人和箱子的移动。

4课程设计总结

为了提高我们的实践能力,让我们学以致用,能灵活运用所学的知识进行再创造,学校特安排我们进行为期一周的Visual C++课程设计实习,并安排了指导老师帮助辅导,让我们在规范化、严谨化、实用化上面有了很大进展。

在此次推箱子游戏程序开发过程中,有很多东西值得我们思考并总结。

开发过程大体可分为以下几个步骤:

(1)思考总体设计方案:总体结构和模块外部设计,功能分配。思考要实现整个程序大体需要的几个模块和其中用到的Visual C++语言基本操作符、语句等。

(2)画出总体设计方案流程图:用流程图的形式展现你的基本编程思想。

(3)流程图具体化:即将流程图中的几大模块的具体实现思考清楚,可以用流程图的形式展现.并想好实现的关键代码。

(4)编辑程序代码:这是一个至关重要复杂而且需要反复修改的环节,在此环节中你将发现总体设计和模块思想会存在很多问题,需不断改进.如何实现各函数功能,达到预期效果也将是一项繁复的工作。

(5)代码的调试:在Visual C++6.0环境下输入代码并进行调试和正确运行。在调试过程中会遇到很多需要精化的地方,需要十足的耐心与细心,不断改进完善程序。

(6)最后修饰:程序可以正确运行之后,再不影响程序功能的情况下,运用各种辅助性符号,使界面更加美观漂亮,操作更人性化.增强程序的新意与可行性。

通过这次课程设计,使我们更加熟悉的掌握了Visual C++语言的运用。帮助我们熟悉了更多Visual C++语言的功能,提高了我们的动手能力,学到了许多解决实际问题的宝贵经验.同时也挖掘出了我们潜在的能力,使我们对自己更有自信,对编程也更有兴趣。我相信,只要努力、勤奋、坚持不懈,就没有什么做不到的事,不能还没开始就退缩,要勇于拼搏,敢于创新。

致谢

最后,在这里郑重的感谢张老师的帮助,让我得到了许多意想不到的收获。也感谢学校提供给我们这次宝贵的实践机会,让我们可以动手动脑,大大提高了个人的能力和素质。

参考文献

[1] 马安鹏.Visual C++程序设计导学。北京:清华大学出版社,2002

[2] 电子书籍. Visual C++技术内幕(第四版).网址:https://www.sodocs.net/doc/a6102054.html,

[3] Beck Zaratian.Microsoft Visual Visual C++ 6.0程序员指南.希望图书创作室译.北京:北京希望电脑公司出品,1998

[4]Richard C.Leinecker,Tom Archer. Visual C++ 6 宝典.张艳,张谦译.北京:电子工业出版社,1999

[5] 李强,贾云霞. Visual C++项目开发实践.北京:中国铁道出版社,2004

[6] 郑莉,董渊,张瑞丰.C++语言程序设计.2003.

[7] H.M.Deitel,P.J.Deitel. Small C++ How to Program.2006.

[8]谭浩强,C程序设计(第三版)。北京:清华大学出版社,2005(2007重印)

5附录(程序源代码)

#include //标准输入输出头文件

#include //system函数的头文件

#include //getch函数的头文件

#include "time.h" //调用时

int map1(int a[9][10]);

char move(char t,int map[9][10])

{int i,j,x,y;

system("CLS"); //清屏

for(i=0;i<9;i++) // 查找当前人位置

{for(j=0;j<10;j++)

if(map[i][j]==4 || map[i][j]==6)

{x=i,y=j;};}

switch(t)

{case 'w':

{ if(map[x-1][y]==1)//如果人面前时路

{map[x-1][y]=4;

if(map[x][y]==4) map[x][y]=1;

else map[x][y]=2;}

else

if(map[x-1][y]==3)//人面前是箱子

{if(map[x-2][y]==2)// 人前箱子箱子前面是空位

{map[x-1][y]=4;map[x-2][y]=5;

if(map[x][y]==4) map[x][y]=1;

else map[x][y]=2;}

else

if(map[x-2][y]==0 || map[x-2][y]==3 || map[x-2][y]==5)//人前是箱子箱子前面是墙箱子已在空位上的箱子

{printf("\a");}

else if(map[x-2][y]==1)// 人前是箱子箱子前面是路

{map[x-1][y]=4;map[x-2][y]=3;

if(map[x][y]==4) map[x][y]=1;

else map[x][y]=2;};}

else if(map[x-1][y]==0) //人前是墙

{printf("\a");}

else if(map[x-1][y]==2)

{map[x-1][y]=6;

if(map[x][y]==4) map[x][y]=1;

else map[x][y]=2;}

else if(map[x-1][y]==5)//人前是已在空位的箱子

{if(map[x-2][y]==2)//人前是已在空位是的箱子箱子前是一个空位

{map[x-1][y]=6;map[x-2][y]=5;

if(map[x][y]==4) map[x][y]=1;

else map[x][y]=2;}

else if(map[x-2][y]==0 || map[x-2][y]==3 || map[x-2][y]==5)//人前是已在空位是的箱子箱子前是墙箱子已在空位上的箱子

{printf("\a");}

else if(map[x-2][y]==1)//人前是已在空位上的箱子箱子前是路

{map[x-1][y]=6;map[x-2][y]=3;

if(map[x][y]==4) map[x][y]=1;

else map[x][y]=2;};};

};break;

case 'd':

{ if(map[x][y+1]==1)//如果人面前时路

{map[x][y+1]=4;

if(map[x][y]==4) map[x][y]=1;

else map[x][y]=2;}

else

if(map[x][y+1]==3)//人面前是箱子

{if(map[x][y+2]==2)// 人前箱子箱子前面是空位

{map[x][y+1]=4;map[x][y+2]=5;

if(map[x][y]==4) map[x][y]=1;

else map[x][y]=2;}

else

if(map[x][y+2]==0 || map[x][y+2]==3 || map[x][y+2]==5)//人前是箱子箱子前面是墙箱子已在空位上的箱子

{printf("\a");}

else if(map[x][y+2]==1)// 人前是箱子箱子前面是路

{map[x][y+1]=4;map[x][y+2]=3;

if(map[x][y]==4) map[x][y]=1;

else map[x][y]=2;};}

else if(map[x][y+1]==0) //人前是墙

{printf("\a");}

else if(map[x][y+1]==2)

{map[x][y+1]=6;

if(map[x][y]==4) map[x][y]=1;

else map[x][y]=2;}

else if(map[x][y+1]==5)//人前是已在空位的箱子

{if(map[x][y+2]==2)//人前是已在空位是的箱子箱子前是一个空位

{map[x][y+1]=6;map[x][y+2]=5;

if(map[x][y]==4) map[x][y]=1;

else map[x][y]=2;}

else if(map[x][y+2]==0 || map[x][y+2]==3 || map[x][y+2]==5)//人前是已在空位是的箱子箱子前是墙箱子已在空位上的箱子

{printf("\a");}

else if(map[x][y+2]==1)//人前是已在空位上的箱子箱子前是路

{map[x][y+1]=6;map[x][y+2]=3;

if(map[x][y]==4) map[x][y]=1;

else map[x][y]=2;};};

};break;

case 's':

{ if(map[x+1][y]==1)//如果人面前时路

{map[x+1][y]=4;

if(map[x][y]==4) map[x][y]=1;

else map[x][y]=2;}

else

if(map[x+1][y]==3)//人面前是箱子

{if(map[x+2][y]==2)// 人前箱子箱子前面是空位

{map[x+1][y]=4;map[x+2][y]=5;

if(map[x][y]==4) map[x][y]=1;

else map[x][y]=2;}

else

if(map[x+2][y]==0 || map[x+2][y]==3 || map[x+2][y]==5)//人前是箱子箱子前面是墙箱子已在空位上的箱子

{printf("\a");}

else if(map[x+2][y]==1)// 人前是箱子箱子前面是路

{map[x+1][y]=4;map[x+2][y]=3;

if(map[x][y]==4) map[x][y]=1;

else map[x][y]=2;};}

else if(map[x+1][y]==0) //人前是墙

{printf("\a");}

else if(map[x+1][y]==2)

{map[x+1][y]=6;

if(map[x][y]==4) map[x][y]=1;

else map[x][y]=2;}

else if(map[x+1][y]==5)//人前是已在空位的箱子

{if(map[x+2][y]==2)//人前是已在空位是的箱子箱子前是一个空位

{map[x+1][y]=6;map[x+2][y]=5;

if(map[x][y]==4) map[x][y]=1;

else map[x][y]=2;}

else if(map[x+2][y]==0 || map[x+2][y]==3 || map[x+2][y]==5)//人前是已在空位是的箱子箱子前是墙箱子已在空位上的箱子

{printf("\a");}

else if(map[x+2][y]==1)//人前是已在空位上的箱子箱子前是路

{map[x+1][y]=6;map[x+2][y]=3;

if(map[x][y]==4) map[x][y]=1;

else map[x][y]=2;};};

};break;

case 'a':

{ if(map[x][y-1]==1)//如果人面前时路

{map[x][y-1]=4;

if(map[x][y]==4) map[x][y]=1;

else map[x][y]=2;}

else

if(map[x][y-1]==3)//人面前是箱子

{if(map[x][y-2]==2)// 人前箱子箱子前面是空位

{map[x][y-1]=4;map[x][y-2]=5;

if(map[x][y]==4) map[x][y]=1;

else map[x][y]=2;}

else

if(map[x][y-2]==0 || map[x][y-2]==3 || map[x][y-2]==5)//人前是箱子箱子前面是墙箱子已在空位上的箱子

{printf("\a");}

else if(map[x][y-2]==1)// 人前是箱子箱子前面是路

{map[x][y-1]=4;map[x][y-2]=3;

if(map[x][y]==4) map[x][y]=1;

else map[x][y]=2;};}

else if(map[x][y-1]==0) //人前是墙

{printf("\a");}

else if(map[x][y-1]==2)

{map[x][y-1]=6;

if(map[x][y]==4) map[x][y]=1;

else map[x][y]=2;}

else if(map[x][y-1]==5)//人前是已在空位的箱子

{if(map[x][y-2]==2)//人前是已在空位是的箱子箱子前是

用c语言编写一个成绩管理系统

程序说明:有N个学生,每个学生的数据包含学号(不重复)、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:(1)主菜单学生成绩管理系统 1、成绩录入 2、成绩查询 3、成绩统计 4、退出(2)各菜单项功能① 成绩录入:输入学生的学号、姓名及三门课的成绩;② 成绩查询:(至少一种查询方式)。 v 按学号查询学生记录。 v 查询不及格学生的记录。③成绩统计: v 计算学生的平均分; v 根据学生的平均分高低,对学生的数据进行排序后输出; v 对学生单科成绩排序,输出学生姓名与该科成绩;④退出系统:退出整个系统(即主菜单)。(3)结构体数组: #define N 30 struct student {int num; /* 定义学号*/ char name[20]; /* 定义姓名*/ float score[3]; /* 定义存贮三门课成绩的数组*/ float average; /* 定义平均成绩*/ };struct student stu[N]; /* 定义结构体数组,存贮多个学生的记录*/ . #include #include #include struct student { int num; char name[20]; float score[4]; float average; } stu[10000]; long t,max; bool unpass[1000]; FILE *fstu=fopen("stud.dat","at+"); int init() { int no,i; float s[4],ave; char nam[20]; while (!feof(fstu)) { fscanf(fstu,"%d",&no); fscanf(fstu,"%s",nam); fscanf(fstu,"%f%f%f%f",&s[1],&s[2],&s[3],&ave);

基于Android推箱子游戏的设计与实现毕业论文

摘要 本系统主要是实现基于Android的推箱子游戏,推箱子是一款来自日本的古老游戏,其设计目的是训练人的逻辑思维能力。游戏场景一般是设定在空间狭小的仓库中,要求把箱子摆放到指定位置。这就要求玩家巧妙的运用有限的空间和通道,合理的安排箱子的位置和移动次序才可能完成任务。随着计算机游戏的发展,很多编程爱好者基于该游戏的思想开发出了各种版本、各种类型的推箱子。这其中也包括很多手机版本的实现,伴随着Android SDK技术的不断发展,一些基于Android应用也不断推陈出新,很快推箱子游戏便进入了千家万户。此Android推箱子游戏是基于Android SDK2.2基础上设计的,主要分为游戏菜单界面、玩家定制功能、游戏数据存储、游戏背景音乐设置、游戏帮助等功能模块的设计与实现,其中游戏菜单界面模块主要是供用户功能选择而用的;玩家定制则主要是通过提供游戏难度选择,使玩家根据自己的情况选择不同的关卡;游戏用户数据存储主要是采用轻量级数据库存储技术存储游戏用户的成绩;游戏背景音乐设置主要是实现用户可以选择自己喜欢的音乐的功能;其次还包括音量的大小开关;用户游戏指南等功能模块。 本系统采用MVC开发模式,使用SQLite数据库存储技术,基于Android SDK2.2开发平台,使用Eclipse+Android SDK2.2+DDMS+DroidDraw作为系统开发、调试的主要工具关键词:Android推箱子游戏 MVC SQLite Android SDK2.2

The Design and Implementation of the PushBox System Based on Android Abstract This system mainly is to realize the pushed box game based on Android ,Pushed box is a section from Japan's oldest game and designed to train people logical thinking ability. Game scene generally are set in the narrow space warehouse, and demanded the box is put to the appointed place. This requires player clever use limited space and channel, reasonable arrangement of the box location and movement order just may complete the task. Along with the computer game development, many lovers of programming based on this game ideas developed out various versions, various types of pushed box. They include a lot of mobile phones version of the realization, accompanied by Android SDK technology unceasing development, some based on Android applications are constantly, quickly pushed box game entered innumberable families. This Android pushed box game is based on SDK2.2 Android based on design, mainly divides into the game menu interface, customization function, game data storage, game background music Settings, games help etc function module design and implementation of the game menu interface module, which is mainly for the user function selection and use, Customization are mainly by providing game difficulty choice, make the player on its own choice of different levels, The game customer data storage is mainly to adopt a lightweight database storage technology memory game user's accomplishments, Game background music Settings is mainly realized the user can choose your favorite music function; Secondly also includes volume size switches, User game guides function modules. The system USES the MVC development pattern, use SQLite database storage technology, based on SDK2.2 development platform, use Android Eclipse SDK2.2 DDMS + + + Android

推箱子游戏报告书

推箱子游戏设计报告书 一、项目背景 本实训要求对“推箱子游戏”进行分析、设计。 本实训对实训项目已经作了较为详细的分析及相关知识讲解,通过实训,促使专业技能得到综合训练,让我们了解软件开发基本技术和工作过程。同时,本实训中了解图形界面设计基本技术。 通过本系统的开发,要了解软件开发的整个过程,掌握软件开发的基本方法,提前培养从事软件行业应具备的基本素质和能力,为以后的学习作一个铺垫。 二、设计目的 本课程的课程设计实际是重在提升学生对程序的理解力和游戏界面的设计能力,进行的一次全面的综合训练,其目的在于加深动手能力以及对游戏设计思想的理解,掌握运用VB 开发应用程序的基本方法及基本技巧。 三、游戏介绍 本游戏设计了关卡设计器对有难度进行设计,同时用方向键↑↓←→控制小人的移动,空格重新开始,回车选择下一关,page up 上一关,page down 下一关,Esc 退回。小人移动来推箱子使箱子到达指定位置,如果箱子全部到达指定位置就表示过关 3.1界面设计 3.1.1界面设计原则: 1用户帮助 2向导 3快捷键 4鼠标与键盘对应 5布局合理化 6显示信息一致性 7界面一致性 8美观与协调性 9合理性 10规范性 11易用性 12一般交互 13数据输入 本游戏是一个简单游戏所以只涉及一些简单的界面设计原则.

3.2用户界面 又称人机界面,实现用户与计算机之间的通信,以控制计算机或进行用户与计算机之间的数据传送的系统部件。 GUI:即图形用户界面,一种可视化的用户界面,它使用图形界面代替正文界面。 本系统坚持图形用户界面(GUI)设计原则,界面直观、对用户透明。用户接触软件后对界面上对应的功能一目了然、不需要多少培训就可以方便地使用本应用系统。

基于VC++的推箱子游戏设计与实现

本科毕业设计(论文) 基于VC++的推箱子游戏设计与实现 学院自动化学院 专业电子信息科学与技术 年级班别2008级(2)班 学号3108001166 学生姓名吕文财 指导教师 ________张学习 ___ __ 2012年6月

基于 VC++ 的推箱子游戏的设计与实现 吕文财 自动化学院

摘要 近年来随着科技的飞速发展, Visual C++语言的应用正在不断深入。Visual C++语言是当今国际上非常流行的计算机高级编程语言之一,它是面向对象的可视化集成编程系统。它不但具有程序框架自动生成、灵活方便的类管理、代码编写和界面设计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持数据库接口、OLE2,WinSock网络、3D控制界面。它更以自动编译功能和高级除错功能著称。因此,广泛受到编程人员青睐。不仅适合作为系统描述语言,也用来编写系统软件,还可以用来编写应用软件和设计游戏等。 本论文着重分析用Microsoft Visual C++语言实现一个较为简单的推箱子游戏,旨在介绍推箱子游戏的实现方法,并逐步介绍Microsoft Visual C++6.0图形编程的方法和技巧。本设计通过主界面对话框类、关口选择对话框类、帮助对话框类三大类以及键盘操作模块、游戏规则模块、地图文件读取模块、背景音乐播放模块、地图绘制模块,共五大模块构成。实现了任意关数选择、难度依次加大、游戏步数记录、背景音乐播放、游戏帮助、胜负判断等多个功能,采用图形函数的使用实现了一个完整的推箱子游戏界面,界面清晰可见。 关键词:推箱子,c++语言,模块,图形编程

用c语言写乘法表

#include int main(void) { int i,j; for (i=1;i<=9;i++) { for(j=1;j<=i;j++) printf("%2dx%d=%2d",j,i,i*j); printf("\n"); } } 结果: 1x1= 1 1x2= 2 2x2= 4 1x3= 3 2x3= 6 3x3= 9 1x4= 4 2x4= 8 3x4=12 4x4=16 1x5= 5 2x5=10 3x5=15 4x5=20 5x5=25 1x6= 6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36 1x7= 7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49 1x8= 8 2x8=16 3x8=24 5x8=40 6x8=48 7x8=56 8x8=64 1x9= 9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81 3.19 #include int main(void) { int a=0; printf("%8s%10s%12s\n","a","b","c"); while(a<=33) { int b=0; while(b<=50) { int c; c=100-a-b; if(3*a+2*b+c/2.0==100) printf("%8d%10d%12d\n",a,b,c); b++; } a++;

} } a b c 2 30 68 5 25 70 8 20 72 11 15 74 14 10 76 17 5 78 20 0 80

推箱子程序设计报告

程序设计报告 推 箱 子 通信学院 电子信息1204工程班 1207050420 郝国成 一.设计思路 推箱子游戏是一款很有趣味的游戏,其开发过程有一定的技

巧和方法,其中涉及到二维数组、键盘操作以及图形化函数等方面的知识。 设计推箱子这个游戏,目的是将箱子推到指定的空位,以完成游戏。 首先,要在窗口上,绘制地图,画出墙和草地。 然后,要保证人和箱子可以移动,这个就用到了case WM_KEYDOWN函数去控制了。 下来,就是要制定游戏规则,根据游戏规则,箱子可以在空地之间、目的地之间、空地和目的地之间来回移动,。 最后,把全部箱子移动到指定位置才算完成本次游戏,因此箱子每移动一次都必须判断全部箱子当前位置是否到达指定坐标。 而且,只要游戏没有结束,就没有时间的限制。 大体思路确定以后就是要去怎么做,怎么去实现自己的想法。 我是采用二维数组绘制地图的原理,把资源图片一张张绘制到窗口DC上,然后记录人物资源的坐标,通过方向键响应,改变人物坐标,达到控制人物移动的目的。箱子也同样是这个道理。 想好思路以后,就是动手写代码。这期间我又认识了好多新的Windows的函数,不断的修改,使我更能深刻理解到WIN 32 的作用,收获很大。 二.部分代码 // 推箱子.cpp : Defines the entry point for the application. #include "stdafx.h" #include "resource.h" //#include "mmsystem.h"//导入声音头文件

//#pragma comment(lib,"winmm.lib")//导入声音头文件库 #define MAX_LOADSTRING 100 #define width 48 #define heigth 48 typedefstruct { int x; int y; }point; char map1[10][10]= //地图二维数组 { " ####", " ### @#", " # b #", " ## # ###", " # # #*#", " # # b*#", " # b *#", " ########", " " }; char map2[10][10]= //地图二维数组 { "nnnn#####", "nnnn# @#", "###n#bb #", "#*#n# b #", "#*### ###", "#* ##n", "# # #n", "#### #", "nnn#####", " " }; staticintbStarted=0; int a = 0; intaimnum_qj=0; intaimnum=0; intboxoknum_qj=0; charmap_mid[10][10]; char map[10][10];

如何用C语言编写小游戏

如何用C语言编写小游戏

纯真童趣的《泡泡堂》,还有武林情仇,笑傲江湖的《剑侠情缘on line》.它是e时代常谈的话题,是交互式娱乐的主力军,是一种 高层次的综合艺术,更是一个民族的文化,世界观的全新传播方式 .作为游戏玩家的我们,是不是想设计一个属于自己的游戏呢? 爱玩是人的天性,而C语言是我们计算机专业都要学习的一门基础 学科.一般来说,是比较枯燥的.那么,我们能不能通过编一些小 游戏来提高它的趣味性呢?这样学习程序设计,就不会是一件艰苦 ,枯燥的事,它变得象电脑游戏一样充满

好奇,富有乐趣.这正是 我发贴的目的. 1, 总是从Hello,world开始 学习编程的第一个程序,一般就是打印一个亲切的词语——"Hell o,world!".让我们来看看这个最简单的C程序: #incolude /*把输入输出函数的头文件包含进来*/ int main() { printf("Hello, world!");/*在屏幕上输出字符串"Hell

o,world!"*/ return 0;/*退出main函数,并返回0*/ } 下面我们发现几个值得改进的地方,1,程序的运行结果一闪而过 .2,每执行这个程序一次都能看见上次运行留下的字符.3,我们 还希望屏幕输出一个笑脸来欢迎我们. (大家不要小看了这个笑脸 曾经有人发贴专门问呢)让我们来改进一下这个程序吧! 1,在return语句的前面加一句:getch ();,表示按任意键结

束.2,在printf语句前用clrscr函数清屏,要使用这个函数和get ch函数,需要在程序开头再包含头文件conio.h.3,ASCII码也有 许多非常好玩的字符,比如ASCII码值为2的就是一个笑脸,我们可 以用printf("%c", 2)来输出一个笑脸. 现在我们把Hello,world程序改成一个更好看的Hello,world了.下 面让我们开始做游戏吧! 2, 心动的开始,一个运动中的笑脸 大家小时侯喜欢看动画片吗?哈哈,我猜你们都喜欢吧!下面就让

JAVA推箱子游戏

淮海工学院计算机工程学院 课程设计报告 设计名称:面向对象课程设计 选题名称:推箱子的设计与实现 系(院):计算机工程学院 设计时间:2014.3.10~2014.4.12 设计地点:软件实验室、教室

(3)功能模块 本程序包括四个功能模块:class mainFrame,class mainpanel,class Sound,class Readmap, 既主面板类,绘图的面板,播放背景音乐,用输入流读取地图文件。class mainpanel 主要是实现地图的初始化以及每一关地图的重载,class Sound主要是播放背景音乐。Adpressed的功能是响应工人和箱子的移动以及工人、箱子、墙之间的碰撞检测。 表1 成员变量表 成员变量变量类型名称 开始状态Boolean Start 窗口高度int fHeight 窗口宽度int fWidth 计时器Timer timer 延时int delay 开始时间Date starttime 步数int steps 地图容器MapPanel mapPanel 玩法介绍String instruction 开始状态Boolean Start 表2方法表 方法名功能备注 Puzzle() 创建游戏窗口和设置图标 backaction() 后台操作getmap() 返回地图的方法 StartGame() 开始游戏控制,更新开始菜单 endgame() 结束游戏控制弹出结束窗口 getmap()/ 返回地图的方法调用类spite() menuShowClik() 在游戏中显示完整图片调用类class ShowImage actionPerformed() 动作演示 menuExit() 退出游戏 flush() 清空缓存 游戏过程设计 游戏中过程中,最为主要地方在于对地图矩阵,以及主角状态信息(包括位置、行走状态等)的维护,主角每行走一步,就更新一次地图信息和主角状态信息。另外一个比较重要的地方是游戏状态的保存方面。在该游戏中,使用栈结构保存主角每次行走的

c语言推箱子代码

#include #include void map1(); void map2(); void map3(); void show(); void move(); void main(int argc,char*argv[]) { time_t a,b; time(&a); system("color 1E"); loop1: { system("cls");//刷屏 printf("\n\n\n\n\n\n\t\t\t\t欢迎进入推箱子游戏\n\n\t\t\t\t 请按a b c选择游戏\n\n\t\t\t\t 按 d 键结束"); int t=getch(); if(t=='d') { printf("\n\t\t\t "); } else { if(t=='a') { map1(); goto loop1; } if(t=='b') { map2(); goto loop1; } if(t=='c') { map3(); goto loop1; } else { printf("\n\n\t\t\t\t 请重新输入:"); goto loop1; } }

time(&b); printf("\n\n\n\n\t\t\t\t 游戏总共用时%.3d秒\n\t\t\t ",b-a); getch();//等待读取回车符以结束程序 } void map1() { time_t p,q,o; time(&p); int i=4,j=4,m=6,n=2,t=1,k=3; system("cls");//刷屏 system("color 2E"); int x=1,y=7; char z,a[9][9]= { /*为背景设置初始资料*/ {'#','#','#','#','#','#','#','#','#'}, {'#','#','#', 3, 0 , 0 , 0 , 1 ,'#'}, {'#','#', 0 , 0 , 0 ,'#', 0 ,'#','#'}, {'#', 0 , 0 ,'#', 0 , 0 , 5 , 0 ,'#'}, {'#', 0 , 5 , 5 , 3 , 0 , 0 , 0 ,'#'}, {'#','#', 0 ,'#', 0 , 0 ,'#','#','#'}, {'#','#', 3 , 0 , 0 , 0 ,'#','#','#'}, {'#','#','#','#','#','#','#','#','#'}, {'#','#','#','#','#','#','#','#','#'} }; show(a);//调用输出函数 loop://语句标号 move(a,&x,&y,i,j,m,n,t,k,&z); if(a[i][j]=='!'&&a[m][n]=='!'&&a[t][k]=='!') { system("cls");//刷屏 show(a); printf("\t\t\t\t YOU ARE WIN!\n"); time(&q); printf("\t\t\t\t\t 用时%.3d秒\n",q-p); printf("\t\t\t\t*******回车重新选择*******\n\t\t\t\t"); getch(); } else { time(&o); if(z=='d') { return;

计算机应用专业c语言编程基础科试卷及答案

职业学校计算机应用专业C语言编程基础科试卷及答案 一、填空(共35分) 1、Unix系统诞生于年,是由实验室的K T和DMR用汇编语言开发成功的。 2、在C语言中,标识符主要为,,及的名字使用。 3、C语言中中的基本数据类型包括、和 三种。 4、数组是有序是的并且有的数据的集合。 5、C语言中,二维数组元素在内存中的存储顺序 是。 6、C语言函数的实参、形参二者类型,一般个数。 7、在C语言中,变量的存储类别有四种,它们是,,和。 8、根据函数能否被其他源文件调用,函数分为函数和函数两类。 9、文件是存储在外部存储设备上的。 10、定义文件指针变量的格式为。 11、feof( )函数是检测函数,当文件位置指针处于时,它返回一个值。 12、用逻辑运算符将或连接起来就是逻辑表达式。 13、结构化程序设计方法,采用的设计原则和的来构造程序。 14、程序结构一般采用、和结构。 15、第三代高级语言是,注重的是, 之间的关系是从属性的层层调用关系。 二、单项选择题(共15分) 1、C语言程序由组成。A. 子程序 B. 主程序和子程序 C. 函数 D. 过程 2、源程序要正确地运行,必须要有什么函数? A. printf函数 B. 自定义的函数 C. main函数 D. 不需要函数 3、若a为整型变量,且有以下语句 a=-017L; printf("%d\n",a); 则下面___说法是正确的? A. 赋值不合法 B. 输出值为-17 C. 输出为不确定值 D. 输出值为-15 4、下面表达式的值为4. A. 11/3 B. 11.0/3 C. (float)11/3 D. (int)(11.0/3+0.5) 5、在C语言的if语句中,用作判断的表达式为___。 A. 关系表达式 B. 逻辑表达式 C. 算术表达式 D. 任意表达式 6、下面哪一项是不正确的字符串赋值或赋初值的方式。 A. char *str; str="string"; B. char str[7]={'s','t','r','i','n','g'}; C. char str1[10];str1="string"; D. char str1[]="string",str2[]="12345678"; 7、若有以下说明和语句,则输出结果是哪一项? (strlen(s)为求字符串s的长度的函数) char s[12]="a book!"; printf("%d",strlen(s)); A. 12 B. 8 C. 7 D. 11 8、C语言可执行程序从什么地方开始执行? A. 程序中第一条可执行语句 B. 程序中第一个函数 C. 程序中的main函数 D. 包含文件中的第一个函数 9、有一个函数原型如下所示: abc(float x,float y); 则该函数的返回类型为___。 A. void B. double C. int D. float 10、在C语言程序中,下面哪一个是正确的? A. 函数的定义可以嵌套,但函数的调用不可以嵌套 B. 函数的定义不可以嵌套,但函数的调用可以嵌套 C. 函数的定义可以嵌套,函数的调用也可以嵌套 D. 函数的定义和函数的调用都不可以嵌套 11、对于类型相同的指针变量,不能进行哪种运算? A. + B. - C. = D. == 12、若有以下说明和语句,且0<=i<10, 则下面是 对数组元素的错误引用? int a[]={1,2,3,4,5,6,7,8,9,0}, *p, i; p=a; A. *(a+i) B. a[p-a] C. p+i D. *(&a[i]) 13、如果想把一些新的数据添加到文件xh.txt中,则 应该以下面方式打开文件? A. fp=fopen(xh.txt,"a"); B.fp=fopen("xh.txt",a); C. fp=fopen("xh.txt","a"); D.fp=fopen("xh.txt",'a'); 14、下面哪条语句是从文件中读取一个字符? A. ch=getc(); B. fputc(ch,fp); C. fscanf("%c",&ch); D. scanf("%c",&ch); 15、C语言中的文件类型如何划分? A. 索引文件和文本文件两种 B. ASCII文件和二进制文件两种 C. 只有文本文件一种 D. 只有二进制文件一种 三、多选题(共20分) 1、下面是定义局部变量储存类别的保留字。

推箱子游戏详细设计报告

推箱子游戏详细设计报告 一、 引言 在前一阶段(概要设计)中,已解决了实现该游戏需求的程序模块设计问题。包括游戏模块间的关系设计,以及数据结构和模块结构的设计等。在以下的详细设计报告中将对在本阶段中对游戏所做的所有详细设计进行说明。 本阶段依据概要设计的要求,确定应该如何具体地实现所要求的游戏,从而在编码阶段可以把这个描述直接翻译成用具体的 程序语言书写的程序。具体包括各功能模块信息的录入和修改以及删除等。 1.2目的 目的是在训练你的逻辑思考能力。在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出 现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务。可以开发青少年学生的智力,又可以防止老年痴呆症。 1.3参考资料 《C 程序设计(第三版)》,谭浩强编,清华大学出版社 《Turbo C 2.0实用大全》,常玉龙等编写,北京航空航天大学出版社 《C 语言趣味程序百例精解》,陈朔鹰 陈英主编,北京理工大学出版社 《C 游戏编程从入门到精通》,浦滨著, 北京希望电子出版社 《C 函数实用手册》,张曜 郭立山 吴天著, 冶金工业出版社 二、总体设计 2.1需求概要 用户在进入游戏后,可以根据自己的想法自由移动箱子,游戏提供自由选关的功能模块,凭借这些模块,玩家可以实现对游戏快速通关! 2.2软件各模块结构 1、 初始化模块:该模块包括和游戏。屏幕初始化用于输出游戏的操作提示,游戏的每一关的初始化 是 初始化模块 每一关的初始化

2、 图画模块:该模块主要是被其它模块调用,用于画墙、在空地画箱子、在目的地画箱子、和画目的地。 画墙 画箱子 画图模块 画小人 画目的地 目的地画箱子 3、 移动箱子模块: 空地之间箱子的移动 移动箱子模块 目的地之间箱子的移动 目的地与空地之间的箱子移动

推箱子源代码

#include #include #include #include #include using std::cout; using std::endl; #ifndef SOKOBAN_H_ //防止文件重复包含 #define SOKOBAN_H_ #include using std::queue; //每一步的数据类型 struct node { int bx, by; //箱子的坐标 int px, py; //人的坐标 }; //推箱子类 class Sokoban { private: enum {L = 15, H = 7}; char GameMap[H][L]; //地图 int Pex, Pey; //人的位置 int Boxx, Boxy; //箱子的位置 int Succeed, Prove; //是否成功到目的地, 是否可玩性 int dx[4], dy[4]; //方向数组 protected: char Empty; char People; char Box; char Block; char Target; int dir; //记录按键方向 node s, e; public: Sokoban(); //构建函数 ~Sokoban() {} //析构函数,即为inline //地图初始化函数 void Initial(); //箱子路劲验证函数,参数为箱子坐标(bx,by),人坐标(px,py) void Box_Bfs(int bx, int by, int px, int py); //人路劲验证函数,人所到的目的地(ex,ey)

用C语言编写程序建立一个pipe

1、用C语言编写程序,建立一个pipe, 同时父进程生成一个子进程,子进程向pipe写入一 个字符串”Hello.”,父进程从pipe中读取该字符串。5' #include #include #include #include #include #include int main() { char buf[20]; int piledes[2]; pid_t pid; int ret; if(ret = pipe(piledes) == -1) { perror("error on pipe:"); exit(-1); } else { pid = fork(); if(pid < 0) { perror("error on fork:"); exit(-1); } else if(pid == 0) { close(piledes[0]); printf("to fu:"); fgets(buf,sizeof(buf)-1,stdin); if((ret = write(piledes[1],buf,strlen(buf))) < 0) { perror("error on writing:"); exit(-1); } close(piledes[1]);

} else { close(piledes[1]); if((ret = read(piledes[0],buf,sizeof(buf)-1)) < 0) { perror("error on reading:"); exit(-1); } buf[ret] = '\0'; printf("from zi:%s\n",buf); close(piledes[0]); } } return 0; } 2、编写一个 C语言程序lswc,使之功能能和ls | wc 等价。(也就是利用,fork,exec,以及ls,wc,以及重定向,或者是管道的系统调用) 13’ #include #include #include #include #include #include #include #include #include #include #include #include #include #include int main(int argc,char *argv[]) { int pildes[2]; int ret; char *argument[3]; pid_t pid;

2021年推箱子C课程设计报告

程序设计课程设计报告书 欧阳光明(2021.03.07) 学生:孟祥煜 指导老师:曾宇容 课程设计名称:推箱子小游戏 班级:软件11401 一、设计任务 介绍推箱子游戏的实现方法,并逐步介绍C语言图形编程的方法和技巧。在C语言编写软件WIN-TC上,涉及软中断、二维数组、键盘操作及图形化函数等方法,显示器中断寄存器的设置、二维数组的定义、键盘上键值的获取、图形方式下光标的显示和定位,以及部分图形函数的使用实现了一个完整的推箱子游戏界面,界面清晰可见。 二、设计目的 训练学生掌握C的数据结构和综合编程能力和游戏开发技巧等应用能力。 初步设想 推箱子是一款经典的益智小游戏,目的是在训练人的逻辑思考能力。在一个狭小的空间中,要求把木箱从起始位置处推放到指定位置。在空间中有地方限制,稍不小心就会出现箱子无法移动或者通道被堵住的情况,而且箱子只能推不能拉,所以需要玩家巧妙的利用有限的空间和通道,合理的移动次序和位置,才能完成任务。本

游戏一共分14关,由易到难,每一关都随着关数的增 加来增加难度,从而达到吸引游戏玩家的目的。 三功能 1、菜单功能,玩家通过看目录按对应的键可以进入对应的功能菜单,其中1进入游戏,2选择游戏关卡,3游戏帮助指南,4退出游戏。 2 游戏功能:玩家可以通过操纵键盘中的上下左右键进入游戏进行各种操作来完成游戏。 3 循环功能:当玩家正在游戏的时候如果某一步走错了,导致游戏无法完成,可以随时重新开始游戏来完成关卡,游戏过程中可以随时按Ctrl+V退出游戏。 4顺序功能:当玩家完成了某一关之后,随着进入下一关门可以按顺序进入下一关,继续开始更有挑战的关卡,如果该关是最后一关,则显示通关完成。 三、总体设计 1、功能模块设计 函数功能描述本程序包括5个模块,分别是初始化模块、画图模块、移动箱子模块、移动小人模块和功能控制模块。各个模块功能的功能描述如下: (1)初始化模块。该模块包括屏幕初始化和游戏第一关到第最后一关的初始化。屏幕初始化用于输出欢迎信息和操 作提示,游戏每一关的初始化是构建每一关的关卡。

C推箱子课程设计报告

C推箱子课程设计报告 Standardization of sany group #QS8QHH-HHGX8Q8-GNHHJ8-HHMHGN#

武汉理工大学华夏学院 课程设计报告书 课程名称:软件综合 题目:基于VC++的“推箱子”游戏软件的开发与测试 系名:信息工程系 专业班级: 姓名: 指导教师: 2013 年元月 18日 课程设计任务书 学生姓名:专业班级:软件2101 指导教师:工作单位:信息系计算机教研室 设计题目:基于VC++的“推箱子”游戏软件的开发与测试 初始条件: 1.已完成c语言程序设计、软件工程、数据库概论或数据库技术等课程的学习 2. 系统环境:Intel 奔腾4以上处理器,1G以上内存,40G以上硬盘, Windows编程环境,Visual C++ 编程工具 要求完成的主要任务:(在规定的时间内完成下列任务) (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 主要任务: 系统完成用户登录及管理员增加、删除、修改、查询功能 1.按系统功能进行游戏背景区域(移动区域、围墙)的设计与绘制: 2.根据系统实现的功能,绘出功能图、系统流程图 3.模块调试,运行结果正确,并经教师检查及答辩;

设计报告撰写格式要求:(课程设计报告按统一通用格式书写)具体内容如下: ①设计任务与要求②总体方案与说明 ③程序主要模块的流程图④问题分析与解决方案的设计思想和改进设想 ⑤系统的调试记录、调试报告(即在调试中遇到的主要问题、解决方法及改进设 想) ⑥小结与体会 附录:①使用说明②参考资料 时间安排:2012年12月29日---2013年元18日(共三周) 指 系主任签字:年月日 目录

推箱子游戏代码

#include #include #include #include #include #include typedef struct winer { int x,y; struct winer *p; }winer; char status [20][20]; char far *printScreen=(char far* )0xB8000000; void putoutChar(int y,int x,char ch,char fc,char bc); void printWall(int x, int y); void printBox(int x, int y); void printBoxDes(int x, int y); void printDestination(int x, int y); void printDestination1(int x,int y,winer **win,winer **pw); void printMan(int x, int y); void init(); winer *initStep1(); winer *initStep2(); winer *initStep3(); winer *initStep4(); void moveBoxSpacetoSpace(int x ,int y, char a); void moveBoxDestoSpace(int x ,int y, char a) ; void moveBoxSpacetoDes(int x, int y, char a); void moveBoxDestoDes(int x, int y, char a); int judge(int x, int y); void move(int x, int y, char a); void reset(int i); void putoutChar(int y,int x,char ch,char fc,char bc) { printScreen[(x*160)+(y<<1)+0]=ch; printScreen[(x*160)+(y<<1)+1]=(bc*16)+fc; } void printWall(int x,int y) { putoutChar(y-1,x-1,219,GREEN,BLACK); status[x][y]='w'; } void printBox(int x,int y) { putoutChar(y-1,x-1,10,WHITE,BLACK); status[x][y]='b'; } void printDestination1(int x,int y,winer **win,winer **pw) {

java推箱子游戏源代码(含推箱子的判断)

第一个Java文件: package xiaoA; import java.awt.Color; import java.awt.HeadlessException; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; public class GameFrame extends JFrame { JPanel zhuobu = new JPanel(); //工人 JLabel worker = null; //箱子 JLabel box = null; //目的地 JLabel goal = null; JLabel[] walls = null; public static final int SPEED = 12; //设置图片大小 int imgSize = 48; public void setImgSize(int imgSize){ this.imgSize = imgSize; } public GameFrame(String title) throws HeadlessException { super(title); //构造方法中调用本类的其它方法 this.initContentPane(); this.addKeyListener(new KeyListener() { //键盘按下事件 public void keyPressed(KeyEvent e) { //[2.5] 使工人可以移动 int xSpeed = 0, ySpeed = 0; switch (e.getKeyCode()) { case KeyEvent.VK_LEFT :

相关主题