停车场实训报告_第1页
停车场实训报告_第2页
停车场实训报告_第3页
停车场实训报告_第4页
停车场实训报告_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实训报告实训名称:停车场指导教师:姓名:学号:班级:提交日期:2014/5/23实训目的:通过开发一款停车场游戏程序,熟练掌握C#编程语言、面向对象程序设计方法和可视化编程技术。实训题目:使用C#编程语言,开发一款停车场游戏如下图所示。3.功能描述:1)停车场有5种颜色的汽车和6个车位。2)每一辆汽车对应颜色的车位。3)车位之间有的有通道,有的没有。4)最初5种颜色的汽车未停在对应颜色的车位。5)玩家点击汽车,实现将该汽车沿通道移动到空闲的车位上;当该汽车与空间的车位之间没有通道时,则不移动汽车。6)玩家可以点击按钮“自来一次”,重新开始游戏。7)当所有的汽车都听到对应颜色的车位上时,游戏成功。4.需求分析:1)车(Car):在停车场游戏中,车是玩家操纵的对象。车具有位置和颜色等属性。在游戏中,玩家可以将汽车沿通道移动到空闲的车位上。2)车位(Space):在停车场游戏中,车位是汽车停留的空间。车位具有位置、大小和颜色等属性。3)通道(Road):在停车场游戏中,通道是汽车移动的路径。通道具有起始点等属性。当某两个车位间有通道时,汽车可以直接再这两个车位间移动。当某两个车位间没有通道时,汽车不可以直接在这两个车位间移动。5.设计说明:根据需求分析可知,车位具有位置、大小和颜色等属性,定义Space类用于描述车位的信息。通道具有起点和终点两个属性,定义Road类用于描述通道的信息以及通道与车位之间的关系。车具有位置和颜色等属性,定义Car类用于描述车的信息以及车停留在哪个车位,并实现车的移动功能。为了使游戏的运行更易于控制,定义Game类用于启动游戏、控制游戏和结束游戏。综上所述,在停车场游戏中,有Space(车位)、Road(通道)、Car(车)、Game(游戏)和MainForm(用户接口)六个类。6.源代码:Form1:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespaceParkingLot{publicpartialclassForm1:Form{privateGamegame;privateSpacespace;privateRoadroad;privateCarcars;publicForm1(){InitializeComponent();game=newGame();for(inti=0;i<5;i++){stringname="pictureBox"+i.ToString();PictureBoxpBox=(PictureBox)this.Controls.Find(name,false)[0];pBox.Location=newPoint(game.cars[i].center.X-pictureBox0.Width/2,game.cars[i].center.Y-pictureBox0.Height/2);pBox.Visible=true;}}privatevoidpictureBox0_Click(objectsender,EventArgse){if(game.MoveCar(0,game.cars[0].spaceNum,game.freeSpaceNum)){pictureBox0.Location=newPoint(game.cars[0].center.X-pictureBox0.Width/2,game.cars[0].center.Y-pictureBox0.Height/2);score.Text=Convert.ToString(Convert.ToInt32(score.Text)+1);if(game.Success()){MessageBox.Show("恭喜!成功了");}}else{MessageBox.Show("不能移动");}}privatevoidpictureBox1_Click(objectsender,EventArgse){if(game.MoveCar(1,game.cars[1].spaceNum,game.freeSpaceNum)){pictureBox1.Location=newPoint(game.cars[1].center.X-pictureBox1.Width/2,game.cars[1].center.Y-pictureBox1.Height/2);score.Text=Convert.ToString(Convert.ToInt32(score.Text)+1);if(game.Success()){MessageBox.Show("恭喜!成功了");}}else{MessageBox.Show("不能移动");}}privatevoidpictureBox2_Click(objectsender,EventArgse){if(game.MoveCar(2,game.cars[2].spaceNum,game.freeSpaceNum)){pictureBox2.Location=newPoint(game.cars[2].center.X-pictureBox2.Width/2,game.cars[2].center.Y-pictureBox2.Height/2);score.Text=Convert.ToString(Convert.ToInt32(score.Text)+1);if(game.Success()){MessageBox.Show("恭喜!成功了");}}else{MessageBox.Show("不能移动");}}privatevoidpictureBox3_Click(objectsender,EventArgse){if(game.MoveCar(3,game.cars[3].spaceNum,game.freeSpaceNum)){pictureBox3.Location=newPoint(game.cars[3].center.X-pictureBox3.Width/2,game.cars[3].center.Y-pictureBox3.Height/2);score.Text=Convert.ToString(Convert.ToInt32(score.Text)+1);if(game.Success()){MessageBox.Show("恭喜!成功了");}}else{MessageBox.Show("不能移动");}}privatevoidpictureBox4_Click(objectsender,EventArgse){if(game.MoveCar(4,game.cars[4].spaceNum,game.freeSpaceNum)){pictureBox4.Location=newPoint(game.cars[4].center.X-pictureBox4.Width/2,game.cars[4].center.Y-pictureBox4.Height/2);score.Text=Convert.ToString(Convert.ToInt32(score.Text)+1);if(game.Success()){MessageBox.Show("恭喜!成功了");}}else{MessageBox.Show("不能移动");}}privatevoidForm1_Load(objectsender,EventArgse){}privatevoidbutton1_Click(objectsender,EventArgse){game=newGame();score.Text=Convert.ToString(Convert.ToInt32(score.Text)-Convert.ToInt32(score.Text));for(inti=0;i<5;i++){stringname="pictureBox"+i.ToString();PictureBoxpBox=(PictureBox)this.Controls.Find(name,false)[0];pBox.Location=newPoint(game.cars[i].center.X-pictureBox0.Width/2,game.cars[i].center.Y-pictureBox0.Height/2);pBox.Visible=true;}}privatevoidbuttonStart_Paint(objectsender,PaintEventArgse){game.PaintParkingLot(this.CreateGraphics());}privatevoidtextBox1_TextChanged(objectsender,EventArgse){}privatevoidbutton1_Click_1(objectsender,EventArgse){MessageBox.Show("对不起,没有下一关了");}privatevoidlabel1_Click(objectsender,EventArgse){}privatevoidscore_Click(objectsender,EventArgse){}}}Program:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Windows.Forms;namespaceParkingLot{staticclassProgram{///<summary>///应用程序的主入口点。///</summary>[STAThread]staticvoidMain(){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(newForm1());}}}Car:usingSystem;usingSystem.Drawing;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceParkingLot{classCar{publicPointcenter;publicintspaceNum;publicCar(Pointcenter,intspaceNum){this.center=center;this.spaceNum=spaceNum;}publicvoidMove(Pointcenter,intspaceNum){this.center=center;this.spaceNum=spaceNum;}}Game:usingSystem;usingSystem.Drawing;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceParkingLot{classGame{publicSpace[]spaces;publicRoad[]roads;publicCar[]cars;publicintfreeSpaceNum;publicGame(){spaces=newSpace[6];roads=newRoad[9];cars=newCar[5];spaces[0]=newSpace(newPoint(200,400),Color.Blue);spaces[1]=newSpace(newPoint(200,200),Color.Red);spaces[2]=newSpace(newPoint(500,100),Color.Yellow);spaces[3]=newSpace(newPoint(800,200),Color.Green);spaces[4]=newSpace(newPoint(800,400),Color.Pink);spaces[5]=newSpace(newPoint(500,500),Color.Black);roads[0]=newRoad(0,1,spaces[0].center,spaces[1].center);roads[1]=newRoad(1,2,spaces[1].center,spaces[2].center);roads[2]=newRoad(2,3,spaces[2].center,spaces[3].center);roads[3]=newRoad(3,4,spaces[3].center,spaces[4].center);roads[4]=newRoad(4,5,spaces[4].center,spaces[5].center);roads[5]=newRoad(5,0,spaces[5].center,spaces[0].center);roads[6]=newRoad(0,3,spaces[0].center,spaces[3].center);roads[7]=newRoad(1,4,spaces[1].center,spaces[4].center);roads[8]=newRoad(2,5,spaces[2].center,spaces[5].center);cars[0]=newCar(spaces[1].center,1);cars[1]=newCar(spaces[2].center,2);cars[2]=newCar(spaces[3].center,3);cars[3]=newCar(spaces[4].center,4);cars[4]=newCar(spaces[0].center,0);freeSpaceNum=5;}publicvoidPaintParkingLot(Graphicsg){foreach(Roadrinroads){r.Paint(g);}foreach(Spacesinspaces){s.Paint(g);}}publicboolSuccess(){for(inti=0;i<5;i++){if(i!=cars[i].spaceNum)returnfalse;}returntrue;}publicboolMoveCar(intcarNum,intstart,intend){foreach(Roadrinroads){if(r.spaceStartNum==start&&r.spaceEndNum==end){cars[carNum].Move(spaces[end].center,end);freeSpaceNum=start;returntrue;}if(r.spaceStartNum==end&&r.spaceEndNum==start){cars[carNum].Move(spaces[end].center,end);freeSpaceNum=start;returntrue;}}returnfalse;}}}Road:usingSystem;usingSystem.Drawing;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceParkingLot{classRoad{publicintspaceStartNum;publicintspaceEndNum;Pointstart;Pointend;staticColorcolor=Color.DarkOrchid;publicRoad(intstartNum,intendNum,Pointp1,Pointp2){spaceStartNum=startNum;spaceEndNum=endNum;start=p1;end=p2;}publicvoidPaint(Graphicsg){g.DrawLine(newPen(color,15)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论