拼數(shù)字游戲C#課程設(shè)計(jì)
本文關(guān)鍵詞:VisualC#.NET程序設(shè)計(jì)教程,由筆耕文化傳播整理發(fā)布。
《C#程序設(shè)計(jì)》課程設(shè)計(jì) 題 目:
學(xué) 號:姓 名:指導(dǎo)老師: 拼數(shù)字游戲 邵曉艷
目 錄
1 前言 ....................................................... 1
2 課題介紹 ................................................... 1
2.1功能要求 .............................................. 1
2.2主要任務(wù) .............................................. 1
2.3運(yùn)行環(huán)境 .............................................. 1
2.4開發(fā)語言 .............................................. 1
3 概要設(shè)計(jì)與詳細(xì)設(shè)計(jì) ......................................... 1
3.1系統(tǒng)流程圖 ............................................ 3
3.2詳細(xì)設(shè)計(jì) .............................................. 3
4 關(guān)鍵代碼與全部代碼 ......................................... 4
4.1關(guān)鍵代碼 .............................................. 4
4.2全部代碼欣賞 .......................................... 5
5 課程設(shè)計(jì)總結(jié) ............................................... 9
參考文獻(xiàn) ..................................................... 9
評語及成績 .................................................. 10
1 前言
拼數(shù)字游戲是一種很簡單但也是很有趣味性的游戲。編寫一個(gè)拼數(shù)字游戲,通過把9個(gè)label控件綁定起來共用一個(gè)事件,來實(shí)現(xiàn)label控件的移動進(jìn)而在后續(xù)的判斷中確定是否通關(guān)。
2 課題介紹
拼數(shù)字游戲通過把1—9這9個(gè)數(shù)在游戲開始后上隨機(jī)排序,用到數(shù)組和隨機(jī)函數(shù)的知識!
2.1功能要求
(1)用C#語言實(shí)現(xiàn)程序設(shè)計(jì);
(2)利用二維數(shù)組進(jìn)行相關(guān)信息處理;
(3)畫出查詢模塊的流程圖;
(4)系統(tǒng)的各個(gè)功能模塊二維數(shù)組實(shí)現(xiàn);
(5)界面友好(良好的人機(jī)互交),程序要有注釋。
2.2主要任務(wù)
(1)定義一個(gè)二維數(shù)組,數(shù)組中的每一個(gè)成員代表一張帶數(shù)字的卡片;
(2)畫出所有模塊的流程圖;
(3)編寫代碼;
(4)程序分析與調(diào)試。
2.3運(yùn)行環(huán)境
(1).NET Framework平臺
(2)Visual Studio 2010開發(fā)環(huán)境
2.4開發(fā)語言
C#語言
3 概要設(shè)計(jì)與詳細(xì)設(shè)計(jì)
1
3.1系統(tǒng)流程圖
系統(tǒng)的主要功能包括:定義二維數(shù)組,把二維數(shù)組中的數(shù)據(jù)存到相對應(yīng)的一位數(shù)組中,利用隨機(jī)函數(shù)產(chǎn)生一個(gè)不可見的數(shù)字,通過判斷不可見得數(shù)字和
系統(tǒng)的流程及框架如圖3.1所示。
圖3.1 系統(tǒng)流程圖 3.2詳細(xì)設(shè)計(jì)
【以下為樣例】
(1)功能“快速生成沒有重復(fù)的隨機(jī)數(shù)”的詳細(xì)設(shè)計(jì)
“快速生成沒有重復(fù)的隨機(jī)數(shù)”功能是:先生成0—8的隨機(jī)數(shù),然后找到下標(biāo)為這個(gè)隨機(jī)數(shù)的元素,并與第一個(gè)交換戰(zhàn)后產(chǎn)生1—8的隨機(jī)數(shù)和第二個(gè)交換。如此反復(fù),,一直生成7—8的隨機(jī)數(shù)。
該功能的實(shí)現(xiàn)流程如圖3.2所示。
- 2 -
......
圖3.2 快速生成不重復(fù)的隨機(jī)數(shù)
(2)功能“移動方塊”的詳細(xì)設(shè)
“移動方塊”功能是:先判斷被單擊方塊是不是和空白方塊相鄰的方塊,如果是移動到空白處,并使其原來的位置便為空白。
該功能的實(shí)現(xiàn)流程如圖3.2所示。
- 3 -
圖3.3 移動方塊流程圖 4 關(guān)鍵代碼與全部代碼
4.1關(guān)鍵代碼
【以下為樣例】
【在程序的開頭部分定義二維數(shù)組數(shù)組,用來存放信息,共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全部代碼及運(yùn)行結(jié)果
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 課程設(shè)計(jì)總結(jié)
- 8 -
在做這個(gè)小程序期間在生成Click事件時(shí)由于沒有把所有的九個(gè)控件選中所以必可避免的出了些問題,我也曾嘗試做個(gè)4*4的拼數(shù)字游戲但是遇到了我所解決不了的問題,所以就停止了。通過這次的課程設(shè)計(jì)我發(fā)現(xiàn)我們學(xué)習(xí)的課本知識遠(yuǎn)遠(yuǎn)不夠,可惜啊仍需要我們,繼續(xù)努力!
參考文獻(xiàn)
[1] 羅福強(qiáng),VisualC#.NET程序設(shè)計(jì)教程[M].人民郵電出版社,2012.
[2] 牛莉,劉遠(yuǎn)軍等.計(jì)算機(jī)等級考試輔導(dǎo)教程[M].北京:中國鐵道出版社,2008.
[3] 張福祥.C語言程序設(shè)計(jì)實(shí)驗(yàn)實(shí)訓(xùn)與習(xí)題解答 [M].沈陽:遼寧大學(xué)出版社,2010.1
- 9 -
成績評定
- 10 -
11
本文關(guān)鍵詞:VisualC#.NET程序設(shè)計(jì)教程,由筆耕文化傳播整理發(fā)布。
本文編號:237269
本文鏈接:http://sikaile.net/wenshubaike/mishujinen/237269.html