r4514 - developers/erin_yueh/pythonEFL-sudoku/src
erin_yueh at docs.openmoko.org
erin_yueh at docs.openmoko.org
Tue Jul 8 14:05:54 CEST 2008
Author: erin_yueh
Date: 2008-07-08 14:05:53 +0200 (Tue, 08 Jul 2008)
New Revision: 4514
Modified:
developers/erin_yueh/pythonEFL-sudoku/src/sudoku_ui.py
Log:
add clear function and some checking rules (Erin Yueh)
Modified: developers/erin_yueh/pythonEFL-sudoku/src/sudoku_ui.py
===================================================================
--- developers/erin_yueh/pythonEFL-sudoku/src/sudoku_ui.py 2008-07-08 08:05:21 UTC (rev 4513)
+++ developers/erin_yueh/pythonEFL-sudoku/src/sudoku_ui.py 2008-07-08 12:05:53 UTC (rev 4514)
@@ -8,24 +8,45 @@
WINDOW_WIDTH = 455
WINDOW_HEIGHT = 640
-
+GROUP_ROWCOL = {
+ '0': (0,0,0), '1':(1,0,3), '2':(2,0,6),
+ '3': (3,3,0), '4':(4,3,3), '5':(5,3,6),
+ '6': (6,6,0), '7':(7,6,3), '8':(8,6,6),
+ }
def checkRow(row,value):
isOK = True
-
+ puzzle = ee.data["puzzle"]
+ print 'checkRow',row,value
+ for j in xrange(9):
+ print puzzle[row][j]
+ if(value == puzzle[row][j]):
+ isOK = False
return isOK
-def checkLine(line,value):
+def checkColumn(column,value):
isOK = True
-
+ puzzle = ee.data["puzzle"]
+ print 'checkColumn',column,value
+ for i in xrange(9):
+ print puzzle[i][column]
+ if(value == puzzle[i][column]):
+ isOK = False
return isOK
def checkGroup(group,value):
isOK = True
-
+ puzzle = ee.data["puzzle"]
+ print 'checkGroup',group,value
+ (group,r,c) = GROUP_ROWCOL[str(group)]
+ for i in xrange (r,r+3):
+ for j in xrange(c,c+3):
+ print puzzle[i][j]
+ if(value == puzzle[i][j]):
+ isOK = False
return isOK
def analyze(button,value):
- isOK = False
+ isOK = True
puzzle = ee.data["puzzle"]
# button40 2
addr = button[6:]
@@ -34,19 +55,33 @@
j = int(addr) % 9
g = (i/3)*3 + (j/3)
print i,j,g
- if not(checkRow(i,value) or checkLine(j,value) or checkGroup(g,value)):
- isOK = True
+ if(checkRow(i,value) == False or checkColumn(j,value) == False or checkGroup(g,value) == False):
+ return False
+ '''
+ if (checkRow(i,value) == False):
+ return False
+ elif(checkColumn(j,value) == False):
+ return False
+ elif(checkGroup(g,value) == False):
+ return False
+ '''
+ #if not(checkRow(i,value) or checkColumn(j,value) or checkGroup(g,value)):
+ # isOK = True
return isOK
def number_key_cb(zoom_in, emission, source):
print 'number_key_cb emission,source:',emission,source
if(source == 'clear'):
+ puzzle_clone = ee.data["puzzle_clone"]
puzzle = ee.data["puzzle"]
for i in xrange (9):
for j in xrange(9):
- value = puzzle[i][j]
- addr = i + j *9
+ value = puzzle_clone[i][j]
+
+ print 'i,j,value,puzzle[i][j]',i,j,value,puzzle[i][j]
+ puzzle[i][j] = value
+ addr = j + i *9
text_data = "button" + str(addr)
text = ee.data[text_data]
text.data["value"] = value
@@ -66,17 +101,25 @@
text = ee.data[ee.data["clicking"]]
text.text_set(source)
text.data["value"] = int(source)
- if(analyze(ee.data["clicking"],source) == False):
+ button = ee.data["clicking"]
+ addr = button[6:]
+ i = int(addr) / 9
+ j = int(addr) % 9
+ print i,j,addr
+
+ if(analyze(ee.data["clicking"],int(source)) == False):
text.color_set(255,0,0,255)
else:
text.color_set(255,255,255,255)
+ puzzle = ee.data["puzzle"]
+ puzzle[i][j] = int(source)
return True
def puzzle_key_cb(zoom_in, emission, source):
print 'puzzle_key_cb emission,source:',emission,source
text = ee.data[source]
- if(int(text.data["value"]) ==0 ):
+ if(text.data["fixed"] == False):
text.color_set(255,255,255,255)
ee.data["clicking"] = source
@@ -132,9 +175,19 @@
board.show()
puzzle = get_puzzle()
+ print 'puzzle',puzzle
+ puzzle_clone = []
+ for i in xrange(9):
+ row = []
+ for j in xrange(9):
+ row.append(puzzle[i][j])
+ puzzle_clone.append(row)
+ print 'puzzle_clone', puzzle_clone
+
ee.data["puzzle"] = puzzle
- print puzzle
+ ee.data["puzzle_clone"] = puzzle_clone
+
element_w = 455 / 9
element_h = 455 / 9
# put all elements to Text objects
@@ -142,10 +195,12 @@
for j in xrange(9):
x = 15 + (element_w * (i))
y = 15 + (element_h * (j))
- #print i,j
- value = puzzle[i][j]
+
+ value = puzzle[j][i]
+
display = str(value)
- addr = i + j *9
+ addr = j *9 + i
+ print 'row,column,value,addr: ',i,j,value,addr
text = canvas.Text(text=display, font=("sans serif", 16), color=(0,255,255,255))
#print i,j,x,y
if(value>0):
@@ -153,9 +208,13 @@
text.pos_set(x,y)
text.show()
text.data["value"] = value
+ if(value>0):
+ text.data["fixed"] = True
+ else:
+ text.data["fixed"] = False
text_data = "button" + str(addr)
ee.data[text_data] = text
- print 'TRY:',text_data, ee.data[text_data]
+ #print 'TRY:',text_data, ee.data[text_data]
More information about the commitlog
mailing list