- commit
- 30959f6d0543f9e3c385620f314b0d9b52e0474e
- parent
- ce77513f2a357ddfec3d1c0ae4fd956f9359597c
- Author
- Tobias Bengfort <tobias.bengfort@gmx.net>
- Date
- 2011-03-08 13:33
menu working
Diffstat
| M | death_cli.py | 10 | +++++----- |
| M | death_cli_menu.py | 127 | ++++++++++++++++++++++++++++++++++++++++++++++++++----------- |
| M | matrix.py | 2 | +- |
3 files changed, 111 insertions, 28 deletions
diff --git a/death_cli.py b/death_cli.py
@@ -17,14 +17,14 @@ the players take turns. 17 17 18 18 CONTROLS: 19 19 arrow-keys - move cursor20 -1 return - toggle field value-1 20 space - toggle field value 21 21 after that it is the next players' turn 22 22 backspace - clear field value23 -1 space - perform a full step (one for every player)-1 23 return - perform a full step (one for every player) 24 24 tab - perform a single step (only for the active player) 25 25 after that it is the next players' turn 26 26 h - display this help screen27 -1 escape - quit-1 27 escape - return to menu 28 28 29 29 return with any key 30 30 """ @@ -86,12 +86,12 @@ class Crs: 86 86 elif key == curses.KEY_LEFT: 87 87 if self.col > 0: 88 88 self.col -= 189 -1 elif key == ord('\n'):-1 89 elif key == ord(' '): 90 90 self.death.map.setitem(self.row, self.col, self.death.id+1) 91 91 self.death.next() 92 92 elif key == curses.KEY_BACKSPACE: 93 93 self.death.map.setitem(self.row, self.col, 0)94 -1 elif key == ord(' '):-1 94 elif key == ord('\n'): 95 95 self.death.step() 96 96 elif key == ord(' '): 97 97 self.death.step_one(self.death.id)
diff --git a/death_cli_menu.py b/death_cli_menu.py
@@ -6,13 +6,28 @@ import death_cli 6 6 from death import Death 7 7 from matrix import Map 8 89 -1 """10 -1 title11 -1 number of players12 -1 map size13 -1 advanced - diagonal, numbers14 -1 win15 -1 start-1 9 help = """ -1 10 Welcome to DEATH ! -1 11 DEATH is a variant to Conways game of LIFE. -1 12 Every LIFE game can be described by two sets of numbers: -1 13 What I added is mulitiplayer support: -1 14 * numbers of friendly neighbors for a friendly item to survive -1 15 * numbers of friendly neighbors for a friendly item to be born -1 16 * numbers of friendly neighbors for a foe item to be killed -1 17 the players take turns. -1 18 -1 19 CONTROLS: -1 20 arrow-keys - move cursor -1 21 space - toggle field value -1 22 -1 23 backspace - clear field value -1 24 return - submit -1 25 -1 26 -1 27 h - display this help screen -1 28 escape - quit -1 29 -1 30 return with any key 16 31 """ 17 32 18 33 class Crs: @@ -40,51 +55,118 @@ class Crs: 40 55 elif key == curses.KEY_DOWN: 41 56 if n > 1: 42 57 n -= 1 -1 58 elif key == ord('h'): -1 59 self.screen.clear() -1 60 self.screen.addstr(0, 0, help, curses.color_pair(2)) -1 61 self.screen.getch() -1 62 self.screen.clear() 43 63 elif key == ord('\n'): 44 64 break 45 65 elif key == 27: 46 66 return False 47 67 # map size 48 68 self.screen.clear()49 -1 rows = 5-1 69 rows = 10 50 70 while 1: 51 71 self.screen.addstr(y0, x0, 'number of rows: %s' % rows, curses.color_pair(2)) 52 72 key = self.screen.getch() 53 73 if key == curses.KEY_UP:54 -1 rows += 1-1 74 if rows < self.screen.getmaxyx()[0]-2: -1 75 rows += 1 55 76 elif key == curses.KEY_DOWN: 56 77 if rows > 1: 57 78 rows -= 1 -1 79 elif key == ord('h'): -1 80 self.screen.clear() -1 81 self.screen.addstr(0, 0, help, curses.color_pair(2)) -1 82 self.screen.getch() -1 83 self.screen.clear() 58 84 elif key == ord('\n'): 59 85 break 60 86 elif key == 27: 61 87 return False62 -1 cols = 5-1 88 cols = 10 63 89 while 1:64 -1 self.screen.addstr(y0, x0, 'number of clumns: %s' % cols, curses.color_pair(2))-1 90 self.screen.addstr(y0, x0, 'number of columns: %s' % cols, curses.color_pair(2)) 65 91 key = self.screen.getch() 66 92 if key == curses.KEY_UP:67 -1 cols += 1-1 93 if cols < self.screen.getmaxyx()[1]/2-1: -1 94 cols += 1 68 95 elif key == curses.KEY_DOWN: 69 96 if cols > 1: 70 97 cols -= 1 -1 98 elif key == ord('h'): -1 99 self.screen.clear() -1 100 self.screen.addstr(0, 0, help, curses.color_pair(2)) -1 101 self.screen.getch() -1 102 self.screen.clear() 71 103 elif key == ord('\n'): 72 104 break 73 105 elif key == 27: 74 106 return False 75 107 # alive born kill76 -1 self.screen.clear()-1 108 """ -1 109 Diplay manu for every user -1 110 and append the results to the three lists afterwards -1 111 """ 77 112 alive = [] 78 113 born = [] 79 114 kill = []80 -1 for id in range(n):81 -1 alive.append([1,3,5,7])82 -1 born.append([1,3,5,7])83 -1 kill.append([])84 -1 # alive.append([2,3])85 -1 # born.append([3])86 -1 # kill.append([2,3,4])87 -1-1 115 for player in range(n): -1 116 abk = [[], [], []] -1 117 _abk = 0 -1 118 _i = 0 -1 119 while 1: -1 120 self.screen.clear() -1 121 self.screen.addstr(y0-1, x0-10, 'Player %s' % str(player+1), curses.color_pair(2)) -1 122 self.screen.addstr(y0, x0-10, 'alive', curses.color_pair(2)) -1 123 self.screen.addstr(y0+1, x0-10, 'born', curses.color_pair(2)) -1 124 self.screen.addstr(y0+2, x0-10, 'kill', curses.color_pair(2)) -1 125 for i in range(9): -1 126 self.screen.addstr(y0-1, x0+2*i, str(i), curses.color_pair(2)) -1 127 for __abk in range(3): -1 128 if _abk == __abk and _i == i: -1 129 color = curses.color_pair(1) -1 130 else: -1 131 color = curses.color_pair(2) -1 132 if i in abk[__abk]: -1 133 self.screen.addstr(y0+__abk, x0+2*i, 'X', color) -1 134 else: -1 135 self.screen.addstr(y0+__abk, x0+2*i, ' ', color) -1 136 -1 137 key = self.screen.getch() -1 138 if key == curses.KEY_UP: -1 139 if _abk > 0: -1 140 _abk -= 1 -1 141 elif key == curses.KEY_DOWN: -1 142 if _abk < 2: -1 143 _abk += 1 -1 144 if key == curses.KEY_LEFT: -1 145 if _i > 0: -1 146 _i -= 1 -1 147 elif key == curses.KEY_RIGHT: -1 148 if _i < 10-1: -1 149 _i += 1 -1 150 elif key == ord(' '): -1 151 if _i in abk[_abk]: -1 152 abk[_abk] = filter(lambda x: x != _i, abk[_abk]) -1 153 else: -1 154 abk[_abk].append(_i) -1 155 elif key == curses.KEY_BACKSPACE: -1 156 abk[_abk] = filter(lambda x: x != _i, abk[_abk]) -1 157 elif key == ord('h'): -1 158 self.screen.clear() -1 159 self.screen.addstr(0, 0, help, curses.color_pair(2)) -1 160 self.screen.getch() -1 161 self.screen.clear() -1 162 elif key == ord('\n'): -1 163 break -1 164 elif key == 27: -1 165 return False -1 166 alive.append(abk[0]) -1 167 born.append(abk[1]) -1 168 kill.append(abk[2]) -1 169 88 170 _map = Map(rows, cols) 89 171 d = Death(_map, n, alive, born, kill) 90 172 death_cli.Crs(d, self.screen) @@ -92,6 +174,7 @@ class Crs: 92 174 93 175 if __name__ == '__main__': 94 176 try: Crs()95 -1 except: pass-1 177 except Exception as ex: -1 178 print ex 96 179 curses.endwin() 97 180
diff --git a/matrix.py b/matrix.py
@@ -52,7 +52,7 @@ class Matrix: 52 52 pass # TODO 53 53 54 54 class Map(Matrix):55 -1 def __init__(self, rows=5, cols=5, diagonal=True, value=0):-1 55 def __init__(self, rows=15, cols=15, diagonal=True, value=0): 56 56 Matrix.__init__(self,rows, cols, value) 57 57 self.diagonal = diagonal 58 58