趙晴 馬致明
摘要:益智游戲是廣大學生家長比較喜歡的,同時也是經(jīng)實踐證明了的對小孩子的智力能力發(fā)育有很好的引導促進作用??谒闶呛笃趶碗s數(shù)學運算的基礎,在小學階段熟練掌握口算運算對以后的計算方面的學習有很好的促進作用,利用小孩子喜歡的撲克牌形式結合四則運算作為游戲規(guī)則,進行游戲對壘,可以很好地達到寓教于樂的目的。利用asp.net編程工具,結合C#程序語言進行算法設計,將撲克牌和口算二者結合起來,讓小孩子在其感興趣的領域的到口算的練習。文中介紹了有關的方法和技術,以供大家交流和研討。
關鍵詞:口算;游戲;撲克牌;asp.net;C#
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2018)10-0106-04
口算既是筆算、估算和簡便計算的基礎,又是計算能力的重要組成部分[1]。大量事實表明,基本口算熟練,筆算速度就快,正確率就高;反之,速度就慢,正確率就低。國家非常重視義務教育階段學生的素養(yǎng),并對學前教育階段和小學教育階段中的口算都有一定的要求[2]。《全日制義務教育數(shù)學課程標準》指出:“應重視口算,加強估算,提倡算法多樣化”,并明確規(guī)定了各個學段口算應達到的目標[3]。
而且隨著計算機的普及化,越來越多的小學生熱衷于電腦游戲,往往放學回家后就趴在電腦前面或者選擇英雄聯(lián)盟、穿越火線等大型游戲,又或者選擇消消樂等一些小游戲,歸根結底都是因為網(wǎng)絡上的游戲畫面色彩豐富,或逼真或卡通,給小學生以無限吸引力。
這無疑耗費了小學生們的大量精力和時間,而且小學階段是人一生中打基礎最佳階段,對以后的學習和發(fā)展有著極其重要的作用。
為了有效利用小學生這一階段充滿好奇心、吸收知識快、記憶力好等特點,讓小學生可以在電腦上在游戲的過程中練習四則運算,本文擬計劃開發(fā)一款以小孩喜愛的撲克牌為載體的在線益智口算游戲,讓小學生在游戲中學習,這樣既避免了獨自學習的枯燥乏味性,有契合了小學生愛玩的天性[4]。
1 撲克牌益智口算游戲
愛玩是小孩的天性,撲克牌是小孩最喜愛的益智“玩具”之一。若能借助撲克牌的點數(shù)通過游戲方式對小孩進行口算訓練,不失為一種寓教于樂的好方法。筆者通過實踐,發(fā)現(xiàn)用這種方法對小孩進行口算訓練非常有效,而且小孩也非常喜歡主動去玩。
撲克牌益智口算游戲根據(jù)不同年齡斷的小孩的口算能力的不同設置了不同的游戲難度等級,主要分為單一的加法運算,加減混合運算以及加減乘除四則混合運算[5]。
玩家選擇相應的游戲難度后,游戲直接跳轉到游戲主界面,由玩家點擊開始游戲按鈕后,系統(tǒng)分別給玩家和電腦各5張牌,系統(tǒng)默認玩家先出牌,但先出牌一方需遵守初次出牌規(guī)則:先出牌一方可以出單張,也可以出一對(2張),還可以出炸彈或一條龍(3張)。如果對方手中撲克牌的點數(shù)經(jīng)過相應的游戲規(guī)則剛好跟出的牌的點數(shù)一樣多,就可以出牌挑戰(zhàn),另一方如果還有相同的點數(shù)也可以繼續(xù)出,誰最后出的牌就可以贏得牌池中的這批牌作為積分累積。然后繼續(xù)摸牌,以保持手中有5張撲克牌。贏牌的人總是先出牌,直到一副撲克牌摸完。最后游戲通過贏得的積分數(shù)多少來決定輸贏!
一局游戲結束后,玩家可以選擇重新開始,繼續(xù)游戲該難度的對戰(zhàn),也可以選擇不同難度的對戰(zhàn),進入另一難度進行游戲。
2 在線撲克牌益智口算游戲的設計
2.1游戲規(guī)則的設定
包括級別(初級:加、減單一運算,根據(jù)運算數(shù)的范圍再劃分檔次;中級:加減混合運算;高級:四則運算)的劃分、計分規(guī)則、勝負統(tǒng)計等。
游戲級別在初級、中級、高級的基礎上再劃分為5以內、10以內、K(13)以內共計三級九檔的游戲級別。
游戲的積分規(guī)則按照一張撲克牌算一個積分進行統(tǒng)計,玩家和電腦輪番出牌,直到一方手中沒有符合規(guī)則的牌可出,然后系統(tǒng)統(tǒng)計本輪雙方共出多少張撲克牌,然后算作勝利一方的積分,勝方繼續(xù)出牌,直到一方手中的撲克牌完全出完,本局結束。
當本局游戲結束后系統(tǒng)統(tǒng)計雙方獲得的積分,獲得積分多的一方贏得本局勝利。
這款游戲對于不同的游戲難度采取不同的游戲規(guī)則。
初級游戲難度(5以內、10以內、K(13)以內的加法“+”):通過采用加法進行計算手中的撲克牌的點數(shù)是否和對方已出的撲克牌點數(shù)相等,若相等則可以繼續(xù)出牌,直到一方手中沒有符合要求的撲克牌時,本輪游戲結束,由勝利獲得本輪積分并繼續(xù)出牌,直到本局游戲結束。這個游戲難度適合剛剛開始學習簡單加法的小學生進行循序漸進的游戲練習。
中級游戲難度(5以內、10以內、K(13)的加減混合運算“+、-”):該游戲難度通過采用加減混合運算的方法進行計算手中的撲克牌點數(shù)是否和對方已出的撲克牌點數(shù)相等若相等則可以繼續(xù)出牌,直到一方手中沒有符合要求的撲克牌時,本輪游戲結束,由勝利獲得本輪積分并繼續(xù)出牌,直到本局游戲結束。這個游戲難度適合已經(jīng)掌握簡單加法并開始學習加減法混合運算的小學生進行游戲練習。
高級游戲難度(5以內、10以內、K(13)的四則混合運算“+、-、*、/”):該游戲難度通過采用加減乘除四則混合運算的方法進行計算手中的撲克牌點數(shù)是否和對方已出的撲克牌點數(shù)相等若相等則可以繼續(xù)出牌,直到一方手中沒有符合要求的撲克牌時,本輪游戲結束,由勝利獲得本輪積分并繼續(xù)出牌,直到本局游戲結束。這個游戲難度適合已經(jīng)學習加減乘除四則混合運算并掌握了九九乘法表的小學生進行分階段的鞏固練習。
游戲設置不同的游戲難度等級是為了適應小學生在不同數(shù)學運算階段進行鍛煉學習,讓他們可以結合自己的實際掌握水平在游戲的過程中逐漸增強自己的口算能力,以期達到寓教于樂的目的。
2.2 開發(fā)平臺的選擇
經(jīng)考慮分析采用asp.net編程工具,使用HTML5進行前端界面設計和C#程序語言進行算法設計。ASP.NET 是.NET FrameWork的一部分,是一項微軟公司的技術,是一種使嵌入網(wǎng)頁中的腳本可由因特網(wǎng)服務器執(zhí)行的服務器端腳本技術,它可以在通過HTTP請求文檔時再在Web服務器上動態(tài)創(chuàng)建它們[6]。 指 Active Server Pages(動態(tài)服務器頁面) ,運行于 IIS(Internet Information Server 服務,是Windows開發(fā)的Web服務器)之中的程序 。HTML是一種規(guī)范,一種標準,它通過標記符號來標記要顯示的網(wǎng)頁中的各個部分[7]。C#是微軟公司發(fā)布的一種安全的、穩(wěn)定的、簡單的、優(yōu)雅的,由C和C++衍生出來的面向對象的運行于.NET Framework之上的高級程序設計語言[8]。利用C#編寫語言結合asp.net開發(fā)平臺開發(fā)者可以設計出可以直接在網(wǎng)頁上完美運行的網(wǎng)頁游戲。游戲成功發(fā)布后,用戶可以直接在網(wǎng)上進行游戲體驗,真正達到與游戲中提升自己的反應速度和口算能力。
2.3 游戲的流程設計
游戲流程主要有游戲難度選擇、出牌、提示、不出、統(tǒng)計雙方獲得的積分、判斷哪方勝利、重新開始等。
玩家進入游戲前需要先根據(jù)自己對口算的掌握程度,選擇適合自己的游戲等級,然后進入游戲界面,在系統(tǒng)發(fā)牌完畢后,率先出牌。電腦判斷是否有牌可出并出牌或不出。當玩家找不到可出的撲克牌組合時可以利用提示進行出牌,直到有一方不出,則本輪結束,有勝利的一方繼續(xù)出牌,直到本局結束,系統(tǒng)統(tǒng)計雙方獲得的積分然后判斷出獲勝的一方。一局游戲對戰(zhàn)結束后,玩家可以選擇重新開始繼續(xù)本難度等級的練習也可以選擇其他難度等級進行游戲練習。
游戲的主要流程圖如圖1。
3 在線撲克牌益智口算游戲的開發(fā)
3.1 設計思路
本文選擇中級難度等級(10以內)加減法混合運算進行游戲設計思路的解釋。
10以內的加減法混合運算,主要是指玩家在選擇改難度等級后,系統(tǒng)給玩家和電腦雙方發(fā)牌的牌面大小為1到10以內的撲克牌,雙方需要按照游戲規(guī)則把手中的撲克牌進行10以內的加、減以及加減混合運算進行游戲對戰(zhàn)。
游戲具體流程圖如圖2。
玩家進入游戲難度等級選擇界面后,選擇中級游戲難度(10以內的加減混合運算“+、-”)。界面進入游戲主界面,玩家點擊開始對戰(zhàn)按鈕;系統(tǒng)開始給游戲雙方發(fā)牌,對壘雙方人手5張10以內的撲克牌;
系統(tǒng)默認玩家先出牌,初次出牌須符合第一次出牌規(guī)則,即玩家可以出單張、對子(兩張)、炸彈或一條龍(三張);玩家出牌后,電腦開始進行判斷,如果手中的牌可以通過加減法混合運算后得到和玩家出的牌的和大小一樣,則出牌成功,然后玩家出牌,當玩家不確定手中的牌是否有符合要求的組合時,可以點擊提示按鈕,系統(tǒng)給出提示或者直接給出“沒有符合要求的牌”,這種情況下系統(tǒng)提示本輪電腦獲勝并獲得相應積分;反之則玩家獲勝。
本游戲共設計3級9檔游戲模式,除采用的運算方法有差異外在其他方面都采用和10以內的加減混合運算相同的模式,方便不同口算水平的小孩子進行游戲練習。
3.2游戲界面的設計
游戲界面主要分為游戲名稱、制作單位、游戲難度等級選項以及游戲主界面。用戶通過左側列表選擇相應的游戲難度,在游戲過程中電腦和用戶的積分實時統(tǒng)計并顯示,同時本輪游戲的點數(shù)也會顯示出來以提醒用戶。
3.3 發(fā)牌模塊的設計
本設計將發(fā)牌過程設計為兩個步驟,第一步系統(tǒng)生成隨機數(shù),隨機數(shù)的大小和玩家選擇的游戲難度等級相適應,根據(jù)隨機數(shù)的大小對四種不同花色的撲克牌進行洗牌。第二步系統(tǒng)再次生成0到4的隨機分別對應不同的花色,然后根據(jù)隨機數(shù)的大小選擇發(fā)牌的花色,如果該花色的牌組不為空,則把排在第一位的撲克牌發(fā)給玩家或電腦,直到雙方都擁有5張撲克牌。
有關洗牌、發(fā)牌的部分代碼如下:
private List
{
int index = 0;
int temp = 0;
for (int i = 0; i < myList.Count; i++)
{
index = GetRandom(myList.Count - 1);
if (index != i)
{
temp = myList[i];
myList[i] = myList[index];
myList[index] = temp;
}
}
return myList;
}
private void fapai()
{
//用戶的牌
int ik = 0;
while (u.Count < 5)
{
if (ik > 5)
break;
ik++;
int i = paise();//調用paise()函數(shù)獲取隨機牌色標號
if (i == 0)
{
//結束
}
else if (i == 1)//表示獲取第一種牌色的牌一張
{
int x = a.First();
u.Add("a" + x.ToString());
a.RemoveAt(0);
}
3.4 出牌模塊的設計
以用戶出牌為例,玩家首先選擇要出的牌,選中后點擊出牌按鈕,然后系統(tǒng)進行判斷。
protected void Button1_Click(object sender, EventArgs e)
{//出牌
tishi.Text = "";
Button3.Enabled = true;
List
List
int i = 0;
if (d1.Checked)
{
i++;
lt.Add(u[0]);
lt1.Add(int.Parse(u[0].TrimStart('a').TrimStart('b').TrimStart('c').TrimStart('d')));
d1.Checked = false;
}
如果玩家沒有選擇牌而點擊了出牌,則系統(tǒng)提示玩家“請選擇要出的牌”。
if (i == 0)
{
tishi.Text = "請選擇要出的牌";
return;
}
對玩家選擇要出的牌進行判斷,如果玩家是首次出牌,則需要判斷出牌是否符合首次出牌規(guī)則。
if (ci == 0)//出牌去牌數(shù)為0
{//首次出牌
if (lt1.Count != 1 && !chupaiguize.duizi(lt1) && !chupaiguize.shunzi(lt1) && !chupaiguize.zhadan(lt1))
{//不符合規(guī)則
tishi.Text = "出牌不合規(guī)則!";
return;
}
3.5 提示及勝負統(tǒng)計模塊的設計
當玩家不知道該如何出牌時,點擊提示按鈕,系統(tǒng)給出符合運算規(guī)則的排列組合。玩家可依據(jù)提示進行選擇出牌。
protected void Button3_Click(object sender, EventArgs e)
{//提示
List
foreach (string str in u)
{
li.Add(int.Parse(str.TrimStart('a').TrimStart('b').TrimStart('c').TrimStart('d')));
}
List
if (daichu.Count == 0)
tishi.Text = "沒有可出的牌";
else
{
string str="";
int ii = 0;
foreach( int ik in daichu )
{
ii += ik;
str += ik.ToString() + "+";
}
str = str.TrimEnd('+');
tishi.Text = "提示:"+str+"="+ii.ToString();
}
}}
當用戶把手中的撲克牌全部出完后,系統(tǒng)提示本輪玩家勝利,并統(tǒng)計雙方獲得積分,比較積分的大小,獲得積分多的一方獲勝,本局游戲結束。
if (daichu.Count == 0)
{//本輪用戶獲勝
tishi.Text = "本輪用戶獲勝!獲得積分:" + ci.ToString();
yhfenshu.Text = (int.Parse(yhfenshu.Text) + ci).ToString();
ci = 0;
cvi.Clear();
cui.Clear();
if (!kaishi)
{
int yf = int.Parse(yhfenshu.Text) + u.Count + v.Count;
yhfenshu.Text = yf.ToString();
int df = int.Parse(dnfenshu.Text);
if (df > yf)
tishi.Text = "本局電腦獲勝!";
else if (df < yf)
tishi.Text = "本局用戶獲勝!";
else
tishi.Text = "本局平局!";
}
return;
}
4 結論
本文就口算能力的提升對小學生數(shù)學學習的重要性進行了闡述,并分析了當下小學生對電腦游戲的癡迷和盲目喜歡。為了讓小學生在自己感興趣的撲克牌游戲環(huán)境中獲得口算能力的提升,利用網(wǎng)頁設計技術,制作出一款可供玩家在網(wǎng)上進行游戲的撲克牌益智口算網(wǎng)頁游戲,很好地讓小學生們在游戲中獲得知識的提升,寓教于樂,充分利用小學生階段愛玩的天性,將四則運算的口算能力,在潛移默化中為小學生們吸收。讓他們對數(shù)學感興趣,為以后的初中、高中、大學的理科學習打下良好的基礎。雖然游戲初期設計的比較簡單,界面比較簡陋,但我會不斷提升自己的實力,對游戲進行優(yōu)化,以期制作出一款界面契合小學生需求,可玩性、耐玩性都比較高的在線益智口算游戲。
本款游戲是在導師馬致明教授的啟發(fā)指導下開發(fā)設計的,在后期的開發(fā)設計過程中得到了導師以及同學朋友們的幫助和支持,在此感謝導師和大家的幫助,同時我也會不斷努力,希望這款游戲能夠得到廣大小學生和家長的青睞。
參考文獻:
[1] 劉長穎. 小學生加、減法口算時間分析[D]. 大連:遼寧師范大學, 2005.
[2] 陳暉. 學前教育專業(yè)學生語文素養(yǎng)的培養(yǎng)途徑分析[J]. 教育教學論壇, 2016(41):274-275.
[3] 吳開道. 優(yōu)化口算教學迫在眉睫[J]. 教師, 2010(28):49-49.
[4] 胡芍. 試論家校共育背景下的小學語文教學[J]. 中華少年,2017(31).
[5] 尹中卿. 要善于做加減乘除四則混合運算[J]. 中國人大, 2009(11):25-25.
[6] 武漢厚溥教育科技有限公司. ASP.NET網(wǎng)站開發(fā)[M].北京: 清華大學出版社, 2016.
[7] 張趙輝. 探析網(wǎng)頁前端技術及其升華[J]. 科技致富向導, 2015(2):67-67.
[8] 田娟. 學校教職工體檢管理信息系統(tǒng)的設計與實現(xiàn)[D].成都: 電子科技大學, 2014.