当前位置:主页 > 论文百科 > 英文数据库 >

拼数字游戏C#课程设计

发布时间:2017-01-13 18:37

  本文关键词:VisualC#.NET程序设计教程,由笔耕文化传播整理发布。


《C#程序设计》课程设计 题 目:

学 号:姓 名:指导老师: 拼数字游戏 邵晓艳

目 录

1 前言 ....................................................... 1

2 课题介绍 ................................................... 1

2.1功能要求 .............................................. 1

2.2主要任务 .............................................. 1

2.3运行环境 .............................................. 1

2.4开发语言 .............................................. 1

3 概要设计与详细设计 ......................................... 1

3.1系统流程图 ............................................ 3

3.2详细设计 .............................................. 3

4 关键代码与全部代码 ......................................... 4

4.1关键代码 .............................................. 4

4.2全部代码欣赏 .......................................... 5

5 课程设计总结 ............................................... 9

参考文献 ..................................................... 9

评语及成绩 .................................................. 10

1 前言

拼数字游戏是一种很简单但也是很有趣味性的游戏。编写一个拼数字游戏,通过把9个label控件绑定起来共用一个事件,来实现label控件的移动进而在后续的判断中确定是否通关。

2 课题介绍

拼数字游戏通过把1—9这9个数在游戏开始后上随机排序,用到数组和随机函数的知识!

2.1功能要求

(1)用C#语言实现程序设计;

(2)利用二维数组进行相关信息处理;

(3)画出查询模块的流程图;

(4)系统的各个功能模块二维数组实现;

(5)界面友好(良好的人机互交),程序要有注释。

2.2主要任务

(1)定义一个二维数组,数组中的每一个成员代表一张带数字的卡片;

(2)画出所有模块的流程图;

(3)编写代码;

(4)程序分析与调试。

2.3运行环境

(1).NET Framework平台

(2)Visual Studio 2010开发环境

2.4开发语言

C#语言

3 概要设计与详细设计

1

3.1系统流程图

系统的主要功能包括:定义二维数组,把二维数组中的数据存到相对应的一位数组中,利用随机函数产生一个不可见的数字,通过判断不可见得数字和

系统的流程及框架如图3.1所示。

图3.1 系统流程图 3.2详细设计

【以下为样例】

(1)功能“快速生成没有重复的随机数”的详细设计

“快速生成没有重复的随机数”功能是:先生成0—8的随机数,然后找到下标为这个随机数的元素,并与第一个交换战后产生1—8的随机数和第二个交换。如此反复,,一直生成7—8的随机数。

该功能的实现流程如图3.2所示。

- 2 -

......

图3.2 快速生成不重复的随机数

(2)功能“移动方块”的详细设

“移动方块”功能是:先判断被单击方块是不是和空白方块相邻的方块,如果是移动到空白处,并使其原来的位置便为空白。

该功能的实现流程如图3.2所示。

- 3 -

图3.3 移动方块流程图 4 关键代码与全部代码

4.1关键代码

【以下为样例】

【在程序的开头部分定义二维数组数组,用来存放信息,共9条信息。 Label[,] arrLbl = new Label[3, 3];

int unRow = 0, unCol = 0;

bool playing = false;

private void btnPlay_Click(object sender, EventArgs e)

{

arrLbl[0, 0] = label1;

arrLbl[0, 1] = label2;

arrLbl[0, 2] = label3;

arrLbl[1, 0] = label4;

arrLbl[1, 1] = label5;

arrLbl[1, 2] = label6;

arrLbl[2, 0] = label7;

arrLbl[2, 1] = label8;

arrLbl[2, 2] = label9;

- 4 -

arrLbl[unRow, unCol].Visible = true;

int[] arrNum = { 1,2,3,4,5,6,7,8,9};

Random rm = new Random();

for (int i = 0; i < 8; i++)

{

int rmNum = rm.Next(i, 9);

int temp=arrNum [i];

arrNum [i ]=arrNum [rmNum ];

arrNum[rmNum] = temp;

}

for (int i = 0; i < 9; i++)

{

arrLbl[i / 3, i % 3].Text = arrNum[i].ToString(); }

int cover = rm.Next(0, 9);

unRow = cover / 3;

unCol = cover % 3;

arrLbl[unRow, unCol].Visible = false;

playing = true;

}

