Facebook
From Ample Pelican, 8 Years ago, written in BASCOM AVR.
Embed
Download Paste or View Raw
Hits: 430
  1. $regfile = "m32def.dat"
  2.  
  3. $crystal = 16000000
  4.  
  5. $baud = 9600
  6.  
  7. Config Lcdpin = Pin , Rs = Portc.2 , E = Portc.3 , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
  8. Config Lcd = 16 * 2
  9. Config Rc5 = Pind.2
  10. Enable Interrupts
  11. Dim Address As Byte , Command As Byte , Togglebit As Byte
  12.  
  13. Display On
  14.  
  15. Dim Okej(9) As Byte
  16. Dim A(81) As Integer
  17. Dim I As Integer
  18. Dim J As Integer
  19. Dim K As Integer
  20. Dim S As String * 20
  21. Dim Pozycja As Integer
  22. Dim Donzo As Byte
  23.  
  24. Dim Support(81) As Integer
  25.  
  26. Declare Sub Wygeneruj
  27. Declare Sub Wypisz
  28. 'Declare Sub Przesun(byref Tmp As Integer , Byval Tmp2 As Integer)
  29. Declare Sub Ustaw(byval Tmp As Integer , Byval Tmp2 As Byte)
  30. Declare Sub Sprawdz
  31.  
  32. Declare Function Move(byval Tmp As Integer , Byval Typruchu As Integer) As Integer
  33.  
  34. Print "Witaj w ATMsudoku!"
  35.  
  36. Cls
  37. Cursor Off Noblink
  38. Lcd "Podlacz mnie do"
  39. Lowerline
  40. Lcd "komputera :-)"
  41.  
  42. For I = 1 To 81 Step 1
  43.    A(i) = 0
  44. Next I
  45.  
  46. Call Wygeneruj
  47. Pozycja = 1
  48.  
  49. Do
  50.  
  51. Call Wypisz
  52.  
  53. Donzo = 0
  54.  
  55. While Donzo <> 1
  56.    Getrc5(address , Command)
  57.    Command = Command And &B01111111
  58.       If Command = 37 Then
  59.          Donzo = 1
  60.          Pozycja = Move(pozycja , 3)
  61.       Elseif Command = 38 Then
  62.          Donzo = 1
  63.          Pozycja = Move(pozycja , 4)
  64.       Elseif Command = 53 Then
  65.          Donzo = 1
  66.          Pozycja = Move(pozycja , 1)
  67.       Elseif Command = 54 Then
  68.          Donzo = 1
  69.          Pozycja = Move(pozycja , 2)
  70.       Elseif Command >= 1 And Command <= 9 Then
  71.          Donzo = 1
  72.          Call Ustaw(pozycja , Command)
  73.       Elseif Command = 49 Then
  74.          Donzo = 1
  75.          Call Ustaw(pozycja , Command)
  76.       End If
  77. Wend
  78.  
  79. Call Sprawdz
  80.  
  81. Loop
  82.  
  83. End
  84.  
  85. '--------------------------------------------------------------------
  86.  
  87. Sub Wygeneruj
  88.    Donzo = 0
  89.  
  90.    Print "Wybierz jedna z pieciu plansz"
  91.    Print "1 - prosta"
  92.    Print "2 - srednia"
  93.    Print "3 - trudna"
  94.    Print "4 - testowa"
  95.    Print ""
  96.  
  97.    While Donzo <> 1
  98.       Getrc5(address , Command)
  99.       Command = Command And &B01111111
  100.          If Command = 1 Then
  101.             Donzo = 1
  102.             A(3) = 7
  103.             A(5) = 4
  104.             A(8) = 1
  105.             A(9) = 9
  106.             A(11) = 8
  107.             A(14) = 6
  108.             A(15) = 7
  109.             A(18) = 2
  110.             A(20) = 2
  111.             A(25) = 3
  112.             A(31) = 9
  113.             A(34) = 4
  114.             A(36) = 5
  115.             A(37) = 4
  116.             A(40) = 5
  117.             A(41) = 3
  118.             A(42) = 6
  119.             A(45) = 8
  120.             A(46) = 9
  121.             A(48) = 1
  122.             A(51) = 4
  123.             A(57) = 3
  124.             A(62) = 5
  125.             A(64) = 7
  126.             A(67) = 4
  127.             A(68) = 1
  128.             A(71) = 3
  129.             A(73) = 6
  130.             A(74) = 1
  131.             A(77) = 2
  132.             A(79) = 9
  133.          Elseif Command = 2 Then
  134.             Donzo = 1
  135.             A(2) = 1
  136.             A(3) = 9
  137.             A(5) = 2
  138.             A(8) = 4
  139.             A(10) = 2
  140.             A(11) = 5
  141.             A(12) = 8
  142.             A(15) = 6
  143.             A(16) = 7
  144.             A(21) = 7
  145.             A(25) = 8
  146.             A(30) = 1
  147.             A(31) = 3
  148.             A(32) = 4
  149.             A(33) = 5
  150.             A(41) = 7
  151.             A(49) = 2
  152.             A(50) = 9
  153.             A(51) = 8
  154.             A(52) = 4
  155.             A(57) = 4
  156.             A(61) = 1
  157.             A(66) = 2
  158.             A(67) = 7
  159.             A(70) = 5
  160.             A(71) = 6
  161.             A(72) = 9
  162.             A(74) = 9
  163.             A(77) = 1
  164.             A(79) = 3
  165.             A(80) = 8
  166.          Elseif Command = 3 Then
  167.             Donzo = 1
  168.             A(3) = 8
  169.             A(5) = 7
  170.             A(6) = 4
  171.             A(7) = 9
  172.             A(8) = 1
  173.             A(10) = 6
  174.             A(18) = 7
  175.             A(20) = 2
  176.             A(22) = 9
  177.             A(27) = 3
  178.             A(32) = 2
  179.             A(33) = 1
  180.             A(35) = 4
  181.             A(38) = 6
  182.             A(39) = 1
  183.             A(41) = 3
  184.             A(42) = 5
  185.             A(47) = 8
  186.             A(49) = 5
  187.             A(50) = 6
  188.             A(55) = 3
  189.             A(60) = 7
  190.             A(62) = 9
  191.             A(64) = 8
  192.             A(72) = 5
  193.             A(74) = 4
  194.             A(75) = 6
  195.             A(76) = 8
  196.             A(77) = 9
  197.             A(79) = 2
  198.          Elseif Command = 4 Then
  199.             Donzo = 1
  200.             A(1) = 7
  201.             A(2) = 2
  202.             A(3) = 5
  203.             A(4) = 9
  204.             A(5) = 3
  205.             A(6) = 4
  206.             A(7) = 1
  207.             A(8) = 6
  208.             A(9) = 8
  209.             A(10) = 9
  210.             A(11) = 8
  211.             A(12) = 6
  212.             A(13) = 2
  213.             'A(14) = 1
  214.             A(15) = 7
  215.             A(16) = 5
  216.             A(17) = 3
  217.             A(18) = 4
  218.             A(19) = 3
  219.             A(20) = 4
  220.             A(21) = 1
  221.             A(22) = 8
  222.             A(23) = 6
  223.             A(24) = 5
  224.             A(25) = 9
  225.             A(26) = 2
  226.             A(27) = 7
  227.             A(28) = 5
  228.             A(29) = 9
  229.             A(30) = 4
  230.             A(31) = 1
  231.             A(32) = 8
  232.             A(33) = 6
  233.             A(34) = 2
  234.             A(35) = 7
  235.             A(36) = 3
  236.             A(37) = 2
  237.             A(38) = 6
  238.             A(39) = 3
  239.             A(40) = 7
  240.             A(41) = 5
  241.             A(42) = 9
  242.             A(43) = 8
  243.             A(44) = 4
  244.             A(45) = 1
  245.             A(46) = 1
  246.             A(47) = 7
  247.             A(48) = 8
  248.             A(49) = 4
  249.             A(50) = 2
  250.             A(51) = 3
  251.             A(52) = 6
  252.             A(53) = 9
  253.             A(54) = 5
  254.             A(55) = 6
  255.             A(56) = 3
  256.             A(57) = 9
  257.             A(58) = 5
  258.             A(59) = 7
  259.             A(60) = 1
  260.             A(61) = 4
  261.             A(62) = 8
  262.             A(63) = 2
  263.             A(64) = 8
  264.             A(65) = 1
  265.             A(66) = 7
  266.             A(67) = 6
  267.             A(68) = 4
  268.             A(69) = 2
  269.             A(70) = 3
  270.             A(71) = 5
  271.             A(72) = 9
  272.             A(73) = 4
  273.             A(74) = 5
  274.             A(75) = 2
  275.             A(76) = 3
  276.             A(77) = 9
  277.             A(78) = 8
  278.             A(79) = 7
  279.             A(80) = 1
  280.             A(81) = 6
  281.          End If
  282.       Upperline
  283.    Wend
  284.    Cls
  285.    Lcd "Milej gry ;-)"
  286. End Sub
  287.  
  288. Sub Wypisz
  289.    Local Saving As Integer
  290.    Saving = Pozycja
  291.    S = ""
  292.    For I = 0 To 8 Step 1
  293.       For J = 1 To 9 Step 1
  294.          Pozycja = Saving
  295.          K = I * 9
  296.          K = K + J
  297.          If K <> Pozycja Then
  298.             S = S + " "
  299.          Else
  300.             S = S + ">"
  301.          End If
  302.          If A(k) = 0 Then
  303.             S = S + "_"
  304.          Else
  305.             S = S + Str(a(k))
  306.          End If
  307.       Next J
  308.       Print S
  309.       S = ""
  310.    Next I
  311.    Pozycja = Saving
  312.    Print ""
  313.    Print "------------"
  314.    Print ""
  315. End Sub
  316.  
  317. 'Sub Przesun(byref Tmp As Integer , Byval Tmp2 As Integer)
  318. '   Local Position As Integer
  319. '   Position = Tmp
  320. '   If Tmp2 = 1 Then
  321. '      Position = Position - 9
  322. '      If Position > 0 Then Tmp = Position
  323. '   Else
  324. '      Position = Position + 9
  325. '      If Position < 81 Then Tmp = Position
  326. '   End If
  327. 'End Sub
  328.  
  329. Sub Ustaw(byval Tmp As Integer , Byval Tmp2 As Byte)
  330.    If Tmp2 >= 1 And Tmp2 <= 9 Then
  331.       A(tmp) = Tmp2
  332.    Elseif Tmp2 = 49 Then
  333.       A(tmp) = 0
  334.    End If
  335. End Sub
  336.  
  337. Sub Sprawdz
  338.    Local Test As Byte
  339.    Local Tmp As Integer
  340.  
  341.    Test = 1
  342.  
  343.    For I = 0 To 8
  344.       For J = 1 To 9
  345.          Okej(j) = 0
  346.       Next J
  347.       For J = 1 To 9
  348.          For K = 1 To 81
  349.             Support(k) = A(k)
  350.          Next K
  351.          Tmp = I * 9
  352.          Tmp = Tmp + J
  353.          Tmp = Support(tmp)
  354.          If Tmp <> 0 Then
  355.             Okej(tmp) = 1
  356.          End If
  357.       Next J
  358.       For J = 1 To 9
  359.          If Okej(j) <> 1 Then
  360.             Test = 0
  361.          End If
  362.       Next J
  363.       'Print Test
  364.    Next I
  365.  
  366.    For I = 1 To 9
  367.       For J = 1 To 9
  368.          Okej(j) = 0
  369.       Next J
  370.       For J = 0 To 8
  371.          For K = 1 To 81
  372.             Support(k) = A(k)
  373.          Next K
  374.          Tmp = J * 9
  375.          Tmp = Tmp + I
  376.          Tmp = Support(tmp)
  377.          If Tmp <> 0 Then
  378.             Okej(tmp) = 1
  379.          End If
  380.       Next J
  381.       For J = 1 To 9
  382.          If Okej(j) <> 1 Then
  383.             Test = 0
  384.          End If
  385.       Next J
  386.       'Print Test
  387.    Next I
  388.  
  389.    If Test = 1 Then
  390.       Print ""
  391.       Print "GRATULACJE!"
  392.       Print "Udalo Ci sie rozwiazac SUDOKU!"
  393.       Print ""
  394.    End If
  395. End Sub
  396.  
  397. Function Move(byval Tmp As Integer , Byval Typruchu As Integer) As Integer
  398.    Local Pozycjafinal As Integer
  399.    Pozycjafinal = Tmp
  400.    If Typruchu = 1 Then
  401.       Tmp = Tmp - 9
  402.       If Tmp > 0 Then Pozycjafinal = Tmp
  403.    Elseif Typruchu = 2 Then
  404.       Tmp = Tmp + 9
  405.       If Tmp < 82 Then Pozycjafinal = Tmp
  406.    Elseif Typruchu = 3 Then
  407.       Tmp = Tmp - 1
  408.       If Tmp > 0 Then Pozycjafinal = Tmp
  409.    Elseif Typruchu = 4 Then
  410.       Tmp = Tmp + 1
  411.       If Tmp < 82 Then Pozycjafinal = Tmp
  412.    End If
  413.    Move = Pozycjafinal
  414. End Function

Replies to Untitled rss

Title Name Language When
Re: Untitled Buff Hedgehog bascomavr 8 Years ago.