so i'm making a game and (at least right now) it's called enter the ring. it's a sort of fighting game (also it's my first game with a legitimate programming software so don't expect the highest quality) where you just basically fight off enemies. there's not an end per-se but if you choose to quit then a goofy death scene would play out or something. there's also the possibility of game over. you just kinda go one after another. kinda like the minion quest fights in the superstar saga remake but more 1-on-1. what i wanna do is have a battle system using button inputs to attack (a is attack 1, y is attack 2, x is special). it's not quite so simple as that though. i'd like to have sort of random events such as if a weaker enemy is low on health it may call in a stronger one to take it's place or if the player is low on health the audience (displayed on the bottom screen) might throw healing items. maybe if i really feel like it, a boss fight might begin. i don't know. i might put in a separate mode called master quest where you just play as link and all the enemies are zelda enemies since the main character and enemies are already pretty similar anyway. i really hope this comes out good because i don't wanna make a bad game. so that's pretty much how it's shakin out right now. i'll most likely be posting development updates here so if you're interested i'd definitely tell ya to stay tuned. i'll also probably be asking for programming help here. that's all i got for now so i'm gonna bounce on outta here.
Enter the Ring
Root / Talk About Programs / [.]
SoupCreated:
i need help making a pause function and a menu to accompany that function (though i'd probably be able to make the pause MENU on my own). and on a side note, i'll probably need assistance in having the game check for button inputs and running every thing that might occur during battle. kinda seems like a tall order on both ends but there's probably someone here that can aid me. there is the alternative where i just study all this on my own but i never really was all that keen on long reading or doing something i'm passionate about very slowly so that's why i'm here asking all this.
I tried my best to come up with a simple code template for you. I hope this is what you were looking for! No credit needed.
ACLS 'Clear the screen XSCREEN 3 'Hide the keyboard. Put 2 instead of 3 if you're going to use 3D OPTION STRICT 'Always call your variables before using them, so you don't get in trouble later 'Simple title screen. Don't draw things inside the loop here, otherwise it will draw on every frame (unless that's what you want) ?"Press A to start!" REPEAT VSYNC UNTIL BUTTON(2) AND #A CLS 'Clear the screen again. Using ACLS would reset things like XSCREEN, so be careful. 'Before the main loop you can initialize variables and do other things VAR B,B2 VAR PX VAR COUNTER=0 SPSET 0,500 SPHOME 0,8,8 SPOFS 0,200,120 'Center of the top screen. Top screen is 400x240, bottom screen is 320x240 @LOOP VSYNC B=BUTTON() B2=BUTTON(2) 'This one only returns presses done on the first frame, so no repeats CALCULATE DRAW '(You can add as many functions as you want.) IF B2 AND #X THEN PAUSE GOTO @LOOP DEF CALCULATE 'Here you calculate everything, like the characters' position INC COUNTER PX=200+SIN(RAD(COUNTER))*100 END DEF DRAW 'Here you draw everything. SmileBASIC has text, graphics (e.g. GLINE), sprites (e.g. SPSET) and backgrounds (e.g. BGPUT) SPOFS 0,PX,120 DISPLAY 1 'Draw things on the bottom screen CLS ?PX DISPLAY 0 'Go back to the top screen END DEF PAUSE CLS ?"Paused" ?"Press X to continue" REPEAT VSYNC UNTIL BUTTON(2) AND #X END
I don't know exactly what you think is going to be "stopping everything". I'm guessing you were thinking of using WAIT for animations? If that's the case, we can do better than that.
It's simple enough: in the DRAW function you use SPCHR to change the sprite's appearance.
Use B3=BUTTON(3) to know when a button is released.
So for example, for attack 1, you can do this:
ACLS XSCREEN 3 OPTION STRICT VAR B,B2,B3 VAR PX,PY,EX,EY VAR COUNTER=0 SPSET 0,u,v,w,h 'Only you know what values go here SPHOME 0,w/2,h/2 'These coordinates must be at the center of your sprite PX=100:PY=120 'Sprite's position SPOFS 0,PX,PY SPSET 1,u_,v_,w_,h_ 'Enemy sprite SPHOME 1,w_/2,h_/2 EX=300:EY=120 SPOFS 1,EX,EY @LOOP VSYNC B=BUTTON() B3=BUTTON(3) 'This one returns buttons that are released CALCULATE DRAW GOTO @LOOP DEF CALCULATE IF COUNTER>0 THEN DEC COUNTER IF B3 AND #A THEN COUNTER=20 END DEF DRAW SPOFS 0,PX,PY 'Let's assume the player's sprite is #0 SPCHR 0,u1,v1,w1,h1 'You put the idle sprite here. Look at the documentation to understand which values to put IF B AND #A THEN SPCHR 0,u2,v2,w2,h2 'Charging attack 1 sprite IF COUNTER>0 THEN SPCHR 0,u3,v3,w3,h3 'Released attack 1 sprite SPOFS 1,EX,EY 'Enemy sprite ENDI used a COUNTER variable to have the released animation appear for precisely 20 frames. There are other methods to do this I guess, but this is the first one that came to my mind. You can also animate sprites with SPANIM, and it won't stop the game or anything. Everything we're doing to the player sprite in this code can also be done to enemy sprites. With all of this in mind, you can definitely have both a player and many enemies on screen without any issues. Hopefully I didn't screw up the explanation, so let me know if something isn't clear.
I don't know exactly what you think is going to be "stopping everything".i think my thinking was like "i'm gonna need to account for button presses but if i throw in a line that checks for when a button is held down it's gonna bring everything to a screeching halt until the button's let up" but i guess that won't be a problem so long as i get everything right.
ok so attack 1 isn't working but the character is being affected by the button input for the attack. he switches to the charging sprite and earlier he would switch back to idle when i let up on the a button but now he just stays in the charging stance so i don't really know what's up with that but it's progress thanks to sam up there. it really did help even if i don't know how to make it work properly.
Hopefully I didn't screw up the explanation, so let me know if something isn't clear.i don't think you screwed anything up but i may have when i tried using this in the actual game because now the dude just drifts back and forth in the top right of the screen (smooth drifting though i really like how smoothly he drifts) and also he's stuck on the attack release frame and no button inputs do anything so i may have royally messed this up.
ok so attack 1 isn't working but the character is being affected by the button input for the attack. he switches to the charging sprite and earlier he would switch back to idle when i let up on the a button but now he just stays in the charging stance so i don't really know what's up with that but it's progress thanks to sam up there. it really did help even if i don't know how to make it work properly.You need to make it switch back to the idle sprite for it to switch back lol. You could do something like
B0=BUTTON(0) IF B0 AND 16 THEN SPCHR 0,charging sprite number ELSEIF B0 AND 128 THEN SPCHR 0,flurry sprite number ELSEIF B0 AND 64 THEN SPCHR 0,special sprite number ELSEIF B0 AND 0 THEN SPCHR 0,idle sprite number
As in the SBANIM in the smile tool? Idk what you mean.yes. i'm trying to load a definition file (that i made in the sbanim section) but i think i'm doing it wrong and it looks like this:
LOAD "DAT:DEF_ATTACK1"i'm pretty sure that's what i'm supposed to do but i get an error every time i get to the part where it needs to load it.
Probably because with the smile tool it uses PRG files. I wouldn't use the smile tool for this because it's really inconvenient. I would use the SPANIM instruction. It doesn't take up any more than one line, so it's pretty easy.As in the SBANIM in the smile tool? Idk what you mean.yes. i'm trying to load a definition file (that i made in the sbanim section) but i think i'm doing it wrong and it looks like this:LOAD "DAT:DEF_ATTACK1"i'm pretty sure that's what i'm supposed to do but i get an error every time i get to the part where it needs to load it.
Probably because with the smile tool it uses PRG files. I wouldn't use the smile tool for this because it's really inconvenient. I would use the SPANIM instruction. It doesn't take up any more than one line, so it's pretty easy.i'd do that but i don't know how or if i even can change width and height of the sprite on the fly with a simple spanim.