-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMain.jack
More file actions
150 lines (137 loc) · 4.52 KB
/
Copy pathMain.jack
File metadata and controls
150 lines (137 loc) · 4.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
class Main {
static Maze maze;
static MazeMenu menu;
static Player player;
static char key;
static boolean adminMode, enableMenu;
function void main() {
var Status status;
var int seed;
// start
do Output.moveCursor(0,0);
do Output.printString("Press any Key to start");
let adminMode = false;
let enableMenu = true;
// wait for user Input and set seed
let key = Keyboard.keyPressed();
let seed = 42;
while(key = 0) {
let key = Keyboard.keyPressed();
do Sys.wait(10);
let seed = seed + 1;
}
do Random.setSeed(seed);
// wait for user to release key before starting the game
while(~(key = 0)) {
let key = Keyboard.keyPressed();
do Sys.wait(10);
}
do Screen.clearScreen();
// init random maze
let maze = Maze.new(32,32);
do maze.setBorder();
do maze.update();
do maze.loadConfig(4);
do maze.update();
let player = maze.getPlayer();
// init MazeMenu
if(enableMenu) {
let menu = MazeMenu.new();
do menu.setAdminMode(adminMode);
let status = maze.exportStatus();
do menu.setStatus(status);
do menu.update();
}
// gameplay Loop
while(true) {
let key = Keyboard.keyPressed();
// a to turn to west and move 1 step
if((key = 65) | (key = 97)) {
do player.turnTo(3);
do player.move();
do maze.update();
}
// d to turn east and move 1 step
if((key = 68) | (key = 100)) {
do player.turnTo(1);
do player.move();
do maze.update();
}
// e to turn the player Clockwise
if((key = 69) | (key = 101)) {
do player.turnClockwise();
do maze.update();
}
// q to turn the player counter Clockwise
if((key = 81) | (key = 113)) {
do player.turnCounterClockwise();
do maze.update();
}
// s to turn south and move 1 step
if((key = 83) | (key = 115)) {
do player.turnTo(2);
do player.move();
do maze.update();
}
// w to turn north and move 1 step
if((key = 87) | (key = 119)) {
do player.turnTo(0);
do player.move();
do maze.update();
}
// esc to toggle adminMode
if(key = 140) {
let adminMode = ~adminMode;
// when entering admin mode, ask for confirmation
if(adminMode) {
let adminMode = Main.askConfirmAdmin();
}
do menu.setAdminMode(adminMode);
}
// admin only commands
// c to clear all fog
if(adminMode & ((key = 67) | (key = 99))) {
do maze.clearFog();
do maze.update();
}
// if a number is pressed, load the corresponding preset
if(adminMode & (~(key = 0))) {
do maze.loadConfig(key - 48);
do maze.update();
}
// after any key has been pressed update the menu
if(~(key = 0) & enableMenu) {
let status = maze.exportStatus();
do menu.setStatus(status);
do menu.update();
}
while(~(key = 0)) {
let key = Keyboard.keyPressed();
// f to go fast
if((key = 70) | (key = 102)){
do player.move();
do maze.update();
}
do Sys.wait(100);
}
}
return;
}
function boolean askConfirmAdmin() {
var char key;
do menu.enablePopup(1);
let key = Keyboard.keyPressed();
while(~(key = 0)) {
let key = Keyboard.keyPressed();
}
while (key = 0) {
let key = Keyboard.keyPressed();
}
do maze.update();
// y to confirm
if((key = 89) | (key = 121)) {
return true;
}
return false;
}
}