SHOW:
|
|
- or go back to the newest paste.
1 | local term = require "term" | |
2 | local event = require "event" | |
3 | local running = false | |
4 | local p1Name = "" | |
5 | local p2Name = "" | |
6 | local timer = 0 | |
7 | local state = 0 | |
8 | ||
9 | ||
10 | local p1e=0 | |
11 | local p1y=6 | |
12 | local score1=0 | |
13 | ||
14 | local p2e=0 | |
15 | local p2y=6 | |
16 | local score2=0 | |
17 | ||
18 | local bx=24 | |
19 | local by=9 | |
20 | local bh=-1 | |
21 | local bv=-1 | |
22 | ||
23 | ||
24 | function unknownEvent() | |
25 | ||
26 | end | |
27 | ||
28 | local myEventHandlers = setmetatable({}, { __index = function() return unknownEvent end }) | |
29 | ||
30 | function finish() | |
31 | running=false | |
32 | end | |
33 | ||
34 | function init() | |
35 | term.setCursorBlink(false) | |
36 | term.setCursor(1,1) | |
37 | print "Player 1:" | |
38 | term.setCursor(1,2) | |
39 | print (p1Name) | |
40 | term.setCursor(35,1) | |
41 | print "Player 2:" | |
42 | term.setCursor(35,2) | |
43 | print (p2Name) | |
44 | ||
45 | term.setCursor(25,2) | |
46 | print(score1) | |
47 | term.setCursor(27,2) | |
48 | print(score2) | |
49 | term.setCursor(1,3) | |
50 | print "█████████████████████████████████████████████████" | |
51 | term.setCursor(1,15) | |
52 | print "█████████████████████████████████████████████████" | |
53 | ||
54 | term.setCursor(2,6) | |
55 | print "█" | |
56 | term.setCursor(2,7) | |
57 | print "█" | |
58 | term.setCursor(2,8) | |
59 | print "█" | |
60 | term.setCursor(2,9) | |
61 | print "█" | |
62 | ||
63 | term.setCursor(48,6) | |
64 | print "█" | |
65 | term.setCursor(48,7) | |
66 | print "█" | |
67 | term.setCursor(48,8) | |
68 | print "█" | |
69 | term.setCursor(48,9) | |
70 | print "█" | |
71 | ||
72 | local running = true | |
73 | end | |
74 | ||
75 | ||
76 | ||
77 | function handleEvent(eventID, ...) | |
78 | if (eventID) then | |
79 | myEventHandlers[eventID](...) | |
80 | end | |
81 | end | |
82 | ||
83 | function myEventHandlers.key_down(adress, char, code, playerName) | |
84 | if (code == 57) then | |
85 | event.cancel(timer) | |
86 | finish() | |
87 | end | |
88 | ||
89 | if (playerName == p1Name) then | |
90 | p1e=code | |
91 | end | |
92 | if (playerName == p2Name) then | |
93 | p2e=code | |
94 | end | |
95 | ||
96 | end | |
97 | ||
98 | function myEventHandlers.key_up(adress, char, code, playerName) | |
99 | if (running == false) then | |
100 | if (p1Name == "") then | |
101 | p1Name = playerName | |
102 | term.setCursor(9,13) | |
103 | print (p1Name) | |
104 | state=1 | |
105 | else if (p2Name=="") then | |
106 | p2Name = playerName | |
107 | term.setCursor(34,13) | |
108 | print (p2Name) | |
109 | term.setCursor(20,14) | |
110 | print "Press ENTER" | |
111 | term.setCursor(18,10) | |
112 | print " " | |
113 | state=2 | |
114 | end | |
115 | end | |
116 | ||
117 | if (state==2) and (code==28) then | |
118 | running=true | |
119 | end | |
120 | ||
121 | else | |
122 | ||
123 | if (playerName == p1Name) and (code == p1e) then | |
124 | p1e=0 | |
125 | end | |
126 | if (playerName == p2Name) and (code == p2e) then | |
127 | p2e=0 | |
128 | end | |
129 | ||
130 | end | |
131 | ||
132 | ||
133 | end | |
134 | ||
135 | function loop() | |
136 | ||
137 | if (p1e == 200) and (p1y > 4) then | |
138 | p1y=p1y-1 | |
139 | term.setCursor(2,p1y+4) | |
140 | print " " | |
141 | term.setCursor(2,p1y) | |
142 | print "█" | |
143 | ||
144 | ||
145 | else if (p1e == 208) and (p1y < 11) then | |
146 | p1y=p1y+1 | |
147 | term.setCursor(2,p1y+3) | |
148 | print "█" | |
149 | term.setCursor(2,p1y-1) | |
150 | print " " | |
151 | end | |
152 | end | |
153 | ||
154 | if (p2e == 200) and (p2y > 4) then | |
155 | p2y=p2y-1 | |
156 | term.setCursor(48,p2y+4) | |
157 | print " " | |
158 | term.setCursor(48,p2y) | |
159 | print "█" | |
160 | ||
161 | ||
162 | else if (p2e == 208) and (p2y < 11) then | |
163 | p2y=p2y+1 | |
164 | term.setCursor(48,p2y+3) | |
165 | print "█" | |
166 | term.setCursor(48,p2y-1) | |
167 | print " " | |
168 | end | |
169 | end | |
170 | ||
171 | if (bv == -1) and (by == 4) then | |
172 | bv=1 | |
173 | elseif (bv == 1) and (by==14) then | |
174 | bv=-1 | |
175 | end | |
176 | ||
177 | if (bx == 3) then | |
178 | if (p1y<=(by+bv)) and ((p1y+3)>=(by+bv)) then | |
179 | bh=1 | |
180 | end | |
181 | elseif (bx==47) then | |
182 | if (p2y<=(by+bv)) and ((p2y+3)>=(by+bv)) then | |
183 | bh=-1 | |
184 | end | |
185 | end | |
186 | ||
187 | if (bx <= 1) then | |
188 | term.setCursor(bx,by) | |
189 | print " " | |
190 | bx=24 | |
191 | by=9 | |
192 | score2=score2+1 | |
193 | term.setCursor(25,2) | |
194 | print(score2) | |
195 | if (score2 == 10) then | |
196 | term.setCursor(19,9) | |
197 | print (p2Name .. " wins!") | |
198 | event.cancel(timer) | |
199 | timer=event(2,finish) | |
200 | end | |
201 | elseif (bx>49) then | |
202 | term.setCursor(bx,by) | |
203 | print " " | |
204 | bx=24 | |
205 | by=9 | |
206 | score1=score1+1 | |
207 | term.setCursor(27,2) | |
208 | print(score1) | |
209 | if (score1 == 10) then | |
210 | term.setCursor(19,9) | |
211 | print (p1Name .. " wins!") | |
212 | event.cancel(timer) | |
213 | timer=event(2,finish) | |
214 | end | |
215 | end | |
216 | ||
217 | term.setCursor(bx,by) | |
218 | print " " | |
219 | bx=bx+bh | |
220 | by=by+bv | |
221 | term.setCursor(bx,by) | |
222 | print "●" | |
223 | end | |
224 | ||
225 | term.clear() | |
226 | term.setCursor(6,3) | |
227 | print "█████████ ████████ ███ ██ ████████" | |
228 | term.setCursor(6,4) | |
229 | print "███ ██ ██ ██ ████ ██ ██" | |
230 | term.setCursor(6,5) | |
231 | print "███ ██ ██ ██ ██ ██ ██ ██" | |
232 | term.setCursor(6,6) | |
233 | print "█████████ ██ ██ ██ ████ ██ ████" | |
234 | term.setCursor(6,7) | |
235 | print "███ ██ ██ ██ ███ ██ ██" | |
236 | term.setCursor(6,8) | |
237 | print "███ ████████ ██ ██ ████████" | |
238 | term.setCursor(18,10) | |
239 | print "Press any key" | |
240 | term.setCursor(9,12) | |
241 | print "Player 1 Player 2" | |
242 | ||
243 | os.sleep(0.1) | |
244 | while not running do | |
245 | handleEvent(event.pull()) | |
246 | end | |
247 | ||
248 | term.clear() | |
249 | init() | |
250 | timer=event.timer(0.1,loop,math.huge) | |
251 | ||
252 | while running do | |
253 | handleEvent(event.pull()) | |
254 | end | |
255 | ||
256 | ||
257 | event.ignore("key_down",init) | |
258 | term.clear() | |
259 | term.setCursor(1,1) | |
260 | os.exit() |