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

Replies to Re: Untitled rss

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