郑州轻工业学院 网络编程基础 实训报告
实训名称: 指导教师:
姓名: 学号: 班级: 提交日期:
停车场游戏、贪吃蛇游戏
实训一
1. 实训目的
通过开发一款停车场游戏程序,熟练掌握C#编程语言、面向对象程序设计方法和可视化技术。
2. 实训题目
使用C#编程语言,开发一款停车场游戏程序。
3. 功能描述
1) 停车场有5 种颜色的汽车和6 个车位。 2) 每一辆汽车对应颜色的车位。 3) 车位之间有的有通道,有的没有。
4) 最初5 种颜色的汽车未停在对应颜色的车位。
5) 玩家点击汽车,实现将该汽车沿通道移动到空闲的车位上; 当该汽车与空间的车位之间没有通道时,则不移动汽车。 6) 玩家可以点击按钮“自来一次”,重新开始游戏。 7) 当所有的汽车都听到对应颜色的车位上时,游戏成功。
4. 需求分析
根据功能描述可知,停车场游戏的定义数据字典如下: 1) 车(Car):在停车场游戏中,车是玩家操纵的对象。车具 有位置和颜色等属性。在游戏中,玩家可以将汽车沿通道 移动到空闲的车位上。
2) 车位(Space):在停车场游戏中,车位是汽车停留的空间。 车位具有位置、大小和颜色等属性。
3) 通道(Road):在停车场游戏中,通道是汽车移动的路径。 通道具有起始点等属性。当某两个车位间有通道时,汽车 可以直接再这两个车位间移动。当某两个车位间没有通道 时,汽车不可以直接在这两个车位间移动。
5. 设计说明
根据需求分析可知,车位具有位置、大小和颜色等属性,定义 1)Space类用于描述车位的信息。通道具有起点和终点两个属性,定义
2)Road类用于描述通道的信息以及通道与车位之间的关系。车具有位置和颜色等属性,定义Car类用于描述车的信息以及车停留在哪个车位,并实现车的移动功能。
3)为了使游戏的运行更易于控制,定义Game类用于启动游戏、控制游戏和结束游戏。
4)综上所述,在停车场游戏中,有Space(车位)、Road(通道)、Car(车)、Game(游戏)和MainForm(用户接口)六个类。
6. 源代码
using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text;
using System.Windows.Forms; namespace ParkingLot {
publicpartialclassForm1 : Form {
public Form1() {
InitializeComponent(); game = newGame(); for (int i = 0; i < 5; i++) {
string name = \ + i.ToString();
PictureBox pBox = (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; } }
privateGame game;
privatevoid pictureBox0_Click(object sender, EventArgs e) {
PictureBox pBox = (PictureBox)sender;
if (game.MoveCar(0, game.cars[0].spaceNum,game.freeSpaceNum)) {
pBox.Location = newPoint(game.cars[0].center.X - pBox.Width / 2, game.cars[0].center.Y - pBox.Height / 2); if (game.Success()) {
MessageBox.Show(\恭喜!成功了\); } } else
{
MessageBox.Show(\不能移动\); }
}
privatevoid pictureBox1_Click(object sender, EventArgs e) {
PictureBox pBox = (PictureBox)sender;
if (game.MoveCar(1, game.cars[1].spaceNum, game.freeSpaceNum))