停车场贪吃蛇游戏实训报告 下载本文

郑州轻工业学院 网络编程基础 实训报告

实训名称: 指导教师:

姓名: 学号: 班级: 提交日期:

停车场游戏、贪吃蛇游戏

实训一

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))