3/3/2023 0 Comments Visual basic code maze game![]() ![]() Walls ( West ) and then Item ( Row, Col - 1 ). Put ( ' ' ) end if elsif Item ( Row, Col ). New_Line end if for Col in Item ' Range ( 2 ) loop if Col = Item ' First ( 2 ) then if Item ( Row, Col ). Put ( '+' ) for Col in Item ' Range ( 2 ) loop if Item ( Row, Col ). Put_Line ( "Starting generation at " & Positive ' Image ( Row ) & " x" & Positive ' Image ( Column )) Depth_First_Algorithm ( Maze, Row, Column ) end Initialize procedure Put ( Item : Maze_Grid ) is begin for Row in Item ' Range ( 1 ) loop if Row = Item ' First ( 1 ) then Ada. Random ( Generator ) mod Height + 1 Column := RNG. Reset ( Dir_Generator ) - choose starting cell Row := RNG. exit when All_Tested end loop end Depth_First_Algorithm procedure Initialize ( Maze : in out Maze_Grid ) is Row, Column : Positive begin - initialize random generators RNG. Walls ( - Next_Direction ) := False Depth_First_Algorithm ( Maze, Next_Row, Next_Column ) end if end if Tested_Wall ( Next_Direction ) := True - continue as long as there are unvisited neighbours left All_Tested := True for D in Directions loop All_Tested := All_Tested and Tested_Wall ( D ) end loop - all directions are either visited (from here, - or previously visited), or invalid. Walls ( Next_Direction ) := False Maze ( Next_Row, Next_Column ). ![]() Visited then - connect the two cells Maze ( Row, Column ). Random ( Dir_Generator ) exit when not Tested_Wall ( Next_Direction ) end loop Next_Row := Row Next_Column := Column Move ( Next_Row, Next_Column, Next_Direction, Valid_Direction ) if Valid_Direction then if not Maze ( Next_Row, Next_Column ). ![]() ![]() Visited := True loop - use random direction loop Next_Direction := Random_Direction. Generator function "-" ( Dir : Directions ) return Directions is begin case Dir is when North => return South when South => return North when East => return West when West => return East end case end "-" procedure Move ( Row : in out Height_Type Column : in out Width_Type Direction : Directions Valid_Move : out Boolean ) is begin Valid_Move := False case Direction is when North => if Row > Height_Type ' First then Valid_Move := True Row := Row - 1 end if when East => if Column if Column > Width_Type ' First then Valid_Move := True Column := Column - 1 end if when South => if Row False ) All_Tested : Boolean begin - mark as visited Maze ( Row, Column ). Generator Dir_Generator : Random_Direction. With _Random with Ada.Text_IO package body Mazes is package RNG is new _Random (Positive ) package Random_Direction is new _Random (Directions ) Generator : RNG. PROC GetNeighbors(BYTE x,y BYTE ARRAY n BYTE POINTER count) BYTE POINTER ptr pointer to the screen memory ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. Archives
March 2023
Categories |