Advertisement
Guest User

randomwalk.c

a guest
Feb 1st, 2025
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.17 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. int main (void) {
  6. // Initialize 10x10 matrix
  7. char Area[10][10];
  8. for (int i = 0; i < 10; i++) {
  9. for (int j = 0; j < 10; j++) {
  10. Area[i][j] = '.';
  11. }
  12. }
  13. // up = 0 = row-1 | down = 1 = row+1 | right = 2 = col+1 | left = 3 = col-1
  14. // Begin movement at [0][0]
  15.  
  16. srand(time(NULL));
  17. int col = 0;
  18. int row = 0;
  19. int movement;
  20. int legal;
  21. int legalmoves[4] = {1,1,1,1}; // 1 = legal move, 0 = illegal move, up,down,right,left respectively
  22. int Space[10][10] = {0}; // 0 = empty space, 1 = space occupied by letter
  23. Area[row][col] = 'A'; //put A at [0][0]
  24. Space [0][0] = 1;
  25.  
  26. for (int k = 'B'; k <= 'Z' ; k++) {
  27. // Find illegal moves
  28. if (row - 1 < 0 || Space[row-1][col] == 1) {
  29. legalmoves[0] = 0; //cant go up
  30. }
  31. if (row + 1 >= 10 || Space[row+1][col] == 1) {
  32. legalmoves[1] = 0; //cant go down
  33. }
  34. if (col + 1 >= 10 || Space[row][col+1] == 1) {
  35. legalmoves[2] = 0; // cant go right
  36. }
  37. if (col - 1 < 0 || Space[row][col-1] == 1) {
  38. legalmoves[3] = 0; //cant go left
  39. }
  40.  
  41. if (legalmoves[0] == 0 && legalmoves[1] == 0 && legalmoves[2] == 0 && legalmoves[3] == 0)
  42. break; //stop program if no legal moves found
  43.  
  44. // Check if the random movement is legal, if not try again.
  45. legal = 0;
  46. while (legal == 0) {
  47. movement = rand()%4;
  48. switch (movement)
  49. {
  50. case 0: //up
  51. if (legalmoves[0] == 0)
  52. continue;
  53. else
  54. legal = 1;
  55. break;
  56. case 1: //down
  57. if (legalmoves[1] == 0)
  58. continue;
  59. else
  60. legal = 1;
  61. break;
  62. case 2: //right
  63. if (legalmoves[2] == 0)
  64. continue;
  65. else
  66. legal = 1;
  67. break;
  68. case 3: //left
  69. if (legalmoves[3] == 0)
  70. continue;
  71. else
  72. legal = 1;
  73. break;
  74. }
  75. }
  76.  
  77. // Begin movement
  78. switch (movement)
  79. {
  80. case 0:
  81. row = row-1;
  82. break;
  83. case 1:
  84. row = row+1;
  85. break;
  86. case 2:
  87. col = col+1;
  88. break;
  89. case 3:
  90. col = col-1;
  91. break;
  92. }
  93. Area[row][col] = k;
  94. Space[row][col] = 1;
  95. // re-initialize legalmoves array back to 1's
  96. for (int initialize = 0; initialize < 4; initialize++) {
  97. legalmoves[initialize] = 1;
  98. }
  99.  
  100. }
  101. // Print the area and path
  102. for (int l = 0; l < 10; l++) {
  103. for (int m = 0; m < 10; m++) {
  104. printf("%c ",Area[l][m]);
  105. }
  106. printf("\n\n");
  107.  
  108. }
  109. return 0;
  110. }
  111.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement