Changeset 4514


Ignore:
Timestamp:
07/08/08 14:05:53 (5 years ago)
Author:
erin_yueh
Message:

add clear function and some checking rules (Erin Yueh)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • developers/erin_yueh/pythonEFL-sudoku/src/sudoku_ui.py

    r4509 r4514  
    99WINDOW_WIDTH = 455 
    1010WINDOW_HEIGHT = 640 
    11  
     11GROUP_ROWCOL = { 
     12                '0': (0,0,0), '1':(1,0,3), '2':(2,0,6), 
     13                '3': (3,3,0), '4':(4,3,3), '5':(5,3,6), 
     14                '6': (6,6,0), '7':(7,6,3), '8':(8,6,6), 
     15               } 
    1216def checkRow(row,value): 
    1317    isOK = True 
    14      
    15     return isOK 
    16      
    17 def checkLine(line,value): 
    18     isOK = True 
    19      
     18    puzzle = ee.data["puzzle"] 
     19    print 'checkRow',row,value 
     20    for j in xrange(9): 
     21        print puzzle[row][j] 
     22        if(value == puzzle[row][j]): 
     23            isOK = False 
     24    return isOK 
     25     
     26def checkColumn(column,value): 
     27    isOK = True 
     28    puzzle = ee.data["puzzle"] 
     29    print 'checkColumn',column,value 
     30    for i in xrange(9): 
     31        print puzzle[i][column] 
     32        if(value == puzzle[i][column]): 
     33            isOK = False 
    2034    return isOK 
    2135 
    2236def checkGroup(group,value): 
    2337    isOK = True 
    24      
     38    puzzle = ee.data["puzzle"] 
     39    print 'checkGroup',group,value 
     40    (group,r,c) = GROUP_ROWCOL[str(group)] 
     41    for i in xrange (r,r+3): 
     42        for j in xrange(c,c+3): 
     43            print puzzle[i][j] 
     44            if(value == puzzle[i][j]): 
     45                isOK = False 
    2546    return isOK 
    2647     
    2748def analyze(button,value): 
    28     isOK = False 
     49    isOK = True 
    2950    puzzle = ee.data["puzzle"] 
    3051    # button40 2 
     
    3556    g = (i/3)*3 + (j/3) 
    3657    print i,j,g 
    37     if not(checkRow(i,value) or checkLine(j,value) or checkGroup(g,value)): 
    38         isOK = True 
     58    if(checkRow(i,value) == False or checkColumn(j,value) == False or checkGroup(g,value) == False): 
     59        return False 
     60    ''' 
     61    if (checkRow(i,value) == False): 
     62        return False 
     63    elif(checkColumn(j,value) == False): 
     64        return False 
     65    elif(checkGroup(g,value) == False): 
     66        return False 
     67    '''     
     68    #if not(checkRow(i,value) or checkColumn(j,value) or checkGroup(g,value)): 
     69    #    isOK = True 
    3970    return isOK 
    4071     
     
    4374     
    4475    if(source == 'clear'): 
     76        puzzle_clone = ee.data["puzzle_clone"] 
    4577        puzzle = ee.data["puzzle"] 
    4678        for i in xrange (9): 
    4779            for j in xrange(9): 
    48                 value = puzzle[i][j] 
    49                 addr = i + j *9 
     80                value = puzzle_clone[i][j] 
     81                 
     82                print 'i,j,value,puzzle[i][j]',i,j,value,puzzle[i][j] 
     83                puzzle[i][j] = value 
     84                addr = j + i *9 
    5085                text_data = "button" + str(addr) 
    5186                text = ee.data[text_data]  
     
    67102            text.text_set(source) 
    68103            text.data["value"] = int(source) 
    69             if(analyze(ee.data["clicking"],source) == False): 
     104            button = ee.data["clicking"] 
     105            addr = button[6:] 
     106            i = int(addr) / 9 
     107            j = int(addr) % 9 
     108            print i,j,addr 
     109             
     110            if(analyze(ee.data["clicking"],int(source)) == False): 
    70111                text.color_set(255,0,0,255) 
    71112            else:  
    72113                text.color_set(255,255,255,255) 
     114            puzzle = ee.data["puzzle"]     
     115            puzzle[i][j] = int(source)     
    73116    return True 
    74117 
     
    77120     
    78121    text = ee.data[source] 
    79     if(int(text.data["value"]) ==0 ): 
     122    if(text.data["fixed"] == False): 
    80123        text.color_set(255,255,255,255) 
    81124        ee.data["clicking"] = source 
     
    133176     
    134177    puzzle = get_puzzle() 
     178    print 'puzzle',puzzle 
     179    puzzle_clone = [] 
     180    for i in xrange(9): 
     181        row = [] 
     182        for j in xrange(9): 
     183            row.append(puzzle[i][j]) 
     184        puzzle_clone.append(row) 
     185    print 'puzzle_clone', puzzle_clone 
     186     
    135187    ee.data["puzzle"] = puzzle 
    136     print puzzle 
     188    ee.data["puzzle_clone"] = puzzle_clone 
     189     
    137190     
    138191    element_w = 455 / 9 
     
    143196            x = 15 + (element_w * (i)) 
    144197            y = 15 + (element_h * (j)) 
    145             #print i,j 
    146             value = puzzle[i][j] 
     198             
     199            value = puzzle[j][i] 
     200             
    147201            display = str(value) 
    148             addr = i + j *9 
     202            addr = j *9 + i 
     203            print 'row,column,value,addr: ',i,j,value,addr 
    149204            text = canvas.Text(text=display, font=("sans serif", 16), color=(0,255,255,255)) 
    150205            #print i,j,x,y 
     
    154209            text.show() 
    155210            text.data["value"] = value 
     211            if(value>0): 
     212                text.data["fixed"] = True 
     213            else: 
     214                text.data["fixed"] = False 
    156215            text_data = "button" + str(addr) 
    157216            ee.data[text_data] = text 
    158             print 'TRY:',text_data, ee.data[text_data] 
     217            #print 'TRY:',text_data, ee.data[text_data] 
    159218             
    160219     
Note: See TracChangeset for help on using the changeset viewer.