$regfile = "m32def.dat" $crystal = 16000000 $baud = 9600 Config Lcdpin = Pin , Rs = Portc.2 , E = Portc.3 , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 Config Lcd = 16 * 2 Config Rc5 = Pind.2 Enable Interrupts Dim Address As Byte , Command As Byte , Togglebit As Byte Display On Dim Okej(9) As Byte Dim A(81) As Integer Dim I As Integer Dim J As Integer Dim K As Integer Dim S As String * 20 Dim Pozycja As Integer Dim Donzo As Byte Dim Support(81) As Integer Declare Sub Wygeneruj Declare Sub Wypisz Declare Sub Ustaw(byval Tmp As Integer , Byval Tmp2 As Byte) Declare Sub Sprawdz Declare Function Move(byval Tmp As Integer , Byval Typruchu As Integer) As Integer Print "Witaj w ATMsudoku!" Cls Cursor Off Noblink Lcd "Podlacz mnie do" Lowerline Lcd "komputera :-)" For I = 1 To 81 Step 1 A(i) = 0 Next I Call Wygeneruj Pozycja = 1 Do Call Wypisz Donzo = 0 While Donzo <> 1 Getrc5(address , Command) Command = Command And &B01111111 If Command = 37 Then Donzo = 1 Pozycja = Move(pozycja , 3) Elseif Command = 38 Then Donzo = 1 Pozycja = Move(pozycja , 4) Elseif Command = 53 Then Donzo = 1 Pozycja = Move(pozycja , 1) Elseif Command = 54 Then Donzo = 1 Pozycja = Move(pozycja , 2) Elseif Command >= 1 And Command <= 9 Then Donzo = 1 Call Ustaw(pozycja , Command) Elseif Command = 49 Then Donzo = 1 Call Ustaw(pozycja , Command) End If Wend Call Sprawdz Loop End '-------------------------------------------------------------------- Sub Wygeneruj Donzo = 0 Print "Wybierz jedna z pieciu plansz" Print "1 - prosta" Print "2 - srednia" Print "3 - trudna" Print "4 - testowa" Print "" While Donzo <> 1 Getrc5(address , Command) Command = Command And &B01111111 If Command = 1 Then Donzo = 1 A(3) = 7 A(5) = 4 A(8) = 1 A(9) = 9 A(11) = 8 A(14) = 6 A(15) = 7 A(18) = 2 A(20) = 2 A(25) = 3 A(31) = 9 A(34) = 4 A(36) = 5 A(37) = 4 A(40) = 5 A(41) = 3 A(42) = 6 A(45) = 8 A(46) = 9 A(48) = 1 A(51) = 4 A(57) = 3 A(62) = 5 A(64) = 7 A(67) = 4 A(68) = 1 A(71) = 3 A(73) = 6 A(74) = 1 A(77) = 2 A(79) = 9 Elseif Command = 2 Then Donzo = 1 A(2) = 1 A(3) = 9 A(5) = 2 A(8) = 4 A(10) = 2 A(11) = 5 A(12) = 8 A(15) = 6 A(16) = 7 A(21) = 7 A(25) = 8 A(30) = 1 A(31) = 3 A(32) = 4 A(33) = 5 A(41) = 7 A(49) = 2 A(50) = 9 A(51) = 8 A(52) = 4 A(57) = 4 A(61) = 1 A(66) = 2 A(67) = 7 A(70) = 5 A(71) = 6 A(72) = 9 A(74) = 9 A(77) = 1 A(79) = 3 A(80) = 8 Elseif Command = 3 Then Donzo = 1 A(3) = 8 A(5) = 7 A(6) = 4 A(7) = 9 A(8) = 1 A(10) = 6 A(18) = 7 A(20) = 2 A(22) = 9 A(27) = 3 A(32) = 2 A(33) = 1 A(35) = 4 A(38) = 6 A(39) = 1 A(41) = 3 A(42) = 5 A(47) = 8 A(49) = 5 A(50) = 6 A(55) = 3 A(60) = 7 A(62) = 9 A(64) = 8 A(72) = 5 A(74) = 4 A(75) = 6 A(76) = 8 A(77) = 9 A(79) = 2 Elseif Command = 4 Then Donzo = 1 A(1) = 7 A(2) = 2 A(3) = 5 A(4) = 9 A(5) = 3 A(6) = 4 A(7) = 1 A(8) = 6 A(9) = 8 A(10) = 9 A(11) = 8 A(12) = 6 A(13) = 2 'A(14) = 1 A(15) = 7 A(16) = 5 A(17) = 3 A(18) = 4 A(19) = 3 A(20) = 4 A(21) = 1 A(22) = 8 A(23) = 6 A(24) = 5 A(25) = 9 A(26) = 2 A(27) = 7 A(28) = 5 A(29) = 9 A(30) = 4 A(31) = 1 A(32) = 8 A(33) = 6 A(34) = 2 A(35) = 7 A(36) = 3 A(37) = 2 A(38) = 6 A(39) = 3 A(40) = 7 A(41) = 5 A(42) = 9 A(43) = 8 A(44) = 4 A(45) = 1 A(46) = 1 A(47) = 7 A(48) = 8 A(49) = 4 A(50) = 2 A(51) = 3 A(52) = 6 A(53) = 9 A(54) = 5 A(55) = 6 A(56) = 3 A(57) = 9 A(58) = 5 A(59) = 7 A(60) = 1 A(61) = 4 A(62) = 8 A(63) = 2 A(64) = 8 A(65) = 1 A(66) = 7 A(67) = 6 A(68) = 4 A(69) = 2 A(70) = 3 A(71) = 5 A(72) = 9 A(73) = 4 A(74) = 5 A(75) = 2 A(76) = 3 A(77) = 9 A(78) = 8 A(79) = 7 A(80) = 1 A(81) = 6 End If Upperline Wend Cls Lcd "Milej gry ;-)" End Sub Sub Wypisz Local Saving As Integer Saving = Pozycja S = "" For I = 0 To 8 Step 1 For J = 1 To 9 Step 1 Pozycja = Saving K = I * 9 K = K + J If K <> Pozycja Then S = S + " " Else S = S + ">" End If If A(k) = 0 Then S = S + "_" Else S = S + Str(a(k)) End If Next J Print S S = "" Next I Pozycja = Saving Print "" Print "------------" Print "" End Sub Sub Ustaw(byval Tmp As Integer , Byval Tmp2 As Byte) If Tmp2 >= 1 And Tmp2 <= 9 Then A(tmp) = Tmp2 Elseif Tmp2 = 49 Then A(tmp) = 0 End If End Sub Sub Sprawdz Local Test As Byte Local Tmp As Integer Test = 1 For I = 0 To 8 For J = 1 To 9 Okej(j) = 0 Next J For J = 1 To 9 For K = 1 To 81 Support(k) = A(k) Next K Tmp = I * 9 Tmp = Tmp + J Tmp = Support(tmp) If Tmp <> 0 Then Okej(tmp) = 1 End If Next J For J = 1 To 9 If Okej(j) <> 1 Then Test = 0 End If Next J 'Print Test Next I For I = 1 To 9 For J = 1 To 9 Okej(j) = 0 Next J For J = 0 To 8 For K = 1 To 81 Support(k) = A(k) Next K Tmp = J * 9 Tmp = Tmp + I Tmp = Support(tmp) If Tmp <> 0 Then Okej(tmp) = 1 End If Next J For J = 1 To 9 If Okej(j) <> 1 Then Test = 0 End If Next J 'Print Test Next I If Test = 1 Then Print "" Print "GRATULACJE!" Print "Udalo Ci sie rozwiazac SUDOKU!" Print "" End If End Sub Function Move(byval Tmp As Integer , Byval Typruchu As Integer) As Integer Local Pozycjafinal As Integer Pozycjafinal = Tmp If Typruchu = 1 Then Tmp = Tmp - 9 If Tmp > 0 Then Pozycjafinal = Tmp Elseif Typruchu = 2 Then Tmp = Tmp + 9 If Tmp < 82 Then Pozycjafinal = Tmp Elseif Typruchu = 3 Then Tmp = Tmp - 1 If Tmp > 0 Then Pozycjafinal = Tmp Elseif Typruchu = 4 Then Tmp = Tmp + 1 If Tmp < 82 Then Pozycjafinal = Tmp End If Move = Pozycjafinal End Function