Omnimaga

Calculator Community => TI Calculators => Axe => Topic started by: Yeong on March 31, 2011, 07:23:21 am

Title: Platformer Help!
Post by: Yeong on March 31, 2011, 07:23:21 am
So, I was trying to make a platformer shoot'em up game, but I'm stuck here.
1. This guys should aim up when I press up, but it never happens.
2. How do I make him shoot?(Not 1 bullet at a time)
Here's the code and program:
prgmMSLUG is the executable program.

Code: (Source1) [Select]
:.SPRITELIB
:
:.PROTAGONIST
:.FRONTBUFFER
:.RIGHT1
:[00000F1F1F13110E→Pic1
:[0000804000003F3F1F1F1F1117171B1FC0C0300000000080
:.RIGHT2
:[00000F1F1F13110E0000804000003F3F1F1F1F11254CD271C0C0300000E0C080
:.LEFT1
:[000001020000FCFC0000F0F8F8C8887003030C0000000001F8F8F888E8E8D8F8
:.LEFT2
:[000001020000FCFC0000F0F8F8C8887003030C0000070301F8F8F888A4324B82
:.JUMPRIGHT
:[00000F1F1F13110E0000804000003F3F1F1F1F10E6C9F080C0C030C020987020
:.JUMPLEFT
:[000001020000FCFC0000F0F8F8C8887003030C0304190E04F8F8F80867930F01
:.LOOKUPRIGHT1
:[30303F3F33331D0E00008040000000001F1F1F1117171B1F0000000000000080
:.LOOKUPRIGHT2
:[30303F3F33331D0E00008040000000001F1F1F11254CD271C0C0300000E0C080
:.LOOKUPLEFT1
:[00000102000000000C0CFCFCCCCCB8700000000000000001F8F8F888E8E8D8F8
:.LOOKUPLEFT2
:[00000102000000000C0CFCFCCCCCB87003030C0000070301F8F8F888A4324B82
:
:.BACKBUFFER
:.RIGHT1
:[00000F1F001F1F0E→Pic2
:[0000804000003F3F10101F1F1D1D1B1F3030000000000080
:.RIGHT2
:[00000F1F001F1F0E0000804000003F3F10101F1F3F7FF3713030300000E0C080
:.LEFT1
:[000001020000FCFC0000F0F800F8F8700C0C0C00000000010808F8F8B8B8D8F8
:.LEFT2
:[000001020000FCFC0000F0F800F8F8700C0C0C00000703010808F8F8FCFECF8E
:.RIGHTJUMP
:[00000F1F001F1F0E0000804000003F3F10101F1FFFF9F080303030C0E0F87020
:.LEFTJUMP
:[000001020000FCFC0000F0F800F8F8700C0C0C03071F0E040808F8F8FF9F0F01
:.LOOKUPRIGHT1
:[30303F3F3E3F1302000080400000000011111F1F1D101B1F0000000000000080
:.LOOKUPRIGHT2
:[30303F3F3E3F1302000080400000000010101F1F3F7FF3713030300000E0C080
:.LOOKUPLEFT1
:[00000102000000000C0CFCFC7CFCC84000000000000000018888F8F8B8B8D8F8
:.LOOKUPLEFT2
:[00000102000000000C0CFCFC7CFCC8400C0C0C00000703010808F8F8FCFECF8E
:
:.PROJECTILE
:[0000181818180000→Pic3


Code: (Source2) [Select]
  :.MSLUG
:prgmθA
:
:0→A→X→B→C
:48→Y
:
:Repeat getKey(15)
:
:ClrDraw
:ClrDrawr
:
:sub(DS,X,Y
:
:.WALKING
:If getKey(3)
:X+1→X
:If B
:4→A
:End
:!If B
:!If A
:1→A
:Else
:0→A
:End
:End
:If getKey(4)
:If A≠6
:6→A
:Else
:7→A
:End
:End
:End
:
:If getKey(2)
:X-1→X
:If B
:5→A
:End
:!If B
:If A≠2
:2→A
:Else
:3→A
:End
:End
:If getKey(4)
:If A≠8
:8→A
:Else
:9→A
:End
:End
:End
:
:.JUMP
:If getKey(54) and (B=0
:1→B
:If A≤1
:4→A
:Else
:5→A
:End
:End
:
:If B≠0 and (B≤6
:Y-4→Y
:B+1→B
:End
:If B=7
:Y+1→Y
:C+1→C
:End
:If C=24
:0→B→C
:End
:
:
:DispGraphrr
:End
:
:Lbl DS
:Pt-On(r1,r2,32*A+Pic1
:Pt-On(r1,r2,32*A+Pic2)r
:Pt-On(r1+8,r2,32*A+Pic1+8
:Pt-On(r1+8,r2,32*A+Pic2+8)r
:Pt-On(r1,r2+8,32*A+Pic1+16
:Pt-On(r1,r2+8,32*A+Pic2+16)r
:Pt-On(r1+8,r2+8,32*A+Pic1+24
:Pt-On(r1+8,r2+8,32*A+Pic2+24)r
:Return
Title: Re: Platformer Help!
Post by: jnesselr on March 31, 2011, 07:29:13 am
I believe the problem is that you have "If getkey(4)" twice in there.  What I do for getkey, is store it into Theta or K, after storing 0 into (Let's just Use) K, outside the loop.
So:
Code: [Select]
If K=0 : GetKey->K : End
Then, whenever you check keys, do if K=4 or whatever.  When you are done with the key to check, and the routine needs to flag the key as taken care of, you store 0 into K.
Title: Re: Platformer Help!
Post by: Yeong on March 31, 2011, 07:31:53 am
So...

Code: [Select]
If K=0 : GetKey->K : End
if K=3 :MOVELEFTROUTINE
if K=2 :MOVERIGHTROUTINE
if K=48: JUMPROUTINE
Like this?
Title: Re: Platformer Help!
Post by: jnesselr on March 31, 2011, 07:43:43 am
That's what I would do.  Because you have to "recognize" the key by setting K to 0 in order to do it again.  This also helps prevent the same key being pressed over and over, and the game lagging behind, while it's just pressing that key too many times or whatever.
Title: Re: Platformer Help!
Post by: Yeong on March 31, 2011, 07:56:14 am
but it decrease the speed dramatically D:
Title: Re: Platformer Help!
Post by: Compynerd255 on March 31, 2011, 12:33:34 pm
Use a modified version of this:

http://ourl.ca/9659

Don't subtract the delay variable when checking the address, and that should result in instantaneous key replies, but only read the key once. The problem with using getKey?K is that you can only read one key at a time. This solution will also add delay so that the character doesn't have automatic machine gun fire.

Also, to shoot more than one bullet at a time, keep your bullets in a table with five variables per bullet:
Then, when you shoot, store the bullet into a dead bullet slot on the table. Then, every frame, update the bullets and draw them.