班級:奈米一乙 學號: 姓名:陳聖倫 老師:謝慶存

Slides:



Advertisements
Similar presentations
FCU, Department of ECE, IC Design Research Lab. TEL: # 4945 Pre-SIm , Post-Sim.
Advertisements

1 生物計算期末作業 暨南大學資訊工程系 2003/05/13. 2 compare f1 f2  只比較兩個檔案 f1 與 f2 ,比完後將結果輸出。 compare directory  以兩兩比對的方式,比對一個目錄下所有檔案的相 似程度。  將相似度很高的檔案做成報表輸出,報表中至少要.
: Arrange the Numbers ★★★☆☆ 題組: Contest Archive with Online Judge 題號: 11481: Arrange the Numbers 解題者:李重儀 解題日期: 2008 年 9 月 13 日 題意: 將數列 {1,2,3, …,N}
: A-Sequence 星級 : ★★☆☆☆ 題組: Online-judge.uva.es PROBLEM SET Volume CIX 題號: Problem D : A-Sequence 解題者:薛祖淵 解題日期: 2006 年 2 月 21 日 題意:一開始先輸入一個.
1 Q10276: Hanoi Tower Troubles Again! 星級 : ★★★ 題組: Online-judge.uva.es PROBLEM SET Volume CII 題號: Q10276: Hanoi Tower Troubles Again! 解題者:薛祖淵 解題日期: 2006.
3Com Switch 4500 切VLAN教學.
期末專題 - 吊人頭遊戲 第 35 組 組員 : 電機系 49841XXXX XXX 電機系 49841OOOO OOO.
What is static?. Static? 靜態 ? class Test { static int staticX; int instanceX; public Test(int var1, int var2) { this.staticX = var1; this.instanceX =
1 第一章 Word 的基本觀念 內容概要: Word 的特色 啟動與離開 Word 的方法 滑鼠游標與外型的介紹 基本操作 Word 視窗法則 使用 Word 遭遇問題時, 應如何利用軟體特 性而獲得輔助解說.
: Boxes ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 11003: Boxes 解題者:蔡欣燁 解題日期: 2007 年 3 月 19 日.
五小專案 黃詩晴 章乃云. 目錄 計算機 智慧盤 拼圖 記憶大挑戰 數學題庫 心得 參考文獻.
微生物研究法 研 C 1. What is Hela cell 2. Cell density and doubling time 3. Cell growth curve 碩一 曾仁志.
:New Land ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 11871: New Land 解題者:施博修 解題日期: 2011 年 6 月 8 日 題意:國王有一個懶兒子,為了勞動兒子,他想了一個 辦法,令他在某天早上開始走路,直到太陽下山前,靠.
Chapter 3 Growth of Functions Asymptotic notation Θ-notation: f(n) = Θ(g(n)) , g(n) is an asymptotically tight bound for f(n) 。 Θ(g(n)) = {f(n)|
STAT0_sampling Random Sampling  母體: Finite population & Infinity population  由一大小為 N 的有限母體中抽出一樣本數為 n 的樣 本,若每一樣本被抽出的機率是一樣的,這樣本稱 為隨機樣本 (random sample)
: Matrix Decompressing ★★★★☆ 題組: Contest Volumes with Online Judge 題號: 11082: Matrix Decompressing 解題者:蔡權昱、劉洙愷 解題日期: 2008 年 4 月 18 日 題意:假設有一矩陣 R*C,
Web Meeting 使用教學 ─ 學生版.  如何即時線上與老師互動? 一. 瀏覽太御科技首頁 二. 安裝 JoinNet 在首頁的左手邊 1. 下載 JoinNet 進行安裝 JoinNet.
1 網路同步學習 如何使用中山大學管理學院知識管理平台 愷中 製作. 2 如何登入中山大學網路學習平台 1. 首先, 請輸入 2. 點選申請帳號, 依照螢幕所示, 輸入個人資訊.
電腦攻擊與防禦 使用電腦教室 vmware 軟體說 明. 開機說明  選擇第二項 :Xp+VM 開機 Account: SNMG Pass:pc208.
JAVA 程式設計與資料結構 第十章 GUI Introdution III. File Chooser  File Chooser 是一個選擇檔案的圖形介面, 無論我們是要存檔還是要開啟檔案,使 用這個物件都會讓我們覺得容易且舒適。
南投縣社區大學 Excel 實務應用入門 講師 : 林泉成
Introduction to Java Programming Lecture 17 Abstract Classes & Interfaces.
24-6 設定開始與結束場景中的 程式 最後我們要替這個遊戲收個尾, 幫它把開始 的等待畫面跟結束畫面處理一下。
影像處理學習營 練習(四)製作影片 【下】 影像處理學習營 教師 吳清月. 製作影片 學習重點 一. 設定影片秒數。  加入音樂,與影片做結合。 三. 影片存檔方式之選擇  上傳到網路.
: The largest Clique ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11324: The largest Clique 解題者:李重儀 解題日期: 2008 年 11 月 24 日 題意: 簡單來說,給你一個 directed.
3-3 使用幾何繪圖工具 Flash 的幾何繪圖工具包括線段工具 (Line Tool) 、橢圓形工具 (Oval Tool) 、多邊星形 工具 (Rectangle Tool) 3 種。這些工具畫出 來的幾何圖形包括了筆畫線條和填色區域, 將它們適當地組合加上有技巧地變形與配 色, 不但比鉛筆工具簡單,
Matlab Assignment Due Assignment 兩個 matlab 程式 : Eigenface : Eigenvector 和 eigenvalue 的應用. Fractal : Affine transform( rotation, translation,
: Tight words ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: : Tight Words 解題者:鐘緯駿、林一帆 解題日期: 2006 年 03 月 14 日 題意: 給定數字 k 與 n (0 ≦ k.
: War on Weather ★★☆☆☆ 題組: Contest Volumes Archive with Online Judge 題號: 10915: War on Weather 解題者:陳明凱 題意:題目總共會給你 k 個點座標代表殺手衛星的位置, 距離地球表面最少 50 公里以上,並且會給你.
: Happy Number ★ ? 題組: Problem Set Archive with Online Judge 題號: 10591: Happy Number 解題者:陳瀅文 解題日期: 2006 年 6 月 6 日 題意:判斷一個正整數 N 是否為 Happy Number.
影像處理學習營 練習(三)製作影片 【上】 影像處理學習營 教師 吳清月. 製作影片 學習重點 一. 利用 movie maker 軟體,編輯相片。  加上文字幕,與圖片結合。
選舉制度、政府結構與政 黨體系 Cox (1997) Electoral institutions, cleavage strucuters, and the number of parties.
: Little Red Riding Hood ★★★☆☆ 題組: Contest Volumes Archive with Online Judge 題號: 11067: Little Red Riding Hood 解題者:陳明凱 解題日期: 2008 年 3 月 14 日 題意:
1 第 9 章 視窗應用程式的事件處理 9-1 事件的基礎 9-1 事件的基礎 9-2 表單事件 9-2 表單事件 9-3 滑鼠事件 9-3 滑鼠事件 9-4 鍵盤事件 9-4 鍵盤事件 9-5 表單的鍵盤事件 9-5 表單的鍵盤事件 9-6 控制項的事件 9-6 控制項的事件.
短缺,盈餘與均衡. 遊戲規則  老師想出售一些學生喜歡的小食。  老師首先講出價錢,有興趣買的請舉手。
: Multisets and Sequences ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 11023: Multisets and Sequences 解題者:葉貫中 解題日期: 2007 年 4 月 24 日 題意:在這個題目中,我們要定義.
: Robot Motion ★★☆☆☆ 題組: Problem Set Archive with Online Judge 題號: : Robot Motion 解題者:鄭昀旻 解題日期: 2009 年 5 月 20 日 題意:有一機器人會從網格的上(N)方進入, 依網格上之E、W、S、N之指令來行走,題目.
:Nuts for nuts..Nuts for nuts.. ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 10944:Nuts for nuts.. 解題者:楊家豪 解題日期: 2006 年 2 月 題意: 給定兩個正整數 x,y.
資料結構實習-一 參數傳遞.
企二 A 管理程式設計 Visual Basic 6.0 Visual Basic 6.0 Visual Basic 6.0 企二 A 管理程式設計 Visual Basic 6.0 Visual Basic 6.0 Visual Basic 6.0許翠婷
公用品.  該物品的數量不會因一人的消費而受到 影響,它可以同時地被多人享用。 角色分配  兩位同學當我的助手,負責:  其餘各人是投資者,每人擁有 $100 , 可以投資在兩種資產上。  記錄  計算  協助同學討論.
: Problem G e-Coins ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 10306: Problem G e-Coins 解題者:陳瀅文 解題日期: 2006 年 5 月 2 日 題意:給定一個正整數 S (0
Section 4.2 Probability Models 機率模式. 由實驗看機率 實驗前先列出所有可能的實驗結果。 – 擲銅板:正面或反面。 – 擲骰子: 1~6 點。 – 擲骰子兩顆: (1,1),(1,2),(1,3),… 等 36 種。 決定每一個可能的實驗結果發生機率。 – 實驗後所有的實驗結果整理得到。
JAVA 程式設計與資料結構 第二十章 Searching. Sequential Searching Sequential Searching 是最簡單的一種搜尋法,此演 算法可應用在 Array 或是 Linked List 此等資料結構。 Sequential Searching 的 worst-case.
演算法 8-1 最大數及最小數找法 8-2 排序 8-3 二元搜尋法.
2010 MCML introduction 製作日期: 2010/9/10 製作人 : 胡名霞.
: Expect the Expected ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11427: Expect the Expected 解題者:李重儀 解題日期: 2008 年 9 月 21 日 題意:玩一種遊戲 (a game.
Linguistics phonetic symbols. 先下載 IPA 字型檔案,執行安裝。 由於這個程式的字型目錄設定錯誤, 所以等重新開機時就會發現字型消失。 所以必須根據以下步驟來讓 Windows 加入 IPA 字型。
© The McGraw-Hill Companies, Inc., 2006© The McGraw-Hill Companies, Inc., 2007 Chapter 4 IP 定址:分級式定址.
課程:學位教師文憑課程 年 度 課程:學位教師文憑課程 年 度 科目: DEP5114B/G 常識科 ( 副修科 ) 科目: DEP5114B/G 常識科 ( 副修科 ) 導師:香港中文大學教育學院 麥思源教授 導師:香港中文大學教育學院 麥思源教授 學生:鄭家駒.
程式設計 Visual Basic 6.0 Visual Basic 6.0 Visual Basic 6.0 程式設計 Visual Basic 6.0 Visual Basic 6.0 Visual Basic 6.0許翠婷
: Problem E Antimatter Ray Clearcutting ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 11008: Problem E Antimatter Ray Clearcutting 解題者:林王智瑞.
Teacher : Ing-Jer Huang TA : Chien-Hung Chen 2015/6/30 Course Embedded Systems : Principles and Implementations Weekly Preview Question CH7.1~CH /12/26.
:Commandos ★★★☆☆ 題組: Contest Archive with Online Judge 題號: 11463: Commandos 解題者:李重儀 解題日期: 2008 年 8 月 11 日 題意: 題目會給你一個敵營區內總共的建築物數,以及建築物 之間可以互通的路有哪些,並給你起點的建築物和終點.
資料結構實習-六.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2010.
: SAM I AM ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11419: SAM I AM 解題者:李重儀 解題日期: 2008 年 9 月 11 日 題意: 簡單的說,就是一個長方形的廟裡面有敵人,然 後可以橫的方向開砲或縱向開砲,每次開砲可以.
:Count the Trees ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 10007:Count the Trees 解題者:楊家豪 解題日期: 2006 年 3 月 題意: 給 n 個點, 每一個點有自己的 Label,
: Finding Paths in Grid ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11486: Finding Paths in Grid 解題者:李重儀 解題日期: 2008 年 10 月 14 日 題意:給一個 7 個 column.
:Problem E.Stone Game ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 10165: Problem E.Stone Game 解題者:李濟宇 解題日期: 2006 年 3 月 26 日 題意: Jack 與 Jim.
著作權所有 © 旗標出版股份有限公司 第 14 章 製作信封、標籤. 本章提要 製作單一信封 製作單一郵寄標籤.
Running Cat 周弘禮 林靖雅 王柔文.
1 柱體與錐體 1. 找出柱體與錐體的規則 2. 柱體的命名與特性 3. 柱體的展開圖 4. 錐體的命名與特性 5. 錐體的展開圖
學校 : 南台科技大學 姓名洪聖鈞 班級 : 車輛一甲 學號 :4A 指導老師 : 謝慶存 題目 : 抽牌比大小遊戲.
滑鼠事件 & 鍵盤事件. 滑鼠事件 (MouseDown,MouseMove,MouseUp) Public Class Form1 Dim drag As Boolean = False ' 宣告 drag 變數, 用來記錄是否可拖曳 Private Sub Form1_Load(ByVal sender.
記憶大考驗 機械工程系 四技車輛一甲 學號 :4A 老師 : 謝慶存 曾慶宇. + 選擇你要玩的等級就可以開始玩了.
南台科技大學 機械工程系 奈米一乙 學號 :4A 老師 : 謝慶存 計算機程式及實習 期末報告 ppt 製作 泡麵品牌票選 題目 : 泡麵品牌票選.
題目 : 真好運客運 南臺科技大學 機械工程系 班級 : 奈米一乙 學號 :4A 姓名 : 李宗益 授課教師 : 謝慶存 計算機程式及實習 期末報告.
計算機程式及實習及期末報告 題目 : 長榮公司 南臺科技大學 機械工程系 班級 : 奈米一乙 學號 :4A 姓名 : 陳紀舜 授課教師 : 謝慶存.
Ajax 模組 timer 用法. 安裝 ASPAJAXExtSetup 編輯 ASP.NET 工具用.
Presentation transcript:

班級:奈米一乙 學號:49914019 姓名:陳聖倫 老師:謝慶存 小老鼠走迷宮 班級:奈米一乙 學號:49914019 姓名:陳聖倫 老師:謝慶存

程式介面

選擇迷宮 開始 老鼠 出口

程式碼 Public Class Form1 Dim PicBox(50, 50) As PictureBox Dim SqWidth, FWidth, FHeight, MazeX, MazeY, k, Totalm, Totaln, x, y, dx, dy, AI, Steps(50, 50) As Integer Dim Map(50, 50) As Integer Dim StepTotal As Integer Dim RandMapVal As Single Dim newgames As Boolean Dim title As String Dim cross(50, 50) As Integer Dim InMaze As IO.StreamReader Dim ImPortF, InString As String Dim MapRow, StartPx, StartPy, EndPx, EndPy, TotalStep As Integer

Private Sub Form1_Load(ByVal sender As System Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load title = "老鼠走迷宮" Me.Text = title Me.ShowPath.Enabled = False Me.Stopmouse.Enabled = False EditMaze.CheckOnClick = True ToolStatus.Text = "閒置中" newgames = True MazeX = 50 MazeY = 50 SqWidth = 15 FWidth = SqWidth * (MazeX + 3) FHeight = SqWidth * (MazeY + 4) + 40 Me.Width = FWidth Me.Height = FHeight For i As Integer = 1 To 50 For j As Integer = 1 To 50 Call initial(i, j) Next InMaze = IO.File.OpenText("MazeMap.txt") Call MapGen() End Sub

Sub initial(ByVal i As Integer, ByVal j As Integer) Dim mypic As New PictureBox Me.Controls.Add(mypic) PicBox(i, j) = mypic End Sub Private Sub AddEvents(ByVal CtrlParent As Control) Dim pic As Control For Each pic In CtrlParent.Controls If TypeOf pic Is PictureBox Then AddHandler pic.MouseClick, AddressOf MapEdit End If Next

Private Sub MapEdit(ByVal sender As Object, ByVal e As System. Windows Private Sub MapEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) If NewMap.Enabled = True Then Exit Sub End If ToolStatus.Text = "迷宮編輯中" With DirectCast(sender, PictureBox) If e.Button = Windows.Forms.MouseButtons.Left Then If .Tag = 1 Then .BackColor = Color.White .Tag = 0 Else .BackColor = Color.Black .Tag = 1 If e.Button = Windows.Forms.MouseButtons.Right Then If .Tag = 0 Or .Tag = 1 Or .Tag = 3 Then .BackColor = Color.Chocolate .Tag = 2 ElseIf .Tag = 2 Then .BackColor = Color.LawnGreen .Tag = 3 End With End Sub

Sub newgameset(ByVal i As Integer, ByVal j As Integer) Dim Px, Py As Integer Me.ShowPath.Enabled = True If i > MazeX Or j > MazeY Then Px = MazeX * SqWidth Py = MazeY * SqWidth + 15 Map(i, j) = 1 Else Px = i * SqWidth Py = j * SqWidth + 15 End If With PicBox(i, j) .SetBounds(Px, Py, SqWidth, SqWidth) .BackColor = Color.White .Tag = 0 If i = 1 Or j = 1 Or i = MazeX Or j = MazeY Then .BackColor = Color.Black .Tag = 1 If i = StartPx And j = StartPy Then .BackColor = Color.Chocolate .Tag = 2 If i = EndPx And j = EndPy Then .BackColor = Color.LawnGreen .Tag = 3 End With End Sub

Sub retag() If newgames = False Then PicBox(x, y).BackColor = Color.White Else PicBox(StartPx, StartPy).BackColor = Color.Chocolate PicBox(EndPx, EndPy).BackColor = Color.LawnGreen End If newgames = False Dim i, j As Integer For i = 0 To MazeX For j = 0 To MazeY Steps(i, j) = 100000 If i > 0 And j > 0 Then With PicBox(i, j) If .Tag = 0 Then .BackColor = Color.White Steps(i, j) = 1 cross(i, j) = 0 ElseIf .Tag = 3 Then Steps(i, j) = 0 .BackColor = Color.LawnGreen ElseIf .Tag = 2 Then .BackColor = Color.Chocolate .BackColor = Color.Black End With Next j Next i End Sub

Private Sub ShowPath_Click(ByVal sender As System Private Sub ShowPath_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ShowPath.Click x = StartPx y = StartPy TotalStep = 0 AI = 1 Call retag() PicBox(EndPx, EndPy).BackColor = Color.LawnGreen Me.Stopmouse.Enabled = True ShowPath.Enabled = False Steps(x, y) = 10000 Timer1.Interval = 100 Timer1.Enabled = True End Sub

Private Sub Timer1_Tick(ByVal sender As System Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Timer1.Tick Dim MinStep As Integer = 10000 Me.Text = title + " 步數:" + CStr(TotalStep) ToolStatus.Text = "(" & CStr(x) & "," & CStr(y) & ")" Randomize() k = 0 If Steps(x + 1, y) <= 1000 Then k = k + 1 End If If Steps(x, y + 1) <= 1000 Then If Steps(x - 1, y) <= 1000 Then If Steps(x, y - 1) <= 1000 Then If k > 2 Then cross(x, y) = cross(x, y) + 1 If cross(x, y) > 1 Then Steps(x, y) = Steps(x, y) - 1 cross(x, y) = 0

If Steps(x + 1, y) <= MinStep Then MinStep = Steps(x + 1, y) k = k + 1 End If If Steps(x, y + 1) <= MinStep Then MinStep = Steps(x, y + 1) If Steps(x - 1, y) <= MinStep Then MinStep = Steps(x - 1, y) If Steps(x, y - 1) <= MinStep Then MinStep = Steps(x, y - 1) If (PicBox(x + 1, y).Tag = 0 Or PicBox(x + 1, y).Tag = 3) And Steps(x + 1, y) = MinStep And Steps(x + 1, y) < 8 Then dx = 1 dy = 0 ElseIf (PicBox(x, y + 1).Tag = 0 Or PicBox(x, y + 1).Tag = 3) And Steps(x, y + 1) = MinStep And Steps(x, y + 1) < 8 Then dx = 0 dy = 1 ElseIf (PicBox(x - 1, y).Tag = 0 Or PicBox(x - 1, y).Tag = 3) And Steps(x - 1, y) = MinStep And Steps(x - 1, y) < 8 Then dx = -1 ElseIf (PicBox(x, y - 1).Tag = 0 Or PicBox(x, y - 1).Tag = 3) And Steps(x, y - 1) = MinStep And Steps(x, y - 1) < 8 Then dy = -1 Else

Call fittness() End If x = x + dx y = y + dy If x = EndPx And y = EndPy Then TotalStep = TotalStep + 1 Me.Text = title + " 總算找到了" + " 步數:" + CStr(TotalStep) PicBox(x, y).BackColor = Color.Chocolate PicBox(x - dx, y - dy).BackColor = Color.White ShowPath.Enabled = True Timer1.Enabled = False Stopmouse.Enabled = False Exit Sub If PicBox(x, y).Tag = 0 Then Else x = x - dx y = y - dy Steps(x, y) = Steps(x, y) + 1 If Steps(x, y) > 20 Then Call retag() End Sub

Sub fittness() Dim Rn, Sums, Fitness(4) As Single Randomize() Rn = Rnd() Sums = Steps(x + 1, y) + Steps(x, y + 1) + Steps(x - 1, y) + Steps(x, y - 1) Fitness(1) = (Sums - Steps(x + 1, y)) / (Sums * 3) Fitness(2) = (Sums - Steps(x, y + 1)) / (Sums * 3) Fitness(3) = (Sums - Steps(x - 1, y)) / (Sums * 3) Fitness(4) = (Sums - Steps(x, y - 1)) / (Sums * 3) For i As Integer = 2 To 4 Fitness(i) = Fitness(i - 1) + Fitness(i) Next If Rn < Fitness(1) Then dx = 1 dy = 0 ElseIf Rn < Fitness(2) Then dx = 0 dy = 1 ElseIf Rn < Fitness(3) Then dx = -1 Else dy = -1 End If End Sub

Private Sub GameOver_Click(ByVal sender As System Private Sub GameOver_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GameOver.Click End End Sub Private Sub Stopmouse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Stopmouse.Click PicBox(x, y).BackColor = Color.White PicBox(StartPx, StartPy).BackColor = Color.Chocolate Timer1.Enabled = False ShowPath.Enabled = True Stopmouse.Enabled = False Call retag() Private Sub X25_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles X25.Click MazeX = 25 MazeY = 25 StartPx = 1 StartPy = 2 EndPx = MazeX EndPy = MazeY - 1 Me.Text = title SqWidth = 15 FWidth = SqWidth * (MazeX + 3) FHeight = SqWidth * (MazeY + 4) + 40 Me.Width = FWidth Me.Height = FHeight For i As Integer = 1 To 50 For j As Integer = 1 To 50 Call newgameset(i, j) Next Me.Refresh()

Private Sub X50_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles X50.Click Me.Text = title MazeX = 50 MazeY = 50 StartPx = 1 StartPy = 2 EndPx = MazeX EndPy = MazeY - 1 SqWidth = 10 FWidth = SqWidth * (MazeX + 3) FHeight = SqWidth * (MazeY + 4) + 40 Me.Width = FWidth Me.Height = FHeight For i As Integer = 1 To MazeX For j As Integer = 1 To MazeY Call newgameset(i, j) Next Me.Refresh() End Sub

Private Sub menual_Click(ByVal sender As System Private Sub menual_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menual.Click Me.Text = title askx: MazeX = Val(InputBox("迷宮橫向格數=?", "請輸入", 25)) If MazeX > 50 Then MsgBox("不得大於") GoTo askx End If If MazeX < 5 Then MsgBox("不得小於") asky: MazeY = Val(InputBox("迷宮縱向格數=?", "請輸入", 25)) If MazeY > 50 Then GoTo asky If MazeY < 5 Then If MazeY <= 25 Then SqWidth = 15 Else SqWidth = 10 StartPx = 1 StartPy = 2 EndPx = MazeX EndPy = MazeY - 1 FWidth = SqWidth * (MazeX + 3) FHeight = SqWidth * (MazeY + 4) + 40 Me.Width = FWidth Me.Height = FHeight For i As Integer = 1 To 50 For j As Integer = 1 To 50 Call newgameset(i, j) Next Me.Refresh() End Sub

Private Sub ImportMaze_Click(ByVal sender As System Private Sub ImportMaze_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ImportMaze.Click Me.Text = title On Error Resume Next OpenFileDialog1.FileName = "" OpenFileDialog1.Filter = "迷宮輸入檔 (*.txt)|*.txt" OpenFileDialog1.ShowDialog() ImPortF = OpenFileDialog1.FileName If ImPortF = "" Then Exit Sub InMaze = IO.File.OpenText(ImPortF) Call MapGen() InMaze.Close() End Sub

Sub MapGen() Dim Lndata As Array MapRow = 0 Do If InMaze.EndOfStream Then Exit Do MapRow = MapRow + 1 InString = InMaze.ReadLine If InString.Contains(",") Then Lndata = Split(InString, ",") ElseIf InString.Contains(" ") Then Lndata = Split(Trim(InString), " ") Else Lndata = InString.ToCharArray End If For i As Integer = 0 To UBound(Lndata) Map(i + 1, MapRow) = Val(Lndata(i)) Next MazeX = UBound(Lndata) + 1 Loop MazeY = MapRow If MazeX > 50 Or MazeY > 50 Then MsgBox("超過地圖大小(50 x 50)的限制") Exit Sub If MazeY <= 25 Then SqWidth = 15 SqWidth = 10 FWidth = SqWidth * (MazeX + 3) FHeight = SqWidth * (MazeY + 4) + 40 Me.Width = FWidth Me.Height = FHeight For i As Integer = 1 To 50 For j As Integer = 1 To 50 Call newgameset(i, j) If Map(i, j) = 1 Then With PicBox(i, j) .BackColor = Color.Black .Tag = 1 End With ElseIf Map(i, j) = 2 Then StartPx = i StartPy = j .BackColor = Color.Chocolate .Tag = 2 ElseIf Map(i, j) = 3 Then EndPx = i EndPy = j .BackColor = Color.LawnGreen .Tag = 3 .BackColor = Color.White .Tag = 0 Call ChkMap() Me.Refresh() End Sub

Private Sub ExportMaze_Click(ByVal sender As System Private Sub ExportMaze_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExportMaze.Click Me.Text = title On Error Resume Next Dim ExMaze As IO.StreamWriter Dim ExPortF, StringLn As String SaveFileDialog1.FileName = "" SaveFileDialog1.Filter = "迷宮輸出檔(*.txt)|*.txt" SaveFileDialog1.ShowDialog() ExPortF = SaveFileDialog1.FileName If ExPortF = "" Then Exit Sub ExMaze = New IO.StreamWriter(ExPortF) For j As Integer = 1 To MazeY StringLn = "" For i As Integer = 1 To MazeX StringLn = StringLn + CStr(PicBox(i, j).Tag) Next ExMaze.WriteLine(StringLn.TrimEnd) ExMaze.Close() End Sub

Private Sub EditMaze_Click(ByVal sender As System Private Sub EditMaze_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EditMaze.Click Me.Text = title NewMap.Enabled = Not NewMap.Enabled ImportMaze.Enabled = Not ImportMaze.Enabled ExportMaze.Enabled = Not ExportMaze.Enabled ShowPath.Enabled = Not ShowPath.Enabled Call AddEvents(Me) newgames = True Call retag() If NewMap.Enabled = True Then Call ChkMap() ToolStatus.Text = "閒置中" Else ToolStatus.Text = "迷宮編輯中" End If End Sub

Sub ChkMap() Dim mazein, mazeout As Integer For i As Integer = 1 To MazeX For j As Integer = 1 To MazeY If PicBox(i, j).Tag = 2 Then StartPx = i StartPy = j mazein = mazein + 1 End If If PicBox(i, j).Tag = 3 Then EndPx = i EndPy = j mazeout = mazeout + 1 Next PicBox(StartPx, StartPy).BackColor = Color.Chocolate PicBox(EndPx, EndPy).BackColor = Color.LawnGreen If mazein > 1 Or mazeout > 1 Then MsgBox("有兩個以上的入口或出口,請重新編輯地圖") NewMap.Enabled = Not NewMap.Enabled ImportMaze.Enabled = Not ImportMaze.Enabled ExportMaze.Enabled = Not ExportMaze.Enabled ShowPath.Enabled = Not ShowPath.Enabled Call AddEvents(Me) EditMaze.Checked = True If mazein = 0 Or mazeout = 0 Then MsgBox("沒有入口或出口,請重新編輯地圖") End Sub

Private Sub HowTo_Click(ByVal sender As System Private Sub HowTo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles HowTo.Click Dim Help(5) As String Help(1) = "先點選編輯迷宮進入編輯模式" Help(2) = "在圖上點滑鼠左鍵,建立牆或路" Help(3) = "在圖上點滑鼠右鍵,建立入口或出口" Help(4) = "牆為黑色方塊,路為白色方塊" Help(5) = "入口為棕色方塊,出口為綠色方塊" For i As Integer = 1 To 5 Help(0) = Help(0) + Help(i) + Chr(13) Next MsgBox(Help(0), MsgBoxStyle.Information) End Sub Sub MsgLink(ByVal sender As Object, _ ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Dim target As String = CType(e.Link.LinkData, String) System.Diagnostics.Process.Start(target) End Class

心得 這次的小遊戲和老師上課所教的不同,是因為 不想和大家做的都一樣,所以做了這個小老鼠 找迷宮的小遊戲,雖然遊戲的參與率不高,但 可以設計迷宮給小老鼠跑,也算挺有意思的, 個人有先設計出幾個小迷宮給小老鼠跑,效果 不錯雖然要是設計太大的空格小老鼠會很難找 到出口,但在設計時總是想設計出更多特別點 得地圖。