拼数字游戏C#课程设计
本文关键词: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