課程設(shè)計(jì)說(shuō)明書(shū)
代碼(32條消息) C#課程設(shè)計(jì)-打地鼠小游戲-C#文檔類(lèi)資源-CSDN文庫(kù)
設(shè)計(jì)題目: 打地鼠小游戲
院(系) 軟件工程學(xué)院
專(zhuān)業(yè)年級(jí) 19級(jí)計(jì)科1班
學(xué)生姓名 學(xué)號(hào)
同組同學(xué)姓名 學(xué)號(hào)
指導(dǎo)教師
日 期 2021年12月
目 錄
1 引 言 3
1.1課程設(shè)計(jì)的目的 3
1.2本選題的內(nèi)容要求 3
1.3 軟件開(kāi)發(fā)運(yùn)行環(huán)境 3
2 總體設(shè)計(jì) 4
2.1設(shè)計(jì)思路 4
2.2軟件總體結(jié)構(gòu)圖 4
2.3主要功能模塊的設(shè)計(jì) 5
3 詳細(xì)設(shè)計(jì)與實(shí)現(xiàn) 6
3.1 界面模塊 6
3.1.1界面功能設(shè)計(jì) 7
3.1.2游戲主界面設(shè)計(jì) 7
3.1.3主界面主要代碼 8
3.2 各個(gè)界面 9
3.2.1登錄注冊(cè)界面功能設(shè)計(jì) 9
3.2.游戲界面設(shè)計(jì) 10
3.3 游戲區(qū) 10
3.3.1游戲區(qū)功能設(shè)計(jì) 11
3.3.2游戲區(qū)界面設(shè)計(jì) 11
3.3.3游戲區(qū)行列主要代碼 12
4 小結(jié)和展望 13
參 考 文 獻(xiàn) 14
-
引 言
1.1課程設(shè)計(jì)的目的
現(xiàn)如今,電子游戲已慢慢滲透進(jìn)人們生活中,并在扮演著越來(lái)越重的角色??梢哉f(shuō),隨著它的迅猛發(fā)展,現(xiàn)今的電子游戲已經(jīng)不僅僅是一種娛樂(lè),而是形成了一種文化現(xiàn)象。游戲本來(lái)的目的是為了要讓人們?cè)诿β档纳罟?jié)奏中放松身心,輕松一下、讓人娛樂(lè)的。單機(jī)游戲,指僅使用一臺(tái)計(jì)算機(jī)或者其它游戲平臺(tái)就可以獨(dú)立運(yùn)行的電子游戲。由于其不必連入互聯(lián)網(wǎng)也可進(jìn)行游戲從而擺脫了很多的限制,只需要一臺(tái)計(jì)算機(jī)即可體驗(yàn)游戲。
本游戲的制作屬于簡(jiǎn)單的益智類(lèi)游戲可以使玩家體驗(yàn)到娛樂(lè)與消遣,打地鼠作為娛樂(lè)性質(zhì)的游戲項(xiàng)目,可以鍛煉玩家的反應(yīng)能力,其次,本游戲可通過(guò)敲擊鍵盤(pán)來(lái)控制錘子打地鼠,還能鍛煉玩家對(duì)鍵盤(pán)的熟悉程度。
打地鼠游戲設(shè)計(jì)牽涉到圖像處理函數(shù)、以及鼠標(biāo)控制等各方面知識(shí),許多函數(shù)的使用方法可借鑒掃雷游戲的處理方法,通過(guò)對(duì)現(xiàn)有打地鼠游戲的改造,形成特有的TC下的打地鼠游戲。
1.2本選題的內(nèi)容要求
本游戲需要與一般的其他游戲一樣,能夠便捷地良好的界面使用人員能快捷簡(jiǎn)單的進(jìn)行操作。除此之外,還能即時(shí)準(zhǔn)確的獲得游戲結(jié)果
總結(jié)來(lái)說(shuō),本游戲應(yīng)該能夠滿足用戶的以下需求:
(1)能夠體驗(yàn)游戲的暢玩的感覺(jué)。
(2)有信息的數(shù)字化顯示,以方便所有用戶對(duì)游戲結(jié)果的了解。
(3)運(yùn)行歡迎界面和注冊(cè)登錄時(shí),可現(xiàn)實(shí)簡(jiǎn)單的動(dòng)畫(huà)效果,使游戲增添無(wú)限樂(lè)趣。
(4)運(yùn)行游戲時(shí),可出現(xiàn)時(shí)間限制,增加用戶對(duì)時(shí)間的觀點(diǎn)操作。
(5)點(diǎn)擊出現(xiàn)的地鼠,會(huì)觸發(fā)地鼠被打之后的照片特效,可增加用戶對(duì)本游戲暢玩的游戲快感。
1.3 軟件開(kāi)發(fā)運(yùn)行環(huán)境
C#是微軟公司發(fā)布的一種面向?qū)ο蟮摹⑦\(yùn)行于.NET Framework之上的高級(jí)程序設(shè)計(jì)語(yǔ)言。并定于在微軟職業(yè)開(kāi)發(fā)者論壇(PDC)上登臺(tái)亮相。C#是微軟公司研究員 AndersHejlsberg 的最新成果.C#看起來(lái)與Java有著驚人的相似;它包括了諸如單一繼承、接口、與Java幾乎同樣的語(yǔ)法和編譯成中間代碼再運(yùn)行的過(guò)程。但是C#與Java有著明顯的不同,它借鑒了Delphi的一個(gè)特點(diǎn),與COM(組件對(duì)象模型)是直接集成的,而且它是微軟公司.NET windows 網(wǎng)絡(luò)框架的主角。
C#是一種安全的、穩(wěn)定的、簡(jiǎn)單的、優(yōu)雅的,由C和C++衍生出來(lái)的面向?qū)ο蟮木幊陶Z(yǔ)言。它在繼承C和C++強(qiáng)大功能的同時(shí)去掉了一些它們的復(fù)雜特性(例如沒(méi)有宏以及不允許多重繼承)。C#綜合了VB簡(jiǎn)單的可視化操作和C++的高運(yùn)行效率,以其強(qiáng)大的操作能力、優(yōu)雅的語(yǔ)法風(fēng)格、創(chuàng)新的語(yǔ)言特性和便捷的面向組件編程的支持成為.NET開(kāi)發(fā)的首選語(yǔ)言。
-
總體設(shè)計(jì)
2.1設(shè)計(jì)思路
①顯示欄的設(shè)計(jì)及功能實(shí)現(xiàn):顯示欄主要包括打中次數(shù)、總點(diǎn)擊數(shù)、剩余時(shí)間三種常見(jiàn)顯示數(shù)據(jù)。其中打中次數(shù)表示鼠標(biāo)單擊擊中地鼠的次數(shù),總點(diǎn)擊數(shù)表示單機(jī)鼠標(biāo)次數(shù),剩余時(shí)間表示游戲結(jié)束時(shí)間(這里設(shè)置了三分鐘倒計(jì)時(shí))。
②畫(huà)圖區(qū)的設(shè)計(jì):對(duì)圖片的編輯處理區(qū)。
③設(shè)置欄的設(shè)計(jì):不同的文本框和按鈕生成游戲界面。
2.2軟件總體結(jié)構(gòu)圖
打地鼠的界面分為三部分,第一部分最上面的顯示欄部分,中間是游戲界面部分,最下面是設(shè)置欄按鈕部分。利用Visual Studio 2012 Windows窗體應(yīng)用程序首先開(kāi)始設(shè)計(jì)一個(gè)整體的界面,菜單欄中分別有:打中次數(shù)、總點(diǎn)擊數(shù)、剩余時(shí)間。顯示部分由登錄界面的圖片以及生成界面組成,定義打地鼠所需要的按鈕并賦給其按鈕名稱,使得使用打地鼠游戲簡(jiǎn)單明了,清晰可見(jiàn),操作輕松。
給各個(gè)按鈕進(jìn)行屬性設(shè)置,利用鼠標(biāo)點(diǎn)擊事件,當(dāng)鼠標(biāo)點(diǎn)擊某個(gè)按鈕時(shí)就開(kāi)始執(zhí)行那個(gè)按鈕所定義的設(shè)置,生成數(shù)據(jù)并顯示。

