Author Topic: Pacman in Axe  (Read 3739 times)

0 Members and 1 Guest are viewing this topic.

Offline Ranman

  • LV10 31337 u53r (Next: 2000)
  • **********
  • Posts: 1354
  • Rating: +83/-0
    • View Profile
Re: Pacman in Axe
« Reply #15 on: October 24, 2010, 08:27:45 am »
Nice job Michael!
Ranman
Bringing Randy Glover's Jumpman to the TI-89 calculator. Download available at Ticalc.

Offline Michael.3545

  • LV3 Member (Next: 100)
  • ***
  • Posts: 69
  • Rating: +13/-7
    • View Profile
Re: Pacman in Axe
« Reply #16 on: October 25, 2010, 08:48:36 am »
Last night I finished the high score system.  It is pretty nice, and supports 16 character strings of uppercase, lowercase, and spaces.  It has a backspace key, and stores the top three scores.  I am very happy about this, because it means I won't need to come back and change anything.  Here is a screenshot of the default high scores, which I think will be appreciated.  I don't plan on changing these.


Online DJ Omnimaga

  • Former TI programmer
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55896
  • Rating: +3152/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • DJ Omnimaga Music
Re: Pacman in Axe
« Reply #17 on: October 25, 2010, 04:01:11 pm »
Lol I saw the highscore screen on IRC last night and laughed at my 666 score :P

Nice that you got them working :)

Offline ztrumpet

  • The Rarely Active One
  • CoT Emeritus
  • LV13 Extreme Addict (Next: 9001)
  • *
  • Posts: 5712
  • Rating: +364/-4
  • If you see this, send me a PM. Just for fun.
    • View Profile
Re: Pacman in Axe
« Reply #18 on: October 25, 2010, 05:36:13 pm »
That looks great!  Nice job!
I really like the look of the gameplay. ;D
What method are you using for name input? :)

Offline Michael.3545

  • LV3 Member (Next: 100)
  • ***
  • Posts: 69
  • Rating: +13/-7
    • View Profile
Re: Pacman in Axe
« Reply #19 on: October 25, 2010, 11:28:39 pm »
Ztrumpet, I am using a method I created myself just for this purpose.

