人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

VB小游戲:猜英雄

VB小游戲:猜英雄

更新時間:2022-07-21 文章作者:未知 信息來源:網絡 閱讀次數:

  相信不少讀者都看過央視的《水滸》吧,林沖、武松、李逵等英雄好漢的音容笑貌仿佛還浮現在我的眼前,那么108將中你最喜歡誰呢?我做了一個小程序來讓電腦猜測你的心思,程序界面如圖所示。



  為了簡化問題,我選擇了其中的27將,將他們分成3組,每組9人。如果你最喜歡其中的一個(比如史進),他在第一組出現了,那么就按下按鈕“第一組”。然后這27將會重新排列順序,你再找史進在哪一組,比如發現他在第二組,就按下按鈕“第二組”,畫面中的人物次序會再次打亂,再找史進所在組別……最多3次,電腦將會猜出你心中的英雄!

  知道了玩法,下面我將介紹程序是如何實現的:

  一、猜測的奧妙——推算原理

  猜測的原理其實也不復雜,我們來模擬一下猜測的過程大家就清楚了。程序初始化時是把1~27將隨機打亂分別放入PageControl控件的三個選項卡中,每個選項卡放9張圖片。點擊一次按鈕后其實不是盲目地將順序打亂,而是進行了篩選,把有用的圖片(就是點選的那組的9張圖片)篩選出來平均分配到PageControl控件的三個選項卡中,再把不需要的圖片集中起來平均分配到PageControl控件的三個選項卡中,最后在各個選項卡中把有用的、無用的圖片隨機打亂再次重新排列顯示出來,從而完成猜測。用表1來說明:

點擊按鈕的次數選項卡1選項卡2 選項卡3
1 3 33
2111
3000

  具體講,當第一次按下按鈕時,表示你相中的圖片在其中一個選項卡的9張圖片內。于是把這9張圖片均分成3份,每份3張,分別送入3個選項卡,其余的圖片就不做考慮了。當第二次按下按鈕時,表示你相中的圖片在其中一個選項卡的3張圖片內,于是把這3張圖片均分成3份,每份1張,分別送入3個選項卡,當第三次按下按鈕時,表示你相中的圖片在其中一個選項卡的1張圖片內,毫無疑問,這張圖片就是你相中的圖片,于是程序把這張圖片顯示出來。

  打亂重排的算法

  在程序中的很多地方要涉及打亂順序重排的問題,下面我們就來先簡單介紹一下打亂是如何實現的。

  這里要實現的方法是比較簡單的,也就是多次把數組的不同位置的值互換,就像讀小學時老師讓兩個同學互換位置一樣,老師不斷隨機抽兩個同學互換位置,最后同學們的座位就都重新排了一遍。

  舉個例子:

int i,temp1,temp2,a[2],b[27]
for(i=1;i<=27;i++)//先對數組賦初值
b[i]=i;
randomize();
for(i=1;i<=500;i++)//i的大小決定打亂的程度,循環次數越多,打亂程度越高
{
temp1=random(27)+1;
temp2=random(27)+1;
a[1]=b[temp1];
b[temp1]=b[temp[2];
b[temp2]=a[1];
}
//輸出
ListBox1->Clear();
for(i=1;i<=27;i++)
ListBox1->Items->Add(IntToStr(b[i]));

  如上例所示,經過打亂,b[27]數組將不再是舊時容顏。

  二、實現的關鍵——篩選算法的介紹

  在整個實現的過程中,如何在每一次打亂后對人物進行篩選是程序的關鍵所在,處理不好,程序就不會有結果。而且篩選很容易把你攪得頭暈腦脹,所以涉及的各個數組之間的關系一定要先理順,先用一個例子來解釋如何進行篩選。以點擊按鈕的次數是第一次并且點擊的按鈕是Button1為例加以介紹,其思路如下:

  初始:

  第一次執行按鈕事件并且按下的是Button1時(表a的數組就是關鍵數組):

  把表a打亂后平均拆分為3組分別送入內存緩沖區

  把表b和表c打亂后也平均拆分為3組分別送入內存緩沖區(非重要的數組),然后將它們進行組合,分別把有用的和無用的搭配重新組合為三張表并顯示出來:

  把全部的篩選過程表述出來:

  1.初始化:

  把a[1-27]打亂并將

  a[1-9] 賦給first[1-9]
  a[10-18] 賦給second[1-9]
  a[19-27] 賦給third[1-9]

  2.第一次按鈕事件(假設選中的是第二個選項卡)

  second[1-9]打亂后賦給temp1[1-3]、temp2[1-3]、temp3[1-3]
  a[1-9]+a[19-27]賦給temp4[1-18] 并打亂
  temp1[1-3]+temp4[1-6]賦給first[1-9]并打亂
  temp2[1-3]+temp4[7-12]賦給second[1-9] 并打亂
  temp3[1-3]+temp4[13-18]賦給third[1-9] 并打亂
 
  3.第二次按鈕事件(假設選中的是第二個選項卡)

  temp2[1-3]打亂后賦給temp5[1]、 temp6[1] 、temp7[1]
  temp1[1-3]+temp3[1-3]+temp4[1-18]賦給temp8[1-24]并打亂
  temp5[1]+temp8[1-8]賦給first[1-9] 并打亂
  temp5[2]+temp8[9-16]賦給second[1-9] 并打亂
  temp5[3]+temp8[17-24]賦給third[1-9] 并打亂

  4.第三次按鈕事件(如果選中的是第二個選項卡)

  把temp5[2]所對應的圖片顯示出來即可。

  最后分別把表a—表c打亂后顯示出來即可。 進行二次、多次篩選的方法都一樣,只是要注意相中的好漢在哪個數組里面,千萬別搞錯就行了。

  三、小結

  最后的工作就比較簡單了。可以設計一個友好的界面,然后在程序啟動的時候對數組賦初值,并顯示出來;對每個按鈕分別先進行次數判斷,然后進行前面講述的處理,不斷篩選直到剩下惟一的好漢后就可以顯示在界面的正下方了。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 澜沧| 清远市| 耿马| 大悟县| 靖宇县| 喜德县| 石台县| 江西省| 库车县| 舟山市| 四会市| 老河口市| 靖西县| 中江县| 潜江市| 乌苏市| 阳春市| 绥芬河市| 南漳县| 湾仔区| 邵东县| 乐亭县| 临洮县| 陆川县| 北安市| 济南市| 信宜市| 锦屏县| 卢龙县| 岳阳市| 和顺县| 长顺县| 定边县| 新郑市| 乌苏市| 淳安县| 鹰潭市| 吉安市| 江口县| 玉溪市| 尼玛县|