1: 2: logic 3: { 4: array board 5: { 2, 2, 1, 1, 1, 2, 2, 6: 2, 2, 1, 1, 1, 2, 2, 7: 1, 1, 1, 1, 1, 1, 1, 8: 1, 1, 1, 0, 1, 1, 1, 9: 1, 1, 1, 1, 1, 1, 1, 10: 2, 2, 1, 1, 1, 2, 2, 11: 2, 2, 1, 1, 1, 2, 2 } 12: 13: int win { 0 } 14: int left { (7*7)-(4*4)-1 } 15: int selected { -1 } 16: int _save_slot { 0 } 17: 18: for i ( 0 .. ((7*7)-1) ) 19: { 20: when 21: { 22: (selected == -1) 23: and 24: (board[i] == 1) 25: and 26: ( 27: ( ( (i % 7) < 5 ) and (board[i+1] == 1) and (board[i+2] == 0) ) 28: or 29: ( ( i < 35 ) and (board[i+7] == 1) and (board[i+14] == 0) ) 30: or 31: ( ( (i % 7) > 1 ) and (board[i-1] == 1) and (board[i-2] == 0) ) 32: or 33: ( ( i > 14 ) and (board[i-7] == 1) and (board[i-14] == 0) ) 34: ) 35: } 36: allow { selected = i; } 37: label { "select " i } 38: } 39: 40: when 41: { 42: ( selected != -1 ) 43: and 44: ( ( (selected % 7) < 5 ) and (board[selected+1] == 1) and (board[selected+2] == 0) ) 45: } 46: allow 47: { 48: board[selected] = 0; 49: board[selected+1] = 0; 50: board[selected+2] = 1; 51: left = left - 1; 52: selected = -1; 53: } 54: label 55: { 56: "jump " (selected+2) 57: } 58: 59: when 60: { 61: ( selected != -1 ) 62: and 63: ( ( (selected % 7) > 1 ) and (board[selected-1] == 1) and (board[selected-2] == 0) ) 64: } 65: allow 66: { 67: board[selected] = 0; 68: board[selected-1] = 0; 69: board[selected-2] = 1; 70: left = left - 1; 71: selected = -1; 72: } 73: label 74: { 75: "jump " (selected-2) 76: } 77: 78: when 79: { 80: ( selected != -1 ) 81: and 82: ( ( selected < 35 ) and (board[selected+7] == 1) and (board[selected+14] == 0) ) 83: } 84: allow 85: { 86: board[selected] = 0; 87: board[selected+7] = 0; 88: board[selected+14] = 1; 89: left = left - 1; 90: selected = -1; 91: } 92: label 93: { 94: "jump " (selected+14) 95: } 96: 97: when 98: { 99: ( selected != -1 ) 100: and 101: ( ( selected > 14 ) and (board[selected-7] == 1) and (board[selected-14] == 0) ) 102: } 103: allow 104: { 105: board[selected] = 0; 106: board[selected-7] = 0; 107: board[selected-14] = 1; 108: left = left - 1; 109: selected = -1; 110: } 111: label 112: { 113: "jump " (selected-14) 114: } 115: 116: when 117: { 118: ( selected != -1 ) 119: } 120: allow 121: { 122: selected = -1; 123: } 124: label 125: { 126: "unselect " selected 127: } 128: 129: when 130: { 131: ( left == 1 ) 132: } 133: allow 134: { 135: win = 1; 136: } 137: label 138: { 139: "win" 140: } 141: } 142: 143: display 144: { 145: stringtable counters { " ", "*", " " } 146: 147: for i ( 0 .. ((7*7)-1) ) 148: { 149: box 150: { 151: width { 2em } 152: height { 2em } 153: border { 1px solid black } 154: content { counters[ board[i] ] } 155: bind_action { "select " i } 156: bind_action { "unselect " i } 157: bind_action { "jump " i } 158: while_active { background { green } } 159: if( board[i] == 2 ) { background { #fe7 } } 160: } 161: 162: if( (i % 7) == 6 ) 163: { 164: newline 165: } 166: } 167: 168: newline 169: 170: box 171: { 172: bind_action { "win" } 173: while_active { background { green } content { "Well done!" } } 174: } 175: }