版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、班級:奈米一乙學(xué)號: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 n
2、ewgames 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.Object, ByVal e As System.EventArgs) Handles MyBase.Load ti
3、tle = 老鼠走迷宮 Me.Text = title Me.ShowPath.Enabled = False Me.Stopmouse.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 = FWidt
4、h Me.Height = FHeight For i As Integer = 1 To 50 For j As Integer = 1 To 50 Call initial(i, j) Next Next InMaze = IO.File.OpenText(MazeMap.txt) Call MapGen() Me.Text = title End Sub,Sub initial(ByVal i As Integer, ByVal j As Integer) Dim mypic As New PictureBox Me.Controls.Add(mypic) PicBox(i, j) =
5、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 End Sub,Private Sub MapEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseE
6、ventArgs) 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 End If End If If e.Button = Windows.Forms.M
7、ouseButtons.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 If End If 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
8、 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 .T
9、ag = 1 End If If i = StartPx And j = StartPy Then .BackColor = Color.Chocolate .Tag = 2 End If If i = EndPx And j = EndPy Then .BackColor = Color.LawnGreen .Tag = 3 End If End With End Sub,Sub retag() If newgames = False Then PicBox(x, y).BackColor = Color.White Else PicBox(StartPx, StartPy).BackCol
10、or = 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
11、 Then Steps(i, j) = 0 .BackColor = Color.LawnGreen ElseIf .Tag = 2 Then Steps(i, j) = 100000 .BackColor = Color.Chocolate Else .BackColor = Color.Black Steps(i, j) = 100000 End If End With End If Next j Next i End Sub,Private Sub ShowPath_Click(ByVal sender As System.Object, ByVal e As System.EventA
12、rgs) 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
13、System.Object, ByVal e As System.EventArgs) _ Handles Timer1.Tick Dim MinStep As Integer = 10000 Me.Text = title + 步數(shù): + CStr(TotalStep) ToolStatus.Text = ( & CStr(x) & , & CStr(y) & ) Randomize() k = 0 If Steps(x + 1, y) 2 Then cross(x, y) = cross(x, y) + 1 End If If cross(x, y) 1 Then Steps(x, y)
14、= Steps(x, y) - 1 cross(x, y) = 0 End If,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) k = k + 1 End If If Steps(x - 1, y) = MinStep Then MinStep = Steps(x - 1, y) k = k + 1 End If If Steps(x, y - 1) = MinStep
15、 Then MinStep = Steps(x, y - 1) k = k + 1 End If 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
16、= 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 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 Else,Call fittness()
17、End If x = x + dx y = y + dy If x = EndPx And y = EndPy Then TotalStep = TotalStep + 1 Me.Text = title + 總算找到了 + 步數(shù): + 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
18、 Sub End If If PicBox(x, y).Tag = 0 Then PicBox(x, y).BackColor = Color.Chocolate PicBox(x - dx, y - dy).BackColor = Color.White TotalStep = TotalStep + 1 Else x = x - dx y = y - dy End If Steps(x, y) = Steps(x, y) + 1 If Steps(x, y) 20 Then Call retag() End Sub,Sub fittness() Dim Rn, Sums, Fitness(
19、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)
20、/ (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 dy = 0 Else dx = 0 dy = -1 End If End Sub,Private Sub GameOver_Click(ByVal sender As System.Object, ByVal
21、 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
22、 = True Stopmouse.Enabled = False Call retag() End Sub 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
23、 = 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 Next Me.Refresh() End Sub,Private Sub X50_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles X50.Click Me.Text = title MazeX = 5
24、0 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 Next Me.Refresh() End Sub
25、,Private Sub menual_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menual.Click Me.Text = title askx: MazeX = Val(InputBox(迷宮橫向格數(shù)=?, 請輸入, 25) If MazeX 50 Then MsgBox(不得大於) GoTo askx End If If MazeX 50 Then MsgBox(不得大於) GoTo asky End If If MazeY 5 Then MsgBox(不得小於) GoTo ask
26、y End If If MazeY = 25 Then SqWidth = 15 Else SqWidth = 10 End If 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,
27、 j) Next Next Me.Refresh() End Sub,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 = Open
28、FileDialog1.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(InStrin
29、g, ,) 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
30、 Sub End If If MazeY = 25 Then SqWidth = 15 Else SqWidth = 10 End If 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) .BackColo
31、r = Color.Black .Tag = 1 End With ElseIf Map(i, j) = 2 Then StartPx = i StartPy = j With PicBox(i, j) .BackColor = Color.Chocolate .Tag = 2 End With ElseIf Map(i, j) = 3 Then EndPx = i EndPy = j With PicBox(i, j) .BackColor = Color.LawnGreen .Tag = 3 End With Else With PicBox(i, j) .BackColor = Colo
32、r.White .Tag = 0 End With End If Next Next Call ChkMap() Me.Refresh() End Sub,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 SaveFileD
33、ialog1.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
34、).Tag) Next ExMaze.WriteLine(StringLn.TrimEnd) Next ExMaze.Close() End Sub,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
35、= 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
36、 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 End If Next Next PicBox(StartPx, StartPy).BackColor = Color.Chocolate PicBox(EndPx, EndPy).BackColor = Color.LawnGreen If mazein 1 Or mazeout 1 Then MsgBox(有兩個以上的入口或出口,請重新編輯地圖) NewMap.Enabled = N
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 未來五年生產(chǎn)性專業(yè)技術(shù)服務(wù)企業(yè)縣域市場拓展與下沉戰(zhàn)略分析研究報(bào)告
- 未來五年山丘自然景區(qū)管理服務(wù)企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略分析研究報(bào)告
- 未來五年種用藕企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略分析研究報(bào)告
- 未來五年復(fù)合材料節(jié)能房屋企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略分析研究報(bào)告
- 未來五年凍魚片企業(yè)ESG實(shí)踐與創(chuàng)新戰(zhàn)略分析研究報(bào)告
- 燃?xì)夤艿离[患排查方案
- 熱力設(shè)施清洗維護(hù)方案
- BIM土建工程測量方案
- 熱力工程質(zhì)量控制方案
- 施工現(xiàn)場安全評價體系方案
- 酒店員工手冊
- 重慶律師收費(fèi)管理辦法
- 安慶四中學(xué)2024年七上數(shù)學(xué)期末考試試題含解析
- 黑洞與量子糾纏的熱力學(xué)研究-洞察闡釋
- 帶狀皰疹中醫(yī)病例討論
- 【高中數(shù)學(xué)競賽真題?強(qiáng)基計(jì)劃真題考前適應(yīng)性訓(xùn)練】 專題03三角函數(shù) 真題專項(xiàng)訓(xùn)練(全國競賽+強(qiáng)基計(jì)劃專用)原卷版
- DB33∕T 1152-2018 建筑工程建筑面積計(jì)算和竣工綜合測量技術(shù)規(guī)程
- SL631水利水電工程單元工程施工質(zhì)量驗(yàn)收標(biāo)準(zhǔn)第1部分:土石方工程
- (二調(diào))武漢市2025屆高中畢業(yè)生二月調(diào)研考試 英語試卷(含標(biāo)準(zhǔn)答案)+聽力音頻
- 汽車修理廠輪胎采購 投標(biāo)方案(技術(shù)標(biāo) )
- 2023年7月浙江省普通高中學(xué)業(yè)水平考試(學(xué)考)化學(xué)試題
評論
0/150
提交評論