This is designed to be called as sub(GHS).  PrgmAAAINPUT is supposed to be the last line of a file.  If you have any questions, ask.
Code: [Select]
:.GETHISCR
:Lbl GHS
:
:Fix 1
:Fix 4
:
:0→{GDB0}
:0→E→L→K→I+1→U
:
:sub(DSP)
:
:Repeat E
: getKey→K
: If K=9 and (L>0)
:  1→E
: End
: If K=4
:  1→U
: ElseIf K=1
:  0→U
: ElseIf K=2
:  If L>0
:   L-1→L
:   0→{GDB0+L}
:   sub(DSP)
:  End
: End
: If K
:  For(I,0,26)
:   If {GDB00+I}=K
:    sub(SC1,I)
:   End
:  End
: End
:
:
: While getKey(0)
: End
:End
:Fix 0
:Fix 5
:ClrHome
:Return
:
:Lbl SC1
:If r1=0
: sub(SC2,32)
: Return
:End
:If U
: sub(SC2,r1+64)
:Else
: sub(SC2,r1+96)
:End
:Return
:
:Lbl SC2
:If L<16
: r1→{GDB0+L}
: 0→{GDB0+L+1}
: L+1→L
: sub(DSP)
:End
:Return
:
:Lbl DSP
:ClrHome
:Text(16,0,"HIGH SCORE!")
:Output(0,2,"Type your name:")
:If {GDB0}
: Output(0,3,GDB0
:End
:If L<16
: Output(L,3,95►Frac)
:End
IMPORTANT:  before starting this sub, GDB0 and GDB00 must be initialized exactly like so:
Code: [Select]
:det(17)→GDB0
:DeltaList(33,47,39,31,46,38,30,22,14,45,37,29,21,13,44,36,28,20,12,43,35,27,19,11,42,34,26)→GDB00


Omnimagicians, I need help!
I just added some code to try to make the ghosts turn at intersections, and I got this:


I have looked over it several times and can't figure out what is going on.  The changes I just made are between the
:   .G-BRAIN
:..............
and the
:..............

Please ask me any questions you have.  I will be offline after this post, but should be back on tomorrow morning.  Sorry for the delay, and sorry Opera users for any massive scrolling I have caused you.

Here is my source:
Code: [Select]
:.AAPACMAN A fun arcade game
:DiagnosticOff
:
:
:.appvar
:Lbl AV
:"vPac-Man"→Str1
:
:.only if exist
:.UnarchiveStr1
:
:.exists? if notmake
:!If GetCalc(Str1)→O
:
: .create, ret  if < RAM
: Return!If GetCalc(Str1,57)→O
: 666→{O}r
: 256→{O+2}r
: 13→{O+4}r
: "DJ"→Str01
: "Byte"→Str02
: "Clyde"→Str03
: For(I,0,16)
:  {Str01+I}→{O+I+6}
: End
: For(I,0,16)
:  {Str02+I}→{O+I+23}
: End
: For(I,0,16)
:  {Str03+I}→{O+I+40}
: End
:End
:
:.wrong size
:ReturnIf {O-2}r≠57
:
:
:.SPRITES:
:.CLOSED
:[387CFEFEFE7C3800]→Pic0
:.UP
:[82C6EEFEFE7C3800]→Pic1
:.RIGHT
:[3E7CF8F0F87C3E00]→Pic2
:.LEFT
:[F87C3E1E3E7CF800]→Pic3
:.DOWN
:[387CFEFEEEC68200]→Pic4
:.DOT
:[0000102810000000]→Pic5
:.LIFE
:[70E0C0E070000000]→Pic6
:.GHOST
:[387CD6FEFEFEAA00]→Pic7
:
:
:.no. of maps:
:3→θ
:.MAP DATA
:[FFFC006B6B1B120246C6B6B001FFF811B1B7171001F00FFFFC006F7B1112224446F7B001FFF8631767B70F0F0F0FFFFC446AAB4452FA5116AAB111FFF83491B4971001100F]→GDB1
:
:
:.hi scr stuffs
:det(17)→GDB0
:DeltaList(33,47,39,31,46,38,30,22,14,45,37,29,21,13,44,36,28,20,12,43,35,27,19,11,42,34,26)→GDB00
:
:
:.TEXT DRAWN TO BUFFER
:Fix 5
:
:
:.MAIN MENU
:Lbl MM
:ClrDraw
:Fix 1
:Text(27,0,"PAC-MAN")
:Fix 0
:ref(0,8,96,1)
:Text(1,10,"By Michael Ripley")
:
:21→A
:Text(4,A,"2ND - Start")
:Text(4,A+7,"ALPHA - High Scores"
:Text(4,A+14,"MODE - Quit")
:L1→P
:
:DispGraph
:
:While getKey(0)
:Pause 5
:End
:Repeat getKey(54)
: If getKey(15) or getKey(55)
:  Goto EX
: Else If getKey(48)
:  Goto HS
: End
:End
:Goto SG
:
:.HIGH SCORE
:Lbl HS
:ClrDraw
:Fix 1
:Text(16,0,"High Scores")
:Fix 0
:For(I,0,2)
: I*7+10→P
: Text(3,P,I+49►Frac,"."
: Text(15,P,{I*2+O}r►Dec)
: Text(40,P,I*17+O+6)
:End
:DispGraph
:While getKey(0)
:Pause 50
:End
:Repeat getKey(54) or getKey(15) or getKey(55) or getKey(48)
:End
:Goto MM
:
:
:
:.START GAME
:Lbl SG
:
:.init vars
:0→M→S+3→L
:
:
:.NEXT MAP
:Lbl NM
:
:
:.Load map data
:For(I,0,116)
: {M*23+(I/8)+GDB1}e(I^8)*2→iPart(L1*2+I+20}
:End
:
:
:.Draw map
:0→N
:ClrDrawr
:For(B,0,8)
: For(A,0,12)
:  iPart(B*13+A+(L1*2)+20}→P
:  If P=2
:   ref(A*7,B*7,7,7)r
:  End
:  If P=0
:   N+1→N
:   Pt-On(A*7,B*7,Pic5)r
:  End
: End
:End
:
:
:.RESET
:Lbl RS
:
:
:.G-pos
:0→{L1}
:
:.G-dir
:conj(M*23+GDB1+20,L1+1,3)
:
:.G-pos
:For(I,0,5)
: iPart(M*23+GDB1+16*2+I}*7→{L1+I+4}
:End
:
:.reset vars
:0→E→F+1→C→Q→Z
:
:.P-pos
:M*23+GDB1+15*2→P
:iPart(P}*7→X
:iPart(P+1}*7→Y
:
:.P-dir
:M*23+GDB1+19*2→P
:iPart(P}→G
:iPart(P+1}→H
:If G=15
: ‾1→G
:ElseIf H=15
: ‾1→H
:End
:If H=‾1
: 1→D
:ElseIf G=1
: 2→D
:ElseIf G=‾1
: 3→D
:Else
: 4→D
:End
:
:sub(RD,1)
:sub(DW)
:Pause 1000
:
:.MAIN LOOP
:Repeat getKey(55) or F
:
: .KEY PRESSES
: If getKey(1)
:  !If pxl-Test(X,Y+7)r+pxl-Test(X+6,Y+7)r
:   0→G+1→H+3→D
:  End
: End
: If getKey(2)
:  !If pxl-Test(X-1,Y)r+pxl-Test(X-1,Y+6)r
:   ‾1→G+1→H+3→D
:  End
: End
: If getKey(3)
:  !If pxl-Test(X+7,Y)r+pxl-Test(X+7,Y+6)r
:   0→H+1→G+1→D
:  End
: End
: If getKey(4)
:  !If pxl-Test(X,Y-1)r+pxl-Test(X+6,Y-1)r
:   ‾1→H+1→G+1→D
:  End
: End
:
: .MOVE
: DS<(Z,2)
: X+G→A
: Y+H→B
: !If pxl-Test(A,B)r+pxl-Test(A+6,B)r+pxl-Test(A,B+6)r+pxl-Test(A+6,B+6)r
:   A→X
:   B→Y
:   If X=91
:    0→X
:   ElseIf X=‾1
:    90→X
:   End
:   If X>84
:    X-91→E
:   Else
:    0→E
:   End
:  End
:
:  .MOVE GHOSTS
:  For(I,0,2)
:   .gXp, gYp
:   I*2+L1+4→A+1→B
:   L1+1*2+(I*2)→U+1→V
:
:   .get J,K
:   sub(GGD)
:
:
:   .G-BRAIN
:..............
:
:   .On tile
:   !If {A}^7 or ({B}^7)
:    L4+2→P
:    0→{L4}r
:    0→{P}
:    If J
:     J*‾1→{L4}
:    Else
:     K*‾1→{L4+1}
:    End
:
:.stop indent
:
:.1  UP
:!If pxl-Test({A},{B}-1)r
:If {L4+1}≠‾1
: 0→{{P}*2+L4+3}
: ‾1→{{P}*2+L4+4}
: {P}+1→{P}
:End
:End
:
:.2  RIGHT
:!If pxl-Test({A}+7,{B})r
:If {L4}≠1
: 1→{{P}*2+L4+3}
: 0→{{P}*2+L4+4)
: {P}+1→{P}
:End
:End
:
:.3  DOWN
:!If pxl-Test({A},{B}+7)r
:If {L4+1}≠1
: 0→{{P}*2+L4+3}
: 1→{{P}*2+L4+4}
: {P}+1→{P}
:End
:End
:
:.4  LEFT
:!If pxl-Test({A}-1,{B})r
:If {L4}≠‾1
: ‾1→{{P}*2+L4+3}
: 0→{{P}*2+L4+4}
: {P}+1→{P}
:End
:End
:
:.resume indent
:
:    {rand^{L4+2}*2+L4+3}→P
:    {P}→iPart(U}
:    {P+1}→iPart(V}
:    sub(GGD)
:   End
:
:..............
:
:   {A}+J→{A}
:   {B}+K→{B}
:
:   .coll test
:   If N
:    If {A}-5≤X and ({A}+5≥X)
:     If {B}-5≤Y and ({B}+5≥Y)
:      1→F
:      L-1→L
:     End
:    End
:   End
:  End
: End
:
:
: .WOKKA WOKKA
: DS<(Q,10)
:  C=0→C
: End
:
: sub(RD,0)
: sub(DW)
:End
:
:.Game Over
:If F=3
: ClrDraw
: Fix 1
: Text(0,0,"Game Over")
: Fix 0
: Text(0,10,"Score: ",S►Dec)
: DispGraph
: While getKey(0)
: .do-nothing
: Pause 50
: End
: Repeat getKey(54)
: End
:
: .HI SCORE!
: If S>{O+4}r
:  .in ext prog
:  sub(GHS)
:  S→{O+4}r
:  For(I,0,17)
:   {GDB0+I}→{O+I+40}
:  End
:  If {O+4}r>{O+2}r
:   expr(O+4,O+2,2)
:   expr(O+40,O+23,17)
:   If {O+2}r>{O}r
:    expr(O+2,O,2)
:    expr(O+23,O+6,17)
:   End
:  End
: End
:End
:
:.beat level
:If F=2
: M+1→M
: .map loopback
: If M=θ
:  0→M
: End
: Goto NM
:End
:
:.lost life
:If F=1
: Fix 3
: Text(10,0,"You have died")
: Fix 2
: DispGraph
: Repeat getKey(54)
: End
: Goto RS
:End
:
:.pressed MODE
:Goto MM
:
:
:.EXIT
:Lbl EX
:Fix 4
:ClrHome
:While getKey(0)
:Pause 5
:End
:Return
:
:
:.get G-dir
:Lbl GGD
:If iPart(U}=15
: ‾1→J
:ElseIf iPart(V}=15
: ‾1→K
:End
:Return
:
:
:.remove dot
:Lbl RD
:!If X^7 or (Y^7)
: X/7→A
: Y/7→B
: B*13+A+(L1*2)+20→P
: !If iPart(P}
:  N-1→N
:  !If N
:   2→F
:  End
:  !If r1
:   S+1→S
:  End
:  1→iPart(P}
:  Pxl-Off(X+3,Y+2)r
:  Pxl-Off(X+2,Y+3)r
:  Pxl-Off(X+4,Y+3)r
:  Pxl-Off(X+3,Y+4)r
: End
:End
:Return
:
:
:.DRAW
:Lbl DW
:ClrDraw
:RecallPic
:
:
:.ghost
:For(I,0,2)
: I*2+L1+4→P
: Pt-On({P},{P+1},Pic7)
:End
:
:Pt-On(X,Y,C*D*8+Pic0)
:If E
: Pt-On(E,Y,C*D*8+Pic0)
:End
:If L>>0
: For(P,0,L-1)
:  Pt-On(92,P*6,Pic6)
: End
:Else
: If L=‾1
:  3→F
: End
:End
:ref(91,28,5,7)
:rref(91,28,5,7)
:DispGraph
:Return
:
:.HISCORE STUFF
:prgmAAAINPUT

EDIT:
Changed the word "Omnimaga" to the more grammatically correct "Omnimagicians".
« Last Edit: October 26, 2010, 08:53:35 am by Michael.3545 »

Online DJ Omnimaga

  • Former TI programmer
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55896
  • Rating: +3152/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • DJ Omnimaga Music
Re: Pacman in Axe
« Reply #20 on: October 26, 2010, 01:42:37 pm »
I think it might be best to ask for help in a new topic in the Axe sub-forum, as typically, questions asked and requests made in project topics tend to be ignored, especially that some member never go out of the Axe sub-forum. Also lol at the edit :P