Module i364 Public PalyaMeret As Integer Public AkadalyDb As Integer Public Palya(21, 21) As Char 'a pálya mezőinek tömbje, X jelzi a falakat, szóköz az üres mezőket Sub Main() 'Pályaméret és akadályok számának beolvasása Dim BeFajl As New System.IO.StreamReader("palya.txt") PalyaMeret = CInt(BeFajl.ReadLine) AkadalyDb = CInt(BeFajl.ReadLine) 'A tábla keretén lévő mezőket megjelöljük falként, a többit üresként For i = 1 To PalyaMeret Palya(i, 0) = "X" Palya(0, i) = "X" Palya(i, PalyaMeret + 1) = "X" Palya(PalyaMeret + 1, i) = "X" For j = 1 To PalyaMeret Palya(i, j) = " " Next Next 'Akadályok beolvasása és megjelölése Dim Sor, Oszlop As Integer Dim BeSor As String For i = 1 To AkadalyDb BeSor = BeFajl.ReadLine Oszlop = CInt(BeSor.Split(" ")(0)) Sor = CInt(BeSor.Split(" ")(1)) Palya(Oszlop, Sor) = "X" Next BeFajl.Close() BeFajl.Dispose() '2. feladat: tábla kiírása Console.Write("X") For i = 1 To PalyaMeret Console.Write(i Mod 10) Next Console.Write("X" & vbCrLf) For i = 1 To PalyaMeret Console.Write(i Mod 10) For j = 1 To PalyaMeret Console.Write(Palya(j, i)) Next Console.Write(i Mod 10 & vbCrLf) Next Console.Write("X") For i = 1 To PalyaMeret Console.Write(i Mod 10) Next Console.Write("X" & vbCrLf) Console.WriteLine() '3. feladat: egyszerűen kiolvassuk a Pálya tömbből a megfelelő értéket. Console.WriteLine("3. feladat") Console.Write("Kérem az oszlopot: ") Oszlop = Console.ReadLine Console.Write("Kérem a sort: ") Sor = Console.ReadLine If Palya(Oszlop, Sor) = " " Then Console.WriteLine("A (" & Oszlop & "," & Sor & ") mező szabad.") Else Console.WriteLine("A (" & Oszlop & "," & Sor & ") mező nem szabad.") End If Console.WriteLine() '4. feladat: véletlenszerűen választunk mezőt, addig ismételjük, amíg üreset nem kapunk Console.WriteLine("4. feladat") Randomize() Dim Rand As New System.Random Do Oszlop = Rand.Next(1, PalyaMeret + 1) Sor = Rand.Next(1, PalyaMeret + 1) Loop Until Palya(Oszlop, Sor) = " " Console.WriteLine("A robot induló helye a (" & Oszlop & "," & Sor & ") mező.") Console.WriteLine() '5. feladat: irányonként vizsgáljuk meg, hogy lehet-e arra menni, és ha igen, akkor meddig Console.WriteLine("5. feladat") Dim JoIranyDb As Byte = 0 'ebben tárolom a jó irányok számát Dim MezoKoord(4, 2) As Integer 'ebben tárolom a kapott célmezők koordinátáit (az 1. index a mező sorszáma, a 2. a koordinátáé) 'Vizsgálat felfelé If Palya(Oszlop, Sor - 1) = " " Then JoIranyDb += 1 MezoKoord(JoIranyDb, 1) = Oszlop For i = Sor - 2 To 0 Step -1 If Palya(Oszlop, i) = "X" Then MezoKoord(JoIranyDb, 2) = i + 1 Exit For End If Next End If 'Vizsgálat lefelé If Palya(Oszlop, Sor + 1) = " " Then JoIranyDb += 1 MezoKoord(JoIranyDb, 1) = Oszlop For i = Sor + 2 To PalyaMeret + 1 If Palya(Oszlop, i) = "X" Then MezoKoord(JoIranyDb, 2) = i - 1 Exit For End If Next End If 'Vizsgálat balra If Palya(Oszlop - 1, Sor) = " " Then JoIranyDb += 1 MezoKoord(JoIranyDb, 2) = Sor For i = Sor - 2 To 0 Step -1 If Palya(i, Sor) = "X" Then MezoKoord(JoIranyDb, 1) = i + 1 Exit For End If Next End If 'Vizsgálat jobbra If Palya(Oszlop + 1, Sor) = " " Then JoIranyDb += 1 MezoKoord(JoIranyDb, 2) = Sor For i = Sor + 2 To PalyaMeret + 1 If Palya(i, Sor) = "X" Then MezoKoord(JoIranyDb, 1) = i - 1 Exit For End If Next End If 'A kiírás helyessége érdekében meghatározzuk a névelőt Dim Nevelo As String If JoIranyDb > 0 Then If (MezoKoord(1, 1) = 1) Or (MezoKoord(1, 1) = 5) Then Nevelo = "az" Else Nevelo = "a" End If End If 'Kiírás Select Case JoIranyDb Case 0 Console.WriteLine("A robot egyáltalán nem tud lépni.") Case 1 Console.WriteLine("Egy lépésben elérhető " + Nevelo + " (" & MezoKoord(1, 1) & "," & MezoKoord(1, 2) & ") mező.") Case 2 To 4 Console.Write("Egy lépésben elérhetőek " + Nevelo + " ") For i = 1 To JoIranyDb Console.Write("(" & MezoKoord(i, 1) & "," & MezoKoord(i, 2) & ")") If i < JoIranyDb Then Console.Write(", ") End If Next Console.WriteLine(" mezők.") End Select '6. feladat Console.WriteLine() Console.WriteLine("6. feladat") Console.Write("Kérem a parancsokat: ") Dim Parancsok As String = Console.ReadLine 'parancsok beolvasása Dim Javitott As String = "" 'ide kerül majd a javított lépéssor Dim LepesDb As Integer = Parancsok.Length 'a lépések száma Dim KiFajl As New System.IO.StreamWriter("mozgas.txt") KiFajl.WriteLine(Oszlop & " " & Sor) 'kezdőmező kiírása a fájlba For i = 1 To LepesDb Select Case Parancsok(i - 1) Case "J", "j" If Palya(Oszlop + 1, Sor) = " " Then Javitott &= "J" Do 'Jobbra lépünk, ameddig csak lehet Oszlop += 1 Loop Until Palya(Oszlop + 1, Sor) = "X" End If Case "B", "b" If Palya(Oszlop - 1, Sor) = " " Then Javitott &= "B" Do 'Balra lépünk Oszlop -= 1 Loop Until Palya(Oszlop - 1, Sor) = "X" End If Case "F", "f" If Palya(Oszlop, Sor - 1) = " " Then Javitott &= "F" Do 'Felfelé lépünk Sor -= 1 Loop Until Palya(Oszlop, Sor - 1) = "X" End If Case "L", "l" If Palya(Oszlop, Sor + 1) = " " Then Javitott &= "L" Do 'Lefelé lépünk Sor += 1 Loop Until Palya(Oszlop, Sor + 1) = "X" End If End Select KiFajl.WriteLine(Oszlop & " " & Sor) 'az új mező kiírása a fájlba Next KiFajl.Close() KiFajl.Dispose() Console.WriteLine("A mezőket kiírtam a fájlba.") '7. feladat: a javított lépéssorozat kiírása Console.WriteLine() Console.WriteLine("7. feladat") Console.WriteLine("A javított lépéssorozat: " + Javitott) Console.ReadLine() End Sub End Module