2.3主要功能模塊的設(shè)計(jì)
(1) 主界面功能表
注冊(cè)登錄
序號(hào) |
功能內(nèi)容 |
控件 |
對(duì)象名 |
備注 |
1 |
顯示輸入提醒 |
Lable1 |
輸入游戲ID |
|
2 |
轉(zhuǎn)跳到注冊(cè)界面 |
Button1 |
注冊(cè) |
|
3 |
轉(zhuǎn)跳到游戲界面 |
Button2 |
登錄 |
(2) 游戲界面功能表
序號(hào) |
功能內(nèi)容 |
控件 |
對(duì)象名 |
備注 |
1 |
游戲界面顯示 |
Panel |
panel1; |
|
2 |
開(kāi)始及界面生成 |
Panel |
panel2; |
|
3 |
開(kāi)始按鈕 |
Button |
button2; |
|
4 |
生成界面按鈕 |
Button |
button1; |
|
5 |
行列輸入 |
TextBox |
textBox1; |
|
6 |
提示輸入行列 |
Label |
label1; |
|
7 |
地鼠出現(xiàn)時(shí)間 |
Timer |
timer1; |
|
8 |
最上面顯示欄 |
Panel |
panel3; |
|
9 |
總點(diǎn)擊次數(shù) |
Label |
label5; |
|
10 |
總點(diǎn)擊次數(shù) |
Label |
label4; |
|
11 |
打中次數(shù) |
Label |
label3; |
|
12 |
打中次數(shù) |
Label |
label2; |
|
13 |
剩余時(shí)間 |
Label |
label7; |
|
14 |
剩余時(shí)間 |
Label |
label6; |
|
15 |
倒計(jì)時(shí)計(jì)時(shí) |
Timer |
timer2; |
-
詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)
3.1 界面模塊
3.1.1界面功能設(shè)計(jì)
打地鼠的主界面分為注冊(cè),登陸界面欄、游戲界面三部分。其中,游戲界面區(qū)實(shí)現(xiàn)了顯示欄實(shí)現(xiàn)了游戲的記錄、計(jì)時(shí)等操作;登錄界面欄實(shí)現(xiàn)了輸入賬號(hào)登錄,實(shí)現(xiàn)賬號(hào)注冊(cè)操作;狀態(tài)欄實(shí)現(xiàn)了顯示鼠標(biāo)當(dāng)前狀態(tài)。


