Skip to content

Commit 6fdba80

Browse files
committed
PyCharm, better score ;), working ui generator
1 parent 67e73e7 commit 6fdba80

4 files changed

Lines changed: 88 additions & 11 deletions

File tree

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,6 @@ nosetests.xml
3333
.mr.developer.cfg
3434
.project
3535
.pydevproject
36+
37+
# PyCharm
38+
.idea

highscore.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
26
1+
29

snake.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ def run_game(self):
183183
pygame.init()
184184

185185
# do fancy window stuff
186-
pygame.display.set_caption("SNAKE")
186+
pygame.display.set_caption("pySnake")
187187
#pygame.display.set_icon(pygame.image.load('imgs/bandit.jpg'))
188188
pygame.mouse.set_visible(False)
189189

ui.py

Lines changed: 83 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,25 @@ def __init__(self, screen):
1313
# pygame.display.set_mode(...)
1414
self._screen = screen
1515
self.keymap = {pygame.K_UP:1, pygame.K_RIGHT:2, pygame.K_DOWN:3, pygame.K_LEFT:4}
16-
16+
self.selectedColor = (245, 101, 44) # orange ;)
1717
self.nextAction = None
1818

1919
self.menus = {}
20+
21+
self._selectedMenu = '' # menu 'name'
22+
self._selectedMenuItem = '' # selected index
23+
self._selectedMenuItemIndex = -1 # selected index
2024

2125
def interaction(self, eventKey):
2226
canInteract = False
2327

