Guest User

DCPU-16 Janken

a guest
May 9th, 2012
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;Janken
  2.  
  3. set c,0xF000 ;Font/BG colour
  4.  
  5. :firstlinetext
  6.          set j,text1
  7.          set i,0
  8. :firstline
  9.          add [j],c
  10.          set [0x8000+i],[j]
  11.          add i,1
  12.          add j,1
  13.          ife [j],0
  14.          set pc,waitforkey
  15.          set pc,firstline
  16.  
  17. :waitforkey
  18.          ife [0x9000],0
  19.          set pc,waitforkey
  20.          ife [0x9000],0x0072
  21.          set pc,rocktext
  22.          ife [0x9000],0x0070
  23.          set pc,papertext
  24.          ife [0x9000],0x0073
  25.          set pc,scissortext
  26.          set [0x9000],0
  27.          set pc,waitforkey
  28.  
  29. :rocktext
  30.          set x,text2
  31.          set [result],1
  32.          set i,0
  33. :rockline
  34.          bor [x],c
  35.          set [0x8040+i],[x]
  36.          add i,1
  37.          add x,1
  38.          ife [x],0
  39.          set pc,anykeytext
  40.          set pc,rockline
  41.  
  42. :papertext
  43.          set y,text3
  44.          set [result],2
  45.          set i,0
  46. :paperline
  47.          bor [y],c
  48.          set [0x8040+i],[y]
  49.          add i,1
  50.          add y,1
  51.          ife [y],0
  52.          set pc,anykeytext
  53.          set pc,paperline
  54.  
  55. :scissortext
  56.          set z,text4
  57.          set [result],3
  58.          set i,0
  59. :scissorline
  60.          bor [z],c
  61.          set [0x8040+i],[z]
  62.          add i,1
  63.          add z,1
  64.          ife [z],0
  65.          set pc,anykeytext
  66.          set pc,scissorline
  67.  
  68. :anykeytext
  69.          set z,text10
  70.          set i,0
  71. :anykeylineline
  72.          bor [z],c
  73.          set [0x8060+i],[z]
  74.          add i,1
  75.          add z,1
  76.          ife [z],0
  77.          set pc,randnumber
  78.          set pc,anykeylineline
  79.  
  80. :randnumber
  81. ;Random number generator lifted mostly from:
  82. ;http://www.dcpu16apps.com/Home/App/27
  83.          set [0x9000],0
  84.          set b, [randseed]
  85.          set a, [randseed]
  86.          add a,1
  87.          mul [randseed], 0x660D
  88.          set c,o
  89.          mul a, 0x660D
  90.          add a,c
  91.          mul b, 0x0019
  92.          add a,b
  93.          add [randseed],1
  94.          add a,o
  95.          set [randseed],a
  96.          ife [0x9000],0
  97.          set pc,randnumber
  98.          ifg a,44000
  99.          set pc,rockmetext
  100.          ifg a,22000
  101.          set pc,papermetext
  102.          ifg a,0
  103.          set pc,scissormetext
  104.  
  105. :rockmetext
  106.          set c,0xF000
  107.          set x,text5
  108.          add [result],10
  109.          set i,0
  110. :rockmeline
  111.          bor [x],c
  112.          set [0x80a0+i],[x]
  113.          add i,1
  114.          add x,1
  115.          ife [x],0
  116.          set pc,checkifwon
  117.          set pc,rockmeline
  118.  
  119. :papermetext
  120.          set c,0xF000
  121.          set y,text6
  122.          add [result],20
  123.          set i,0
  124. :papermeline
  125.          bor [y],c
  126.          set [0x80a0+i],[y]
  127.          add i,1
  128.          add y,1
  129.          ife [y],0
  130.          set pc,checkifwon
  131.          set pc,papermeline
  132.  
  133. :scissormetext
  134.          set c,0xF000
  135.          set z,text7
  136.          add [result],30
  137.          set i,0
  138. :scissormeline
  139.          bor [z],c
  140.          set [0x80a0+i],[z]
  141.          add i,1
  142.          add z,1
  143.          ife [z],0
  144.          set pc,checkifwon
  145.          set pc,scissormeline
  146.  
  147. :checkifwon
  148.          ife [result],11
  149.      set pc,drawtext
  150.      ife [result],12
  151.      set pc,wintext
  152.      ife [result],13
  153.      set pc,losetext
  154.      ife [result],21
  155.      set pc,losetext
  156.      ife [result],22
  157.      set pc,drawtext
  158.      ife [result],23
  159.      set pc,wintext
  160.      ife [result],31
  161.      set pc,wintext
  162.      ife [result],32
  163.      set pc,losetext
  164.      ife [result],33
  165.      set pc,drawtext
  166.  
  167. :wintext
  168.          set x,text8
  169.          set c,0x2000
  170.          set i,0
  171. :winline
  172.          bor [x],c
  173.          set [0x80e0+i],[x]
  174.          add i,1
  175.          add x,1
  176.          ife [x],0
  177.          set pc,done
  178.          set pc,winline
  179.  
  180. :losetext
  181.          set y,text9
  182.          set c,0x5000
  183.          set i,0
  184. :loseline
  185.          bor [y],c
  186.          set [0x80e0+i],[y]
  187.          add i,1
  188.          add y,1
  189.          ife [y],0
  190.          set pc,done
  191.          set pc,loseline
  192.  
  193. :drawtext
  194.          set z,text11
  195.          set c,0xF000
  196.          set i,0
  197. :drawline
  198.          bor [z],c
  199.          set [0x80e0+i],[z]
  200.          add i,1
  201.          add z,1
  202.          ife [z],0
  203.          set pc,done
  204.          set pc,drawline
  205.  
  206. :done
  207.     sub pc, 1
  208.  
  209. ;Text goes here...
  210. :text1 dat "Rock(r), paper(p), scissors(s)?",0
  211.  
  212.  
  213. :text2 dat "You chose: ROCK",0
  214.  
  215.  
  216. :text3 dat "You chose: PAPER",0
  217.  
  218.  
  219. :text4 dat "You chose: SCISSORS",0
  220.  
  221.  
  222. :text5 dat "I chose: ROCK",0
  223.  
  224.  
  225. :text6 dat "I chose: PAPER",0
  226.  
  227.  
  228. :text7 dat "I chose: SCISSORS",0
  229.  
  230.  
  231. :text8 dat "You WIN!! :)",0
  232.  
  233.  
  234. :text9 dat "You lose, better luck next time.",0
  235.  
  236.  
  237. :text10 dat "Press any key to continue...",0
  238.  
  239.  
  240. :text11 dat "A draw.",0
  241.  
  242.  
  243. :randseed dat "Test"
  244.  
  245.  
  246. :result dat 0
Advertisement
Add Comment
Please, Sign In to add comment