3.1.2游戲主界面設(shè)計(jì)
打地鼠的主界面如下圖所示,在登入界面加入圖片,使其界面更為美觀;一開(kāi)始調(diào)明剩余時(shí)間讓玩家有三分鐘倒計(jì)時(shí)準(zhǔn)備。

圖3-1 主界面圖
3.1.3主界面主要代碼
namespace WindowsFormsApplication6
{
public partial class Form1 : For
{
public Form1()
{
InitializeComponent();
}
//設(shè)置游戲顯示界面最大,最小行列數(shù)
int DSIZE = 60;
int COUNT = 4;
Button[,] btn;
//游戲開(kāi)始按鈕的相關(guān)設(shè)置
點(diǎn)擊開(kāi)始后把button2屬性text由“開(kāi)始”變?yōu)椤巴V埂?/p>
private void button2_Click(object sender, EventArgs e)
{
if (button2.Text == "開(kāi)始")
{
timer1.Enabled = true;
button2.Text = "停止";
timer2.Start();
}
else
{
timer1.Enabled = false;
button2.Text = "開(kāi)始";
timer2.Stop();
}
}
private void panel1_MouseEnter(object sender, EventArgs e)
{
this.Cursor = new Cursor("imgs/hit.cur");//錘子
}
private void panel1_MouseLeave(object sender, EventArgs e)
{
this.Cursor = new Cursor("imgs/hit.cur");
}
private void panel1_Paint(object sender, PaintEventArgs e)
{
}
private void Form1_Click(object sender, EventArgs e)
{
int zong=int.Parse(label5.Text);
zong++;//點(diǎn)擊次數(shù)計(jì)數(shù)
label5.Text =zong + " ";
Button bn = (Button)sender;
if (bn.Tag.ToString() =="1" )
{
bn.BackgroundImage = Image.FromFile("imgs/heatmouse.png");//播放挨打
int dj = int.Parse(label3.Text);//打中次數(shù)
dj++;
label3.Text = dj + " ";
}
}
//游戲倒計(jì)時(shí)設(shè)置,180秒
int time = 180;
int count = 0;
private void timer2_Tick(object sender, EventArgs e)
{
count++; //計(jì)當(dāng)前秒
label7.Text = (time - count).ToString() + "秒";//顯示剩余時(shí)間 不需要提取,可以不加空格
if(count == time)
{
timer2.Stop();//時(shí)間到,停止計(jì)時(shí)
MessageBox.Show("時(shí)間到,游戲結(jié)束??!", "提示");//彈出提示框 show("內(nèi)容","標(biāo)題")
}
}
}
}
3.2 各個(gè)界面
3.2.1登錄注冊(cè)界面功能設(shè)計(jì)
登陸界面包括登錄界面和注冊(cè)界面兩部分。注冊(cè)新賬號(hào)保存在 name.txt
登錄時(shí)在文件中查找,實(shí)現(xiàn)代碼如下:

注冊(cè)界面實(shí)現(xiàn)代碼如下:
private void button1_Click(object sender, EventArgs e)
{
bool flage = true;
if (textBox1.Text == "")
MessageBox.Show("注冊(cè)名不能為空!");
else
{
string s;
StreamReader reader = new StreamReader("name.txt");
do
{
s = reader.ReadLine();
if (s == textBox1.Text)
{
flage = false;
MessageBox.Show("該用戶已注冊(cè)!");
}
}
while (!reader.EndOfStream && flage);
reader.Dispose();
if (flage)
{
StreamWriter writer = new StreamWriter("name.txt", true);
writer.WriteLine(textBox1.Text);
MessageBox.Show("用戶注冊(cè)成功,請(qǐng)進(jìn)行登錄!");
writer.Dispose();
}
3.2.2游戲界面設(shè)計(jì)
從本地資源中導(dǎo)入圖片進(jìn)行插入達(dá)到美觀效果

引入圖片包制作鼠標(biāo)、生成界面效果

3.3 游戲區(qū)
3.3.1游戲區(qū)功能設(shè)計(jì)
游戲區(qū)可以利用鼠標(biāo)單機(jī)生成的方塊格,電腦進(jìn)行識(shí)別計(jì)數(shù)。
3.3.2游戲區(qū)界面設(shè)計(jì)(例4*4)

圖3-9 畫(huà)圖界面
3.3.3游戲區(qū)行列主要代碼
private void button1_Click(object sender, EventArgs e)
{
panel1.Controls.Clear();
int x= int.Parse(textBox1.Text);//獲得輸入的數(shù)
if (x > COUNT)//
COUNT = x;
//圖片在界面顯示
btn=new Button[COUNT,COUNT];//申明一個(gè)二維數(shù)組
DSIZE = panel1.Width / COUNT;
for(int i = 0;i < COUNT;i++ )//
{
for(int j=0;j<COUNT;j++)
{
btn[i,j] = new Button();
// btn[i, j].Text = i + "," + j;//顯示坐標(biāo)
btn[i,j].BackgroundImage=Image.FromFile("imgs/field.png");
//顯示圖片
btn[i, j].BackgroundImageLayout = ImageLayout.Stretch;
//背景圖片布局,鋪滿
btn[i, j].Tag = 0;//0表示地洞,1表示地鼠
btn[i,j].Click+=Form1_Click;//委托
btn[i,j].Width = DSIZE;
btn[i,j].Height = DSIZE;
btn[i,j].Left = j * DSIZE;
btn[i,j].Top = i * DSIZE;
panel1.Controls.Add(btn[i,j]);
}
}
button1.Enabled = false;
button2.Enabled = true;
}
-
小結(jié)和展望
本文集中討論了一個(gè)基于C#的打地鼠游戲系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。文章首先分析了系統(tǒng)的關(guān)鍵技術(shù),包括C#、SQL技術(shù)等。接著在關(guān)鍵技術(shù)的基礎(chǔ)上,提出了打地鼠游戲系統(tǒng)的設(shè)計(jì),設(shè)計(jì)是基于對(duì)整個(gè)系統(tǒng)的需求分析的。最后,利用劃分模塊的方法實(shí)現(xiàn)了整個(gè)系統(tǒng)并進(jìn)行了測(cè)試。測(cè)試的結(jié)果表明,打地鼠游戲系統(tǒng)能夠?qū)τ脩暨M(jìn)行工作減壓和能夠打發(fā)無(wú)聊的時(shí)間,能夠快速地將結(jié)構(gòu)化的信息導(dǎo)出使用。同時(shí),測(cè)試結(jié)果也表明了打地鼠游戲系統(tǒng)具有可擴(kuò)展性強(qiáng)、事務(wù)處理速率快、響應(yīng)時(shí)間短、持續(xù)工作能力強(qiáng)等特點(diǎn)。
本游戲是以C#作為開(kāi)發(fā)語(yǔ)言、Visual Stduio 2012為開(kāi)發(fā)平臺(tái)來(lái)實(shí)現(xiàn)的。該系統(tǒng)的開(kāi)發(fā)以模塊化設(shè)計(jì)作為思想,編碼時(shí)十分注意編碼規(guī)范,充分吸取設(shè)計(jì)模式的精髓思想。不僅保證了程序的正常運(yùn)行,注釋詳盡、命名規(guī)范、可讀性強(qiáng)、可修改性強(qiáng)的一份代碼也保證了程序的可維護(hù)性、易維護(hù)性。
本游戲重點(diǎn)是在于對(duì)數(shù)據(jù)的處理,以及邏輯思維的運(yùn)用。當(dāng)游戲開(kāi)始時(shí),讀數(shù)據(jù)的處理也就開(kāi)始了,每次點(diǎn)擊出現(xiàn)的地鼠按鈕都調(diào)用分?jǐn)?shù)處理方法,對(duì)每個(gè)地鼠得分情況的分值進(jìn)行統(tǒng)計(jì)。邏輯思維方面的問(wèn)題,用Button點(diǎn)擊事件精準(zhǔn)而且簡(jiǎn)單。
但本游戲還可以盡量完善,就是游戲進(jìn)行聯(lián)機(jī)操作以及實(shí)現(xiàn)游戲分享等功能。還有待進(jìn)一步的開(kāi)發(fā)。開(kāi)所欠缺的知識(shí)太多,無(wú)法進(jìn)行。因?yàn)檫€沒(méi)有相關(guān)的技術(shù)以及相關(guān)的材料,所以聯(lián)機(jī)訪問(wèn)遠(yuǎn)程數(shù)據(jù)庫(kù)功能實(shí)現(xiàn),我會(huì)在學(xué)習(xí)這方面有關(guān)的知識(shí),讓游戲更加的完善,讓本游戲向商業(yè)化發(fā)展。
參考文獻(xiàn)
[1]朱浩悅,計(jì)算機(jī)軟件JAVA編程特點(diǎn)分析[M].黑龍江科技信息,2007
[2]邢翀,基于Java的在線考試系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[M].科技創(chuàng)新導(dǎo)報(bào),2015
[3] 王保羅.Java面向?qū)ο蟪绦蛟O(shè)計(jì)[M]. 北京:清華大學(xué)出版社,2003
[4] 張珣,楊三成.關(guān)鍵技術(shù)JSP與JDBC應(yīng)用詳解[M].中國(guó)鐵道出版,2010
[5] 劉騰紅,孫細(xì)明.信息系統(tǒng)分析與設(shè)計(jì)[M].北京:科學(xué)出版社,2003
[6] 于萬(wàn)波、劉其昌等.Java語(yǔ)言實(shí)用教程.北京:清華大學(xué)出版社,2008
[7] 畢廣吉.Java程序設(shè)計(jì)實(shí)例教程[M]. 北京:冶金工業(yè)出版社,2007
[8] 朱戰(zhàn)立,沈偉. Java程序設(shè)計(jì)實(shí)用教程〔M].北京:清華大學(xué)出版社,2005
[9] 耿祥義,張躍平.Java設(shè)計(jì)模式[M].北京:清華大學(xué)出版社,2009
[10] Bruce Eckel.Java編程思想[M].北京:機(jī)械工業(yè)出版社,2003
[11]王軍,基于Java的垂直搜索引擎的設(shè)計(jì)方式構(gòu)建[M].信息化建設(shè),2009文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-495054.html
評(píng)閱成績(jī): 評(píng)閱教師: 文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-495054.html
到了這里,關(guān)于C#課程設(shè)計(jì) ——小游戲打地鼠的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!