2428
if eventKey in self.keymap:
2529
canInteract = True
26-
nextAction = self.keymap[eventKey]
30+
self.nextAction = self.keymap[eventKey]
31+
if self.nextAction == 1: # UP
32+
self.selectMenuItem(-1)
33+
elif self.nextAction == 3: # DOWN
34+
self.selectMenuItem(1)
2735
else:
2836
# reset the action if multiple times pressed keys before
2937
# actually did something
@@ -34,7 +42,7 @@ def interaction(self, eventKey):
3442
def addMenu(self, menuKey, menuRows):
3543
''' add an menu
3644
menuKey: unique name of the menu
37-
menueRows: [
45+
menuRows: [
3846
{"rowName":"title", "selectable":False, "font":"MS Comic Sans", "fontSize":30, "color":(0,0,255), "text":"UserInterfaceGenerator"},
3947
{"rowName":"start", "selectable":True, "font":"MS Comic Sans", "fontSize":30, "color":(0,0,255), "text":"Start Game"},
4048
{"rowName":"q", "selectable":True, "font":"MS Comic Sans", "fontSize":30, "color":(123,55,255), "text":"QUIT"}
@@ -53,11 +61,70 @@ def addSimpleMenu(self, menuKey, menuRows, font="MS Comic Sans", size=30, color=
5361
menu.append({"rowName":"simple_" + str(rowCount), "selectable":False, "font":font, "fontSize":size, "color":color, "text":row})
5462

5563
self.menus[menuKey] = menu
56-
57-
def draw(self, menuKey):
64+
65+
def __getAvailableIndexes(self):
66+
indexList = []
67+
if self._selectedMenu in self.menus:
68+
for i in range(len(self.menus[self._selectedMenu])):
69+
if self.menus[self._selectedMenu][i]['selectable']:
70+
indexList.append(i)
71+
return indexList
72+
73+
def selectMenuItem(self, direction=0):
74+
''' select the menu item
75+
direction: +1 (down) or -1 (up), 0 for the first selectable item in the current menu
76+
'''
77+
#self._selectedIndex
78+
79+
indexList = self.__getAvailableIndexes()
80+
if len(indexList) == 0:
81+
print('NO MENU ITEMS')
82+
return -1
83+
84+
if self._selectedMenu in self.menus and direction == 0:
85+
self._selectedMenuItemIndex = indexList[0]
86+
self._selectedMenuItem = self.menus[self._selectedMenu][indexList[0]]
87+
else:
88+
currentIndex = 0
89+
if self._selectedMenuItemIndex in indexList:
90+
currentIndex = indexList.index(self._selectedMenuItemIndex)
91+
nextIndex = currentIndex + direction
92+
93+
# allow top-down / down-top switching
94+
if nextIndex >= len(indexList): # last element ogf list!
95+
self._selectedMenuItemIndex = indexList[0]
96+
self._selectedMenuItem = self.menus[self._selectedMenu][self._selectedMenuItemIndex]
97+
elif nextIndex < 0:
98+
self._selectedMenuItemIndex = indexList[-1] # last element ogf list!
99+
self._selectedMenuItem = self.menus[self._selectedMenu][self._selectedMenuItemIndex]
100+
else:
101+
self._selectedMenuItemIndex = indexList[nextIndex]
102+
self._selectedMenuItem = self.menus[self._selectedMenu][self._selectedMenuItemIndex]
103+
104+
return self._selectedMenuItem
105+
106+
def getSelectedItem(self):
107+
if self._selectedMenu in self.menus and self._selectedMenuItemIndex >= 0:
108+
return self.menus[self._selectedMenu][self._selectedMenuItemIndex]
109+
110+
print("WARNING! NO SELECTED MENU ITEM FOUND!")
111+
return None
112+
113+
def draw(self, menuKey=''):
58114
if menuKey in self.menus:
59-
menuToDraw = self.menus[menuKey]
60-
115+
self._selectedMenu = menuKey
116+
elif menuKey == '':
117+
if self._selectedMenu == '' and 'main' in self.menus:
118+
self._selectedMenu = 'main'
119+
else:
120+
raise Exception("Error menu '"+ menuKey +"' does not exist and there is no 'main' menu")
121+
122+
menuToDraw = self.menus[self._selectedMenu]
123+
124+
if self._selectedMenuItemIndex == -1:
125+
self.selectMenuItem(0)
126+
127+
if menuToDraw is not None:
61128
#print fnt.size(resultText)
62129
menuRowsCount = len(menuToDraw)
63130
for i in range(menuRowsCount):
@@ -66,7 +133,12 @@ def draw(self, menuKey):
66133
xPos = (self._screen.get_width() / 2)
67134
yPos = (self._screen.get_height() / 30) * menuRowsCount
68135
txt = menuToDraw[i]["text"]
69-
self._screen.blit(fnt.render(txt, 1, menuToDraw[i]["color"]), ( xPos - (fnt.size(txt)[0] / 2), yPos +(i * fontSize)))
136+
137+
color = menuToDraw[i]["color"]
138+
if i == self._selectedMenuItemIndex:
139+
color = self.selectedColor
140+
141+
self._screen.blit(fnt.render(txt, 1, color), ( xPos - (fnt.size(txt)[0] / 2), yPos +(i * fontSize)))
70142
else:
71143
raise Exception("Error menu '"+ menuKey +"' does not exist")
72144

@@ -81,7 +153,9 @@ def draw(self, menuKey):
81153
iUi.addMenu("main", [
82154
{"rowName":"title", "selectable":False, "font":"MS Comic Sans", "fontSize":30, "color":(0,0,255), "text":"UserInterfaceGenerator"},
83155
{"rowName":"start", "selectable":True, "font":"MS Comic Sans", "fontSize":30, "color":(0,0,255), "text":"Start Game"},
84-
{"rowName":"q", "selectable":True, "font":"MS Comic Sans", "fontSize":30, "color":(123,55,255), "text":"QUIT"}
156+
{"rowName":"info", "selectable":True, "font":"MS Comic Sans", "fontSize":30, "color":(123,55,255), "text":"1NF0$"},
157+
{"rowName":"q", "selectable":True, "font":"MS Comic Sans", "fontSize":30, "color":(123,55,255), "text":"QUIT"},
158+
{"rowName":"notes", "selectable":False, "font":"MS Comic Sans", "fontSize":30, "color":(123,55,255), "text":"sometext"},
85159
]
86160
)
87161

0 commit comments

Comments
 (0)