Facebook
From Buff Hedgehog, 8 Years ago, written in BASCOM AVR.
This paste is a reply to Untitled from Ample Pelican - go back
Embed
Viewing differences between Untitled and Re: Untitled
$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 Przesun(byref Tmp As Integer , Byval Tmp2 As Integer)
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 Przesun(byref Tmp As Integer , Byval Tmp2 As Integer)
'   Local Position As Integer
'   Position = Tmp
'   If Tmp2 = 1 Then
'      Position = Position - 9
'      If Position > 0 Then Tmp = Position
'   Else
'      Position = Position + 9
'      If Position < 81 Then Tmp = Position
'   End If
'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

Replies to Re: Untitled rss

Title Name Language When
Re: Re: Untitled Putrid Teal bascomavr 8 Years ago.