-
Notifications
You must be signed in to change notification settings - Fork 0
/
game-missiles.grph
96 lines (96 loc) · 2.88 KB
/
game-missiles.grph
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
#requires GRPH 1.7
#import math
#import random
#import stdio
//shape beginning = Text([Select this text and click 'up' to begin"] 78,200 0 30 BLACK)
//validateAll:
//#while getYForPos[getPosition[beginning]] == 166F // Awaits input
//back = (640,480 WHITE) // RESET
shape presentation = Text(["Avoid missiles"] 226,100 0 30 BLACK)
validate: presentation
shape ball = Circle(150,400 50,50 ORANGE)
validate: ball
pos currentPos = 150,400
integer obsCount = 0
integer currentObstacle = 0
integer minObs = 0
shape obs = Rectangle(0,0 0,0 BLACK)
pos tmpPos = 0,0
integer wave = 1
integer time = 0
#while true
// Move ball
setPosition ball: currentPos
#if getXForPos[getMousePos[]] < 25 + getXForPos[currentPos]
translate ball: -1,0
#elseif getXForPos[getMousePos[]] > 25 + getXForPos[currentPos]
translate ball: 1,0
#if getYForPos[getMousePos[]] < 25 + getYForPos[currentPos]
translate ball: 0,-1
#elseif getYForPos[getMousePos[]] > 25 + getYForPos[currentPos]
translate ball: 0,1
currentPos = getPosition[ball]
// Corrects position of the ball if outside of the frame
#if getXForPos[currentPos] < 0
currentPos = createPos[0 getYForPos[currentPos]]
#elseif getXForPos[currentPos] > 590
currentPos = createPos[590 getYForPos[currentPos]]
#if getYForPos[currentPos] < 0
currentPos = createPos[getXForPos[currentPos] 0]
#elseif getYForPos[currentPos] > 430
currentPos = createPos[getXForPos[currentPos] 430]
setPosition ball: currentPos
// Spawns missiles
#if randomInteger[[300 / wave]] <= 0
obs = Rectangle(toString["Missile" obsCount] 630,0 30,10 color[128 128 128])
tmpPos = createPos[630 randomInteger[470]]
setPosition obs: tmpPos
validate: obs
obsCount += 1
// Move missiles
currentObstacle = minObs
#while currentObstacle < obsCount
obs = getShapeNamed[toString["Missile" currentObstacle]]
translate obs: -1,0
#if getXForPos[getPosition[obs]] < 0 - 30
unvalidate: obs
minObs += 1
#if posAround[getCenterPoint[ball] getCenterPoint[obs] 30]
unvalidate: presentation
unvalidate: ball
back = (640,480 RED)
shape go = Text(["Game over"] 197,100 0 50 WHITE)
validate: go
string s = toString["You" "survived" [divide[getTimeInMillisSinceLoad[] 1000]] "seconds"]
shape survTime = Text(s 100,160 0 30 WHITE)
setHCentered: survTime
validate: survTime
#if wave > 2
s = toString["You" "survived" [wave - 1] "waves"]
#else
s = toString["You" "survived" [wave - 1] "wave"]
shape survWave = Text(s 100,220 0 30 WHITE)
setHCentered: survWave
validate: survWave
end:
currentObstacle += 1
//
// Waves
#if time >= 10000
wave = wave + 1
currentObstacle = minObs
#while currentObstacle < obsCount
obs = getShapeNamed[toString["Missile" currentObstacle]]
unvalidate: obs
currentObstacle += 1
//
//
setName presentation: toString["Wave" wave]
setHCentered: presentation
obsCount = 0
minObs = 0
time = 0
wait: 2
time += 1
//
//