4.2全部代码及运行结果

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;

using System.Media;

namespace WindowsFormsApplication1

{

public partial class MainFrom : Form

{

public MainFrom()

{

InitializeComponent();

}

Label[,] arrLbl = new Label[3, 3];

- 5 -

int unRow = 0, unCol = 0;

bool playing = false;

private void btnPlay_Click(object sender, EventArgs e) {

arrLbl[0, 0] = label1;

arrLbl[0, 1] = label2;

arrLbl[0, 2] = label3;

arrLbl[1, 0] = label4;

arrLbl[1, 1] = label5;

arrLbl[1, 2] = label6;

arrLbl[2, 0] = label7;

arrLbl[2, 1] = label8;

arrLbl[2, 2] = label9;

arrLbl[unRow, unCol].Visible = true;

int[] arrNum = { 1,2,3,4,5,6,7,8,9};

Random rm = new Random();

for (int i = 0; i < 8; i++)

{

int rmNum = rm.Next(i, 9);

int temp=arrNum [i];

arrNum [i ]=arrNum [rmNum ];

arrNum[rmNum] = temp;

}

for (int i = 0; i < 9; i++)

{

arrLbl[i / 3, i % 3].Text = arrNum[i].ToString(); }

int cover = rm.Next(0, 9);

unRow = cover / 3;

unCol = cover % 3;

arrLbl[unRow, unCol].Visible = false;

playing = true;

}

private void label1_Click(object sender, EventArgs e) {

if (!playing)

{

return;

}

int row = ((Label)sender).Top / 80;

int col = ((Label)sender).Left / 80;

- 6 -

if (Math.Abs(row - unRow) + Math.Abs(col - unCol) == 1) {

string temp = arrLbl[unRow, unCol].Text;

arrLbl[unRow, unCol].Text = arrLbl[row, col].Text; arrLbl[row, col].Text = temp;

arrLbl[unRow, unCol].Visible = true;

arrLbl[row, col].Visible = false;

unRow = row;

unCol = col;

}

for (int i = 0; i < 9; i++)

{

if (arrLbl[i / 3, i % 3].Text != Convert.ToString (i + 1)) {

break;

}

if (i == 8)

{

arrLbl[unRow, unCol].Visible = true;

playing = false;

MessageBox .Show("恭§喜2你?

}

}

}

}

}

?过y了?游?戏·","消?息¢对?话°框ò",MessageBoxButtons .OK ,MessageBoxIcon .Information );

- 7 -

图3.4 开始游戏界面

图3.4 完成游戏界面

5 课程设计总结

- 8 -

在做这个小程序期间在生成Click事件时由于没有把所有的九个控件选中所以必可避免的出了些问题,我也曾尝试做个4*4的拼数字游戏但是遇到了我所解决不了的问题,所以就停止了。通过这次的课程设计我发现我们学习的课本知识远远不够,可惜啊仍需要我们,继续努力!

参考文献

[1] 罗福强,VisualC#.NET程序设计教程[M].人民邮电出版社,2012.

[2] 牛莉,刘远军等.计算机等级考试辅导教程[M].北京:中国铁道出版社,2008.

[3] 张福祥.C语言程序设计实验实训与习题解答 [M].沈阳:辽宁大学出版社,2010.1

- 9 -

成绩评定

- 10 -

11


  本文关键词:VisualC#.NET程序设计教程,由笔耕文化传播整理发布。



本文编号:237269

资料下载
论文发表

本文链接:https://www.wllwen.com/wenshubaike/mishujinen/237269.html


Copyright(c)文论论文网All Rights Reserved | 网站地图 |

版权申明:资料由用户b94db***提供,本站仅收录摘要或目录,作者需要删除请E-mail邮箱bigeng88@qq.com