C#大作业课程设计推箱子小游戏设计(12页).doc
《C#大作业课程设计推箱子小游戏设计(12页).doc》由会员分享,可在线阅读,更多相关《C#大作业课程设计推箱子小游戏设计(12页).doc(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-C#大作业课程设计推箱子小游戏设计-第 12 页可视化程序设计大作业推箱子小游戏班 级:学 号:指导教师:东北大学秦皇岛分校计算机与通信工程学院2018.01一、任务描述:1.题目:推箱子小游戏2.功能描述:(1)箱子只能推动而不能拉动。一次只能推动一个箱子。(2)在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况。(3)本游戏的目的就是把所有的箱子都推到目标位置上。(4)通过使用键盘的方向键来控制移动方向。(5)具有重玩本关、跳过本关的功能。二、成员负责部分:独立完成(6分)三、正文1.功能设计:(1).能够显示主菜单和界面:允许玩家对游戏关卡进
2、行设置,增设关卡,把编辑好的关卡进行存储,并能弹出窗体提示当前设计完成的关卡数;(2).能够实现键盘操作功能:使用上、下、左、右方向键控制工人的移动方向,空格键重玩;(3).能够把放置到目的地的箱子进行变色显示;(4).游戏胜负判断功能:当玩家把箱子移动到指定位置时,成功通过当前关卡;(5).可以切换上一关、下一关、增加关卡以及重玩当前关卡;(6).可以判断当前的关卡数,在处于第一关和最后一关时分别不能进行“前一关”和“后一关”操作,并弹出窗体进行提示;2.界面设计:用到的图片及窗体设计3.具体设计:(1).地图编辑器Form2:使用地图编辑器来编辑每一关游戏的界面,就是在窗体上点击生成墙、工
3、人、箱子、通道、目的地,将地图转换为一个一维数组:010101234567. 其中0代表墙,1代表人,2代表箱子,3代表路,4代表目的地,5代表人在目的地,6代表放到目的地的箱子,通过这个数组游戏就可以进行初始化布局了。最后导出一个关卡的配置的plist文件.info,里面存储的即为初始化数组。Form2里面共两个控件。toolStripBtn:进行增加关卡时,选中编辑地图所需要的图片,在编辑地图时直接将要用到的图片拖到窗口内,进行布局;pictureBox:用于编辑地图时,存放布局的样式;(2).游戏窗口Form1:通过依次读取已保存在固定位置的plist文件进行初始化页面信息,生成相应的游
4、戏界面;并定义控制功能,实现用键盘方向键控制工人的移动方向;实现对关卡的切换,如上一关、下一关,能增加关卡以及重玩当前关卡。Form1共两个控件ToolStripMenuItem:游戏菜单中分为四个子菜单,分别为上一关、下一关、重玩、编辑地图和退出上一关:进入上一个关卡下一关:进入下一个关卡重玩:对本关卡初始化,重新开始本关编辑地图:增加关卡退出:退出游戏pictureBox:用于显示地图内容4.运行结果:源代码:Form1:using System;using System.Collections.Generic;using System.ComponentModel;using Syste
5、m.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;namespace 推箱子游戏 public partial class Form1 : Form private int x; /工人当前位置(x,y) private int y; /private bool flag = true; /0代表墙,1代表人,2代表箱子,3代表路,4代表目的地 /5代表人在目的地,6代表放到目的地的箱子 private enum Map_State None=-1,Wall = 0,
6、 Worker, Box, Passageway, Destination,WorkerInDest,RedBox ; private Map_State, myArray; /private int, my; private int Order = 1; /游戏关的序号 public Form1() InitializeComponent(); private void ReadMap(int n) string filename = mapmap_ + n.ToString() + .info; FileStream fs = new FileStream(filename, FileMo
7、de.Open, FileAccess.Read); BinaryReader r = new BinaryReader (fs); /读取数据 for (int i = 0; i 7; i+) for (int j = 0; j 7; j+) myArrayi, j=(Map_State) r.ReadByte(); for (int i = 0; i 7; i+) for (int j = 0; j 7; j+) if(myArrayi, j =Map_State.Worker) x=i;y=j; r.Close(); fs.Close(); public void initdata()
8、myArray = new Map_State7, 7; ReadMap(Order); private void Form1_Load(object sender, System.EventArgs e) initdata(); drawimage(); /绘制整个游戏区域图形 private void drawimage() Bitmap bit =new Bitmap(this.pictureBox1.Width, this.pictureBox1.Height); Graphics g= Graphics.FromImage(bit); SolidBrush redBrush = ne
9、w SolidBrush(Color.Red); System.Drawing.Image image=new Bitmap(worker.gif); for(int i =0;i7;i+) for(int j=0;j= 0 & row = 0 & col 7); public bool IsFinish()/验证是否过关 bool bFinish = true; for (int i = 0; i 7; i+) for (int j = 0; j 7; j+) if (myArrayi,j = Map_State.Destination | myArrayi,j = Map_State.Wo
10、rkerInDest) bFinish = false; return bFinish; private void 编辑地图ToolStripMenuItem_Click(object sender, EventArgs e) Form2 f2 = new Form2(); f2.ShowDialog(); private void 重玩ToolStripMenuItem_Click(object sender, EventArgs e) this.Text = 第 + Order.ToString() + 关; initdata(); drawimage(); private void 退出
11、ToolStripMenuItem_Click(object sender, EventArgs e) Application.Exit(); private void 下一关ToolStripMenuItem_Click(object sender, EventArgs e) Order+; string filename = mapmap_ + Order.ToString() + .info; if (!File.Exists(filename) MessageBox.Show(没有下一关了, 提醒); Order-; return; this.Text = 第 + Order.ToSt
12、ring() + 关; initdata(); drawimage(); private void 上一关ToolStripMenuItem_Click(object sender, EventArgs e) Order-; string filename = mapmap_ + Order.ToString() + .info; if (!File.Exists(filename) MessageBox.Show(没有上一关了, 提醒); Order+; return; this.Text = 第 + Order.ToString() + 关; initdata(); drawimage()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 作业 课程设计 箱子 小游戏 设计 12
限制150内