Changeset 4519
- Timestamp:
- 07/09/08 18:13:51 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
developers/erin_yueh/pythonEFL-sudoku/src/sudoku_ui.py
r4518 r4519 5 5 import edje 6 6 import random 7 import etk7 #import etk 8 8 9 9 WINDOW_WIDTH = 455 … … 17 17 isOK = True 18 18 puzzle = ee.data["puzzle"] 19 print 'checkRow',row,value19 #print 'checkRow',row,value 20 20 for j in xrange(9): 21 print puzzle[row][j]21 #print puzzle[row][j] 22 22 if(value == puzzle[row][j]): 23 23 isOK = False … … 27 27 isOK = True 28 28 puzzle = ee.data["puzzle"] 29 print 'checkColumn',column,value29 #print 'checkColumn',column,value 30 30 for i in xrange(9): 31 print puzzle[i][column]31 #print puzzle[i][column] 32 32 if(value == puzzle[i][column]): 33 33 isOK = False … … 37 37 isOK = True 38 38 puzzle = ee.data["puzzle"] 39 print 'checkGroup',group,value39 #print 'checkGroup',group,value 40 40 (group,r,c) = GROUP_ROWCOL[str(group)] 41 41 for i in xrange (r,r+3): 42 42 for j in xrange(c,c+3): 43 print puzzle[i][j]43 #print puzzle[i][j] 44 44 if(value == puzzle[i][j]): 45 45 isOK = False … … 60 60 def analyze(button,value): 61 61 isOK = True 62 puzzle = ee.data["puzzle"] 63 # button40 2 62 #puzzle = ee.data["puzzle"] 64 63 addr = button[6:] 65 64 print addr, value … … 67 66 j = int(addr) % 9 68 67 g = (i/3)*3 + (j/3) 69 print i,j,g 68 print i,j,g,addr,value 70 69 if(checkRow(i,value) == False or checkColumn(j,value) == False or checkGroup(g,value) == False): 71 70 return False … … 76 75 print 'number_key_cb emission,source:',emission,source 77 76 78 if(source == 'clear'): 79 puzzle_clone = ee.data["puzzle_clone"] 80 puzzle = ee.data["puzzle"] 81 for i in xrange (9): 82 for j in xrange(9): 83 value = puzzle_clone[i][j] 84 85 print 'i,j,value,puzzle[i][j]',i,j,value,puzzle[i][j] 86 puzzle[i][j] = value 87 addr = j + i *9 88 text_data = "button" + str(addr) 89 text = ee.data[text_data] 90 text.data["value"] = value 91 text.text_set(str(value)) 92 if(value>0): 93 text.color_set(10,10,10,200) 94 elif(value==0): 95 text.color_set(0,255,255,255) 77 if(source == 'clear' or source == 'create'): 78 # init undo redo action track 96 79 ee.data["undo_counter"] = 0 80 ee.data["redo_counter"] = 0 97 81 ee.data["undo_track"] = [] 98 print 'clear all data!!' 82 ee.data["redo_track"] = [] 83 ee.data["clicking"] = None 84 if(source == 'clear'): 85 puzzle_clone = ee.data["puzzle_clone"] 86 puzzle = ee.data["puzzle"] 87 for i in xrange (9): 88 for j in xrange(9): 89 value = puzzle_clone[i][j] 90 #print 'i,j,value,puzzle[i][j]',i,j,value,puzzle_clone[i][j] 91 puzzle[i][j] = value 92 addr = j + i *9 93 text_data = "button" + str(addr) 94 text = ee.data[text_data] 95 text.text_set(str(value)) 96 if(value>0): 97 text.color_set(10,10,10,200) 98 elif(value==0): 99 text.color_set(0,255,255,255) 100 print 'clear all data!!' 101 elif(source == 'create'): 102 print 'create new puzzle' 103 createNewPuzzle() 99 104 elif(source =='undo'): 100 105 print 'undo' … … 104 109 undo_counter = ee.data["undo_counter"] 105 110 (addr,value) = ee.data["undo_track"][undo_counter-1] 106 ee.data["undo_track"].pop() 107 111 redo = ee.data["undo_track"].pop() 112 ee.data["redo_track"].append(redo) 113 redo_counter = ee.data["redo_counter"] 114 ee.data["redo_counter"] = redo_counter+1 108 115 i = int(addr) / 9 109 116 j = int(addr) % 9 … … 114 121 text.color_set(100,255,0,255) 115 122 ee.data["puzzle"][i][j] = original_value 116 text.data["value"] = original_value123 #text.data["value"] = original_value 117 124 if(undo_counter>0): 118 125 ee.data["undo_counter"] = undo_counter-1 119 126 elif(source == 'redo'): 120 127 print 'redo' 121 print ee.data["undo_counter"], ee.data["undo_track"] 128 if(ee.data["redo_counter"] == 0): 129 return 130 print ee.data["redo_counter"], ee.data["redo_track"] 131 redo_counter = ee.data["redo_counter"] 132 (addr,value) = ee.data["redo_track"][redo_counter-1] 133 undo = ee.data["redo_track"].pop() 134 ee.data["undo_track"].append(undo) 135 undo_counter = ee.data["undo_counter"] 136 ee.data["undo_counter"] = undo_counter+1 137 138 i = int(addr) / 9 139 j = int(addr) % 9 140 text = ee.data["button"+str(addr)] 141 print i,j,value,text 142 text.text_set(str(value)) 143 text.color_set(255,255,0,255) 144 ee.data["puzzle"][i][j] = int(value) 145 #text.data["value"] = int(value) 146 if(redo_counter>0): 147 ee.data["redo_counter"] = redo_counter-1 148 122 149 elif(source == 'solve'): 123 150 print 'is solved?!' … … 126 153 else: 127 154 print 'YES' 128 elif(source == 'create'): 129 print 'create' 130 createNewPuzzle() 131 ee.data["undo_counter"] = 0 132 ee.data["undo_track"] = [] 155 133 156 else: 134 157 # fill in key number … … 136 159 text = ee.data[ee.data["clicking"]] 137 160 text.text_set(source) 138 text.data["value"] = int(source)139 161 button = ee.data["clicking"] 140 addr = button[6:] 162 #addr = button[6:] 163 addr = ee.data["clicking"][6:] 141 164 i = int(addr) / 9 142 165 j = int(addr) % 9 … … 154 177 ee.data["undo_counter"] = undo_counter +1 155 178 step = (int(addr),int(source)) 156 track = ee.data["undo_track"] 157 track.append(step) 158 print 'counter:',ee.data["undo_counter"] 159 print 'track:',track 179 ee.data["undo_track"].append(step) 180 #print 'undo_counter:',ee.data["undo_counter"] 181 #print 'undo_track:',ee.data["undo_track"] 160 182 return True 161 183 … … 192 214 193 215 puzzle = get_puzzle() 194 print ' puzzle',puzzle216 print 'new puzzle',puzzle 195 217 for i in xrange(9): 196 218 for j in xrange(9): … … 201 223 text_data = "button" + str(addr) 202 224 text = ee.data[text_data] 203 text.data["value"] = value204 225 text.text_set(str(value)) 205 226 if(value>0): … … 220 241 ee.size_min_set(WINDOW_WIDTH,WINDOW_HEIGHT) 221 242 canvas = ee.evas 222 243 223 244 # create a background 224 245 bg = edje.Edje(canvas, file="/usr/share/sudoku/sudoku.edj", group="pythonEFL-sudoku/background") … … 228 249 ee.data["bg"] = bg 229 250 230 # create puzzle andicons251 # create number keyboard and action icons 231 252 area = edje.Edje(canvas, file="/usr/share/sudoku/sudoku.edj", group="pythonEFL-sudoku/panel") 232 253 area.signal_callback_add("mouse,clicked,*", "*", number_key_cb) … … 236 257 area.data["area"] = area 237 258 238 # create puzzle and icons259 # create puzzle board 239 260 board = edje.Edje(canvas, file="/usr/share/sudoku/sudoku.edj", group="pythonEFL-sudoku/board") 240 261 board.signal_callback_add("mouse,clicked,*", "*", puzzle_key_cb) 241 262 board.pos = (0, 0) 242 263 board.show() 243 264 265 # retrieve one puzzle data 244 266 puzzle = get_puzzle() 245 print 'puzzle',puzzle246 267 puzzle_clone = [] 247 268 for i in xrange(9): … … 250 271 row.append(puzzle[i][j]) 251 272 puzzle_clone.append(row) 252 print 'puzzle_clone', puzzle_clone 253 273 print 'puzzle',puzzle, puzzle_clone 254 274 ee.data["puzzle"] = puzzle 255 275 ee.data["puzzle_clone"] = puzzle_clone 256 276 ee.data["clicking"] = None 277 278 # init redo undo track 257 279 ee.data["undo_counter"] = 0 280 ee.data["redo_counter"] = 0 258 281 ee.data["undo_track"] = [] 282 ee.data["redo_track"] = [] 259 283 260 284 element_w = 455 / 9 … … 265 289 x = 15 + (element_w * (i)) 266 290 y = 15 + (element_h * (j)) 267 268 291 value = puzzle[j][i] 269 270 display = str(value)271 292 addr = j *9 + i 272 print 'row,column,value,addr: ',i,j,value,addr 273 text = canvas.Text(text=display, font=("sans serif", 16), color=(0,255,255,255)) 274 #print i,j,x,y 293 #print 'row,column,value,addr: ',i,j,value,addr 294 text = canvas.Text(text=str(value), font=("sans serif", 16), color=(0,255,255,255)) 275 295 if(value>0): 296 text.data["fixed"] = True 276 297 text.color_set(10,10,10,200) 298 else: 299 text.data["fixed"] = False 277 300 text.pos_set(x,y) 278 301 text.show() 279 text.data["value"] = value280 if(value>0):281 text.data["fixed"] = True282 else:283 text.data["fixed"] = False284 302 text_data = "button" + str(addr) 285 303 ee.data[text_data] = text
Note: See TracChangeset
for help on using the changeset viewer.
