This commit is contained in:
Voussoir 2014-10-13 13:47:26 -07:00
parent bd9f1e5779
commit e689e83d7b
3 changed files with 63 additions and 22 deletions

View file

@ -17,8 +17,6 @@ Gold candy: Special candy which gives quadruple points. Is invisible, flashes ev
Hats. Hats.
Enemies spawn in larger numbers as the game goes on
Enemies move faster as the game goes on Enemies move faster as the game goes on
Randomzied walls in the middle of the arena Randomzied walls in the middle of the arena
@ -27,8 +25,6 @@ Arena walls may be boobytrapped. Running alongside a wall may result in death/st
Save game scores in db Save game scores in db
Exclamators should not be able to fall into the same tile
Hats. Hats.
Sound Sound

View file

@ -2,6 +2,28 @@
\+ Added changelog. I probably will get lazy and stop updating this eventually \+ Added changelog. I probably will get lazy and stop updating this eventually
\+ Added phantom, incomplete implementation \+ Added Phantom, incomplete implementation
\= Mouse control is a little bit nicer, click must be a minimum distance from H to initiate a move \+ Exclamators collide with each other
= Mouse control is a little bit nicer, click must be a minimum distance from H to initiate a move
###13 Oct 2014
\+ Phantom implementation complete, now on HUD
\+ Phantoms will Print their lifespan when spawned
\+ More help messages
\+ Middle Mouse Button will reset when dead, spawn phant when alive
\+ Exclamators spawn in larger numbers as the game goes on (will tweak in the future)
\+ Exclamator collision can be toggled
= Prints contain the relevant Symbol to make messages clearer at a glance
= No hats yet

View file

@ -32,8 +32,11 @@ class tgame:
self.bomblabel = Label(self.labelframe, text='0', font=('Consolas', 10)) self.bomblabel = Label(self.labelframe, text='0', font=('Consolas', 10))
self.bomblabel.grid(row=0, column=2) self.bomblabel.grid(row=0, column=2)
self.poslabel = Label(self.labelframe, text=str(self.xpos) + " " + str(self.ypos), font=('Consolas', 10), bg="#ccc") self.phantlabel = Label(self.labelframe, text='0',font=('Consolas', 10), bg="#ccc")
self.poslabel.grid(row=0, column=3) self.phantlabel.grid(row=0, column=3)
self.poslabel = Label(self.labelframe, text=str(self.xpos) + " " + str(self.ypos), font=('Consolas', 10))
self.poslabel.grid(row=0, column=4)
self.helplabel = Label(tkvar, text="Press H for help ->", font=('Consolas', 8)) self.helplabel = Label(tkvar, text="Press H for help ->", font=('Consolas', 8))
self.helplabel.grid(row=2, column=0, columnspan=100) self.helplabel.grid(row=2, column=0, columnspan=100)
@ -50,6 +53,7 @@ class tgame:
tkvar.bind('j', lambda data=self.data: spawnbomb()) tkvar.bind('j', lambda data=self.data: spawnbomb())
tkvar.bind('z', lambda data=self.data: spawnbomb()) tkvar.bind('z', lambda data=self.data: spawnbomb())
tkvar.bind('k', lambda data=self.data: spawnphantom()) tkvar.bind('k', lambda data=self.data: spawnphantom())
tkvar.bind('x', lambda data=self.data: spawnphantom())
tkvar.bind('r', lambda data=self.data: restart()) tkvar.bind('r', lambda data=self.data: restart())
tkvar.bind('h', lambda data=self.data: helpreel()) tkvar.bind('h', lambda data=self.data: helpreel())
tkvar.bind('<Control-w>', quit) tkvar.bind('<Control-w>', quit)
@ -65,6 +69,7 @@ class tgame:
self.enemyspawnrate = 50 self.enemyspawnrate = 50
self.enemyspawnmindist = 6 self.enemyspawnmindist = 6
self.enemydocollide = False
self.candyspawnrate = 4 self.candyspawnrate = 4
self.isdeath = False self.isdeath = False
@ -73,9 +78,9 @@ class tgame:
self.helplabelindex = -1 self.helplabelindex = -1
self.helplabeltexts = [ self.helplabeltexts = [
"<WASD>=Movement <J>=Bomb <R>=Restart ->", "<WASD>=Movement <J>=Bomb <K>=Phantom <R>=Restart ->",
"<UDLR>=Movement <Z>=Bomb <R>=Restart ->", "<UDLR>=Movement <Z>=Bomb <X>=Phantom <R>=Restart ->",
"<LMB>=Movement <RMB>=Bomb <MMB>=Restart ->", "<LMB>=Movement <RMB>=Bomb <MMB>=Phantom/Restart ->",
self.symbols['char'] + " = You ->", self.symbols['char'] + " = You ->",
enemy.symbol + " = Exclamator ->", enemy.symbol + " = Exclamator ->",
candy.symbol + " = Candy ->", candy.symbol + " = Candy ->",
@ -83,6 +88,9 @@ class tgame:
"Avoid the Exclamators ->", "Avoid the Exclamators ->",
"Collect candy to earn bombs ->", "Collect candy to earn bombs ->",
"Drop bombs to snare Exclamators ->", "Drop bombs to snare Exclamators ->",
"Deploy phantoms to distract Exclamators ->",
"Deploying phantom will consume all candy ->",
"More candy consumed = longer phantom lifespan ->",
"Enjoy •"] "Enjoy •"]
@ -137,7 +145,7 @@ class tgame:
for candies in self.candylist: for candies in self.candylist:
if candies.y == ycoord: if candies.y == ycoord:
if candies.x == self.xpos and candies.y == self.ypos: if candies.x == self.xpos and candies.y == self.ypos:
print('Collection') #print('Collection')
collect(1) collect(1)
self.candylist.remove(candies) self.candylist.remove(candies)
self.entlist.remove(candies) self.entlist.remove(candies)
@ -162,6 +170,8 @@ class tgame:
spawncandy() spawncandy()
if self.stepstaken % self.enemyspawnrate == 0: if self.stepstaken % self.enemyspawnrate == 0:
spawnenemy() spawnenemy()
for x in range(self.stepstaken // 200):
spawnenemy()
for en in self.enemylist: for en in self.enemylist:
oldx = en.x oldx = en.x
@ -171,12 +181,13 @@ class tgame:
else: else:
ph = self.phantomlist[0] ph = self.phantomlist[0]
en.approach(ph.x, ph.y) en.approach(ph.x, ph.y)
for otheren in self.enemylist: if self.enemydocollide:
if en != otheren: for otheren in self.enemylist:
if en.x == otheren.x and en.y == otheren.y: if en != otheren:
#print('Enemy collision at', en.x, en.y) if en.x == otheren.x and en.y == otheren.y:
en.x = oldx print('[ ' + enemy.symbol + ' ] Enemy collision at', en.x, en.y)
en.y = oldy en.x = oldx
en.y = oldy
#print(dist(en.x, en.y, self.xpos, self.ypos)) #print(dist(en.x, en.y, self.xpos, self.ypos))
if en.x < 1: if en.x < 1:
en.x = 1 en.x = 1
@ -204,9 +215,13 @@ class tgame:
self.collectlabel.configure(text=str(self.collections) + " candy") self.collectlabel.configure(text=str(self.collections) + " candy")
self.bomblabel.configure(text=str(self.bombs) + " bombs") self.bomblabel.configure(text=str(self.bombs) + " bombs")
self.poslabel.configure(text=str(self.xpos) + " " + str(self.ypos)) self.poslabel.configure(text=str(self.xpos) + " " + str(self.ypos))
if self.collections >= self.phantomcost:
self.phantlabel.configure(text='1 phantom')
else:
self.phantlabel.configure(text='0 phantom')
def translatemouse(event): def translatemouse(event, middlemouse=False):
event.x -= 9 event.x -= 9
event.y -= 9 event.y -= 9
#485 #485
@ -225,8 +240,14 @@ class tgame:
ydif /= abs(ydif) ydif /= abs(ydif)
ydif = int(ydif) ydif = int(ydif)
mfresh(ymove= ydif) mfresh(ymove= ydif)
def middlemouse():
if self.isdeath:
restart()
else:
spawnphantom()
tkvar.bind('<Button-1>', translatemouse) tkvar.bind('<Button-1>', translatemouse)
tkvar.bind('<Button-2>', lambda data=self.data: restart()) tkvar.bind('<Button-2>', lambda data=self.data: middlemouse())
tkvar.bind('<Button-3>', lambda data=self.data: spawnbomb()) tkvar.bind('<Button-3>', lambda data=self.data: spawnbomb())
def helpreel(): def helpreel():
@ -265,6 +286,7 @@ class tgame:
life = 10 life = 10
self.collections = 0 self.collections = 0
life += round(self.collections / 3) life += round(self.collections / 3)
print('[ ' + self.symbols['char'] + ' ] New phantom with ' + str(life) + ' life')
newphantom = phantom(self.xpos, self.ypos, life) newphantom = phantom(self.xpos, self.ypos, life)
self.phantomlist.append(newphantom) self.phantomlist.append(newphantom)
self.entlist.append(newphantom) self.entlist.append(newphantom)
@ -281,7 +303,7 @@ class tgame:
if candies.x == newx and candies.y == newy: if candies.x == newx and candies.y == newy:
goodtogo = False goodtogo = False
if goodtogo: if goodtogo:
print('New candy at', newx, newy) print('[ ' + candy.symbol + ' ] New candy at', newx, newy)
newcan = candy(newx, newy) newcan = candy(newx, newy)
self.candylist.append(newcan) self.candylist.append(newcan)
self.entlist.append(newcan) self.entlist.append(newcan)
@ -307,13 +329,14 @@ class tgame:
if ens.x == newx and ens.y == newy: if ens.x == newx and ens.y == newy:
goodtogo = False goodtogo = False
if goodtogo: if goodtogo:
print('New enemy at', newx, newy) print('[ ' + enemy.symbol + ' ] New enemy at', newx, newy)
newen = enemy(newx, newy, 1) newen = enemy(newx, newy, 1)
self.enemylist.append(newen) self.enemylist.append(newen)
self.entlist.append(newen) self.entlist.append(newen)
mfresh() mfresh()
def restart(): def restart():
print('Resetting game.')
self.xpos = int((arenasize-1)/2) self.xpos = int((arenasize-1)/2)
self.ypos = int((arenasize-1)/2) self.ypos = int((arenasize-1)/2)
while self.entlist != []: while self.entlist != []: