115 lines
2.9 KiB
Python
115 lines
2.9 KiB
Python
import threading
|
|
from Sodoku.Kaestchen import Kaestchen
|
|
|
|
|
|
class Sodoku:
|
|
|
|
def __init__(self):
|
|
self.alleZellen = [[Kaestchen(x, y) for x in range(3)] for y in range(3)]
|
|
|
|
|
|
def __str__(self):
|
|
gesamt = ""
|
|
for index, zelle in enumerate(self.alleZellen):
|
|
gesamt += str(zelle)
|
|
if (index + 1) % 3 == 0:
|
|
gesamt += "\n"
|
|
return gesamt
|
|
|
|
|
|
def __repr__(self):
|
|
gesamt = ""
|
|
for index, zelle in enumerate(self.alleZellen):
|
|
gesamt += str(zelle)
|
|
if (index + 1) % 3 == 0:
|
|
gesamt += "\n"
|
|
return gesamt
|
|
|
|
|
|
def wert_eintragen(self, wert, zeile, spalte):
|
|
self.alleZellen[zeile//3][spalte//3].wert_eintragen(wert, zeile, spalte)
|
|
|
|
|
|
def update_screen(self):
|
|
print(self)
|
|
|
|
|
|
def raetsel_erstellen(self):
|
|
# Zeile 1
|
|
self.wert_eintragen(8, 0, 1)
|
|
self.wert_eintragen(5, 0, 5)
|
|
self.wert_eintragen(1, 0, 6)
|
|
self.wert_eintragen(7, 0, 7)
|
|
self.wert_eintragen(9, 0, 8)
|
|
|
|
# Zeile 2
|
|
self.wert_eintragen(2, 1, 3)
|
|
self.wert_eintragen(6, 1, 5)
|
|
self.wert_eintragen(8, 1, 7)
|
|
self.wert_eintragen(4, 1, 8)
|
|
|
|
# Zeile 3
|
|
self.wert_eintragen(9, 2, 0)
|
|
self.wert_eintragen(3, 2, 2)
|
|
self.wert_eintragen(6, 2, 6)
|
|
|
|
# Zeile 4
|
|
self.wert_eintragen(2, 3, 0)
|
|
self.wert_eintragen(7, 3, 1)
|
|
self.wert_eintragen(8, 3, 4)
|
|
self.wert_eintragen(5, 3, 6)
|
|
self.wert_eintragen(3, 3, 8)
|
|
|
|
# Zeile 5
|
|
self.wert_eintragen(4, 4, 0)
|
|
self.wert_eintragen(5, 4, 4)
|
|
self.wert_eintragen(8, 4, 6)
|
|
self.wert_eintragen(1, 4, 7)
|
|
self.wert_eintragen(2, 4, 8)
|
|
|
|
# Zeile 6
|
|
self.wert_eintragen(8, 5, 2)
|
|
self.wert_eintragen(4, 5, 4)
|
|
self.wert_eintragen(2, 5, 5)
|
|
self.wert_eintragen(7, 5, 8)
|
|
|
|
# Zeile 7
|
|
self.wert_eintragen(8, 6, 0)
|
|
self.wert_eintragen(3, 6, 5)
|
|
self.wert_eintragen(1, 6, 8)
|
|
|
|
# Zeile 8
|
|
self.wert_eintragen(3, 7, 0)
|
|
self.wert_eintragen(5, 7, 1)
|
|
self.wert_eintragen(4, 7, 2)
|
|
self.wert_eintragen(1, 7, 4)
|
|
self.wert_eintragen(9, 7, 7)
|
|
|
|
# Zeile 9
|
|
self.wert_eintragen(9, 8, 1)
|
|
self.wert_eintragen(6, 8, 2)
|
|
self.wert_eintragen(2, 8, 4)
|
|
self.wert_eintragen(4, 8, 5)
|
|
self.wert_eintragen(7, 8, 6)
|
|
|
|
|
|
def loesen(self):
|
|
alleThreads = []
|
|
name = 0
|
|
for i in self.alleZellen:
|
|
for j in i:
|
|
name += 1
|
|
alleThreads.append(threading.Thread(name=name, target=j.loesen, args=(self, )))
|
|
|
|
for thread in alleThreads:
|
|
thread.start()
|
|
for thread in alleThreads:
|
|
thread.join()
|
|
|
|
print("Das Sodoku wurde gelöst: ")
|
|
print(self)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sodoku = Sodoku()
|
|
sodoku.loesen() |