So, I've decided to try to enter this contest. Hopefully I will have enough time to complete this program. I don't have a very clear idea of what I want to do yet, but I do know it will be all BASIC and written for the TI-85 (I'll also write a TI-89 port with enhanced functionality if I have time). I will allow the character to select various implements that give them an advantage in one area. You will be able to select five implements in four different categories, thereby allowing you to equip your character with four implements at any given time. Balance will be key when it comes to succeeding at this game.

I'll attempt to include all of these items into both versions:
    Basic gameplay described above
    Stats screen
    Good context and backstory
    Save files
    Presentable user interface
    Relatively good speed
    Graphics(?)
    Exp. point system and unlockable items accompanied by increasing level of difficulty(?)


If I can get around to making a TI-89 port, here is what I'd like to include in that:
    Two player gameplay mode over link cable
    Personalization of character (name, short description, etc.)
    Enhanced menu system
    (Better) graphics(?)
    Exp. point system and unlockable items accompanied by increasing level of difficulty(If not implemented in the 85 version)


I look forward to competing and I will give more information as soon as possible. Very Happy

EDIT: I have a few questions:
First off, is there any way to check for the presence of a variable?
Secondly, what advice do you have for speeding up the execution of BASIC programs?
Finally, What would the most efficient way to store a set of strings containing information be?
I hope your project turns out.
I don't think you can check for a variable, but I may be wrong.
For strings, to store info, just have all the numbers be that same length and just use the sub( command do access different portions of it. For a list, you can store 4 items in one spot, you can use xx.yy+zz.aai (i as in the imaginary i). Keep up the good work!
Ok, thanks! I'm working on planning the general program flow now. Very Happy

I'm going to be doing a little adventure game. Should I store each "chapter" of sorts in its own file or put everything in one file?

EDIT (Update): I just finished flowcharting my program. I can post pictures of the flowcharts if desired (they'll be included with documentation anyway).

I have decided that it will be a short text adventure taking place in the far reaches of space.

So, after getting a better idea of my program, here is where I stand with features I plan to implement:
    Gameplay changed from a dungeon crawl style game to a more linear storyline
    Stats screen (will be shown while battling and while equipping items)
    Good context and backstory
    Save files
    Presentable user interface
    Relatively good speed (maybe, haven't written the code yet. Any tips on speeding this up would be handy)
    Full customizability of storyline, weapons, enemies, and stats


Features I would like to include, but may not be feasible given my schedule, programming knowledge, and time constraints include the following. Any ideas on how to include these would be awesome:

    Exp. point system and the ability to pick up and use items as well as an increasing level of difficulty


Features that I will try to add to the TI-89 port (If I can make one):
    Two player gameplay mode over link cable (Arena-style combat)
    Personalization of character (name, short description, etc.)
    Enhanced menu system
    Exp. point system and the ability to pick up and use items as well as an increasing level of difficulty (If not implemented in the 85 version)


Features that are no longer planned or desired due to changes in gameplay:
    Graphics (text adventures don't really need them and I am not skilled enough to make fast graphics in BASIC)


A word on the full customizability: You can choose to keep the default storyline and weapons and it will include the ability to outfit characters with things that can change the outcome of the game. If you want to customize the inner-workings of the game, you can do that by making new files that follow the same basic format of my files provided with the game. I intend to provide full documentation of the way the game operates with explanations of every variable used and program flow diagrams for every part of the game. The game will come with three chapters to the story but you can add to the story, make your own story, or even modify the available equipment and encountered enemies.

I look forward to continuing work on this and I hope to have some screenshots of development and of the game by the end of this week.
This looks pretty great! Sadly, the TI-85 is one of the few calculators I don't have 😭
I am actually going to buy one right now, haha
Thanks! The 85 was my first calc and I love it dearly. I'd highly recommend it Very Happy
RogerWilco wrote:
Thanks! The 85 was my first calc and I love it dearly. I'd highly recommend it Very Happy


My AP physics teacher in high school exclusively used the TI-85
Pieman7373 wrote:
RogerWilco wrote:
Thanks! The 85 was my first calc and I love it dearly. I'd highly recommend it Very Happy


My AP physics teacher in high school exclusively used the TI-85


For good reason. It is incredibly capable for engineering and calculus. It can do unit conversions, work with imaginary numbers, and other stuff that I'm not sure how to work yet (I'm currently in Precalc Razz).

It also has a large display, so that makes it good for programming and the menus are also awesome for in-calc BASIC programming.
Sounds like it'll be a very spiffy game! I love text-based battle screens and the ability to customize the game will be super cool.

I'm curious to hear what you've been thinking about for a storyline (no spoilers, please!)- how your story develops is the most critical part of a game like this, in my opinion.

I think that your ideas on implementing the contest restrictions and theme into your game are super cool. It's something I never would have thought of- very clever!

Good luck!
_iPhoenix_ wrote:
Sounds like it'll be a very spiffy game! I love text-based battle screens and the ability to customize the game will be super cool.

I'm curious to hear what you've been thinking about for a storyline (no spoilers, please!)- how your story develops is the most critical part of a game like this, in my opinion.

I think that your ideas on implementing the contest restrictions and theme into your game are super cool. It's something I never would have thought of- very clever!

Good luck!


Thanks! So far I think it will be set somewhere in space. I can't decide if your character will be stranded on a space ship at the beginning of the game or stranded on a planet, but it will be one of the two. I look forward to writing the story. Very Happy
Ok, so I just did some work on the game. I now have the first program complete (currently called Start) and now I will be focusing more on the storyline of the game and documentation in general before I continue work on the code. Here are screenshots from Wabbitemu as well as my TI Graph-Link window while I was working on the file.

Dev environment:


Test in Wabbit:


Here's a link to an Imgur page where I'll be keeping all screenshots: https://imgur.com/a/KNzA27e

I also might try to compose a little soundtrack to go along with (but not be implemented) in the game if I get around to it Wink
I made the opener to the story that will come supplied with the game. Here it is:

Quote:
Your eyes flutter open from being asleep. It appears you are in a sleeping pod in a space ship of some kind. A flashing red button labeled "RELEASE" sits next to your right hand.


Would you like to press it?


Any writing critiques are appreciated, I don't generally write stuff in second person. Very Happy
RogerWilco wrote:

Quote:
Your eyes flutter open from being asleep. It appears you are in a sleeping pod in a space ship of some kind. A flashing red button labeled "RELEASE" sits next to your right hand.


Would you like to press it?


I recommend removing the "from being asleep" because it is superfluous. That fact that it "Your eyes flutter open." is so abrupt and vivid gives it a mysterious, gripping feel. It immediately catches the reader's attention.

I also recommend changing "would you like to press it" to "do you press it" because the latter upholds a mysterious feel. It almost eggs the reader on. I suggest that pressing it should lead to a sudden death to add to the drama, but if you have other ideas, roll with them.

Edit: oh the irony, I failed at grammar.
_iPhoenix_ wrote:
RogerWilco wrote:

Quote:
Your eyes flutter open from being asleep. It appears you are in a sleeping pod in a space ship of some kind. A flashing red button labeled "RELEASE" sits next to your right hand.


Would you like to press it?


I recommend removing the "from being asleep" because it is superfluous. That fact that it "Your eyes flutter open." is so abrupt and vivid gives it a mysterious, gripping feel. It immediately catches the reader's attention.

I also recommend changing "would you like to press it" to "do you press it" because the latter upholds a mysterious feel. It almost eggs the reader on. I suggest that pressing it should lead to a sudden death to add to the drama, but if you have other ideas, roll with them.

Edit: oh the irony, I failed at grammar.


Ok, thanks! I like where you are taking that. That would be unexpected for sure. Very Happy

EDIT: I have the README completed. Any critiques would be useful. Very Happy

Quote:
Space Adventure 85
Roger Wilco

HOW TO PLAY:
Start SPCADV85 from the [PRGM]->[NAMES] menu.

For a new player: select "New" from the main menu, go through the equipment chooser and choose your equipment, and then start the game.

For continuing player: select "Cont" from the main menu and continue the game.

CONTROLS:
Information is presented on screen, use the menu at the bottom of the screen to make decisions. Sometimes you will need to press enter to display all of the information on screen.

NOTE TO THOSE MODIFYING THE GAME:
Feel free to modify and share the game as much as you like, but please leave the credits screen unchanged. See the provided additional documentation and flowcharts for more information on the operation of the game.

DISCLAIMER:
I am not responsible for any harm that this program might cause to your calculator. This is a BASIC program, so it should be completely inert. Stuff happens though, so this disclaimer is put in here anyway.
So, I started working on coding this today and I ran into a problem. Is there any way to get the TI-85 to display a string and a number on the same line? I've tried Disp, OutPt(, and even using Eq->St( to convert the number to a string but none of the things I've tried work. Does anyone have any ideas as to how I can do this? It's not necessary, but it would look nicer if I could get this figured out.

EDIT: Got the problem figured out with the help of my SAX/IRC friends. Here is a new screenshot of the program so far in Wabbit. It is a little slow in some places because some of the programs are being run for the first time.



Also, I corrected the spelling error in the program (thanks, iPhoenix Razz)
This loop isn't working, the entire loop nest is skipped. Any suggestions?
Note: This is TI-85 code.


Code:
:{20,10,10,15,2,2}->ENEMDAT1
:{20,10,10,15,2,2}->ENEMDAT2
:{20,10,10,15,2,2}->ENEMDAT3
:{25,5,5,10,0,0}->ENEMDAT4
:{30,5,5,10,0,0}->ENEMDAT5
:ClLCD
:Disp "CHAPTER 1"
:Disp "As you walk down the"
:Disp "hallway you spot a"
:Disp "grouping of hostile"
:Disp "looking monsters."
:Disp "Press ENTER"
:Pause
:For(R,1,5,1)
:1+int(5rand)->D
:If D == 1
:Then
:ENEMDAT1->ENEMYDAT
:End
:If D == 2
:Then
:ENEMDAT2->ENEMYDAT
:End
:If D == 3
:Then
:ENEMDAT3->ENEMYDAT
:End
:If D == 4
:Then
:ENEMDAT4->ENEMYDAT
:End
:If D == 5
:Then
:ENEMDAT5->ENEMYDAT
:End
:While SAVEDATA(3)>=0  and ENEMYDAT(3)>=0
:ClLCD
:Disp "CHAPTER 1"
:Outpt(3,1,"ENEMY:")
:Outpt(3,7,ENEMYDAT(3))
:Outpt(4,1,"YOU:")
:Outpt(4,5,SAVEDATA(3))
:Outpt(5,1,"AC:")
:Outpt(5,4,ARMDATA(1))
:Outpt(6,1,"Melee:")
:Outpt(6,7,ARMDATA(3))
:Outpt(7,1,"Ranged:")
:Outpt(7,8,ARMDATA(5))
:If SAVEDATA(1) >= ENEMYDAT(1)
:Then
:Menu(1,"Melee",MELA,2,"Ranged",RANA)
:Lbl MELA
:Disp "You attack!"
:If ENEMDAT(4) < (int(20rand)+ARMDATA(2))
:Then
:ENEMYDAT(3)-(int(10rand)+ARMDATA(3))->ENEMYDAT(3)
:Disp "You hit!"
:Else
:Disp "You miss!"
:End
:Disp "Enemy attacks!"
:If ARMDATA(1) < (int(20rand)+ENEMYDAT(5))
:Then
:SAVEDATA(3)-(int(6rand)+ENEMYDAT(6))->SAVEDATA(3)
:Disp "Enemy hits!"
:Else
:Disp "Enemy misses!"
:End
:Lbl RANA
:Disp "You attack!"
:If ENEMDAT(4) < (int(20rand)+ARMDATA(4))
:Then
:ENEMYDAT(3)-(int(8rand)+ARMDATA(5))->ENEMYDAT(3)
:Disp "You hit!"
:Else
:Disp "You miss!"
:End
:Disp "Enemy attacks!"
:If ARMDATA(1) < (int(20rand)+ENEMYDAT(5))
:Then
:SAVEDATA(3)-(int(6rand)+ENEMYDAT(6))->SAVEDATA(3)
:Disp "Enemy hits!"
:Else
:Disp "Enemy misses!"
:End
:Else
:Menu(1,"Melee",MELB,2,"Ranged",RANB)
:Lbl MELB
:Disp "Enemy attacks!"
:If ARMDATA(1) < (int(20rand)+ENEMYDAT(5))
:Then
:SAVEDATA(3)-(int(6rand)+ENEMYDAT(6))->SAVEDATA(3)
:Disp "Enemy hits!"
:Else
:Disp "Enemy misses!"
:End
:Disp "You attack!"
:If ENEMDAT(4) < (int(20rand)+ARMDATA(2))
:Then
:ENEMYDAT(3)-(int(10rand)+ARMDATA(3))->ENEMYDAT(3)
:Disp "You hit!"
:Else
:Disp "You miss!"
:End
:Lbl RANB
:Disp "Enemy attacks!"
:If ARMDATA(1) < (int(20rand)+ENEMYDAT(5))
:Then
:SAVEDATA(3)-(int(6rand)+ENEMYDAT(6))->SAVEDATA(3)
:Disp "Enemy hits!"
:Else
:Disp "Enemy misses!"
:End
:Disp "You attack!"
:If ENEMDAT(4) < (int(20rand)+ARMDATA(4))
:Then
:ENEMYDAT(3)-(int(8rand)+ARMDATA(5))->ENEMYDAT(3)
:Disp "You hit!"
:Else
:Disp "You miss!"
:End
:End
:End
:If SAVEDATA(3) >= 0
:DEATH
:Return


Here's a flowchart of desired program flow:
The concept, and what has been done so far looks cool! I'd play this, if I had an 85... You should port this to the CE when you're done Razz
SM84CE wrote:
The concept, and what has been done so far looks cool! I'd play this, if I had an 85... You should port this to the CE when you're done Razz


Thanks! I might, although probably only once I learn how to do something like ICE or C for the CE. Very Happy
I added some indentation to get a better idea of what the program structure looks like to the TI-BASIC parser:


Code:
:{20,10,10,15,2,2}->ENEMDAT1
:{20,10,10,15,2,2}->ENEMDAT2
:{20,10,10,15,2,2}->ENEMDAT3
:{25,5,5,10,0,0}->ENEMDAT4
:{30,5,5,10,0,0}->ENEMDAT5
:ClLCD
:Disp "CHAPTER 1"
:Disp "As you walk down the"
:Disp "hallway you spot a"
:Disp "grouping of hostile"
:Disp "looking monsters."
:Disp "Press ENTER"
:Pause
:For(R,1,5,1)
  :1+int(5rand)->D
  :If D == 1
    :Then
    :ENEMDAT1->ENEMYDAT
  :End
  :If D == 2
    :Then
    :ENEMDAT2->ENEMYDAT
  :End
  :If D == 3
    :Then
    :ENEMDAT3->ENEMYDAT
  :End
  :If D == 4
    :Then
    :ENEMDAT4->ENEMYDAT
  :End
  :If D == 5
    :Then
    :ENEMDAT5->ENEMYDAT
  :End
  :While SAVEDATA(3)>=0  and ENEMYDAT(3)>=0
    :ClLCD
    :Disp "CHAPTER 1"
    :Outpt(3,1,"ENEMY:")
    :Outpt(3,7,ENEMYDAT(3))
    :Outpt(4,1,"YOU:")
    :Outpt(4,5,SAVEDATA(3))
    :Outpt(5,1,"AC:")
    :Outpt(5,4,ARMDATA(1))
    :Outpt(6,1,"Melee:")
    :Outpt(6,7,ARMDATA(3))
    :Outpt(7,1,"Ranged:")
    :Outpt(7,8,ARMDATA(5))
    :If SAVEDATA(1) >= ENEMYDAT(1)
    :Then
      :Menu(1,"Melee",MELA,2,"Ranged",RANA)
      :Lbl MELA
      :Disp "You attack!"
      :If ENEMDAT(4) < (int(20rand)+ARMDATA(2))
        :Then
        :ENEMYDAT(3)-(int(10rand)+ARMDATA(3))->ENEMYDAT(3)
        :Disp "You hit!"
      :Else
        :Disp "You miss!"
      :End
      :Disp "Enemy attacks!"
      :If ARMDATA(1) < (int(20rand)+ENEMYDAT(5))
      :Then
        :SAVEDATA(3)-(int(6rand)+ENEMYDAT(6))->SAVEDATA(3)
        :Disp "Enemy hits!"
      :Else
        :Disp "Enemy misses!"
      :End
      :Lbl RANA
      :Disp "You attack!"
      :If ENEMDAT(4) < (int(20rand)+ARMDATA(4))
        :Then
        :ENEMYDAT(3)-(int(8rand)+ARMDATA(5))->ENEMYDAT(3)
        :Disp "You hit!"
      :Else
        :Disp "You miss!"
      :End
      :Disp "Enemy attacks!"
      :If ARMDATA(1) < (int(20rand)+ENEMYDAT(5))
        :Then
        :SAVEDATA(3)-(int(6rand)+ENEMYDAT(6))->SAVEDATA(3)
        :Disp "Enemy hits!"
      :Else
        :Disp "Enemy misses!"
      :End
    :Else
      :Menu(1,"Melee",MELB,2,"Ranged",RANB)
      :Lbl MELB
      :Disp "Enemy attacks!"
      :If ARMDATA(1) < (int(20rand)+ENEMYDAT(5))
        :Then
        :SAVEDATA(3)-(int(6rand)+ENEMYDAT(6))->SAVEDATA(3)
        :Disp "Enemy hits!"
      :Else
        :Disp "Enemy misses!"
      :End
      :Disp "You attack!"
      :If ENEMDAT(4) < (int(20rand)+ARMDATA(2))
        :Then
        :ENEMYDAT(3)-(int(10rand)+ARMDATA(3))->ENEMYDAT(3)
        :Disp "You hit!"
      :Else
        :Disp "You miss!"
      :End
      :Lbl RANB
      :Disp "Enemy attacks!"
      :If ARMDATA(1) < (int(20rand)+ENEMYDAT(5))
        :Then
        :SAVEDATA(3)-(int(6rand)+ENEMYDAT(6))->SAVEDATA(3)
        :Disp "Enemy hits!"
      :Else
        :Disp "Enemy misses!"
      :End
      :Disp "You attack!"
      :If ENEMDAT(4) < (int(20rand)+ARMDATA(4))
        :Then
        :ENEMYDAT(3)-(int(8rand)+ARMDATA(5))->ENEMYDAT(3)
        :Disp "You hit!"
      :Else
        :Disp "You miss!"
      :End
    :End
  :End
  :If SAVEDATA(3) >= 0
  :DEATH
  :Return
** 1 missing End, so TI-85 assumes it goes here, ending the For(R,1,5,1) loop **


The For( loop is unterminated, so once it goes through the loop once it just hits the Return and ends the whole program. I'm not sure exactly which segment of your program is meant to loop 5 times, but putting an End at the end of where that loop is supposed to finish might fix it.
As far as optimization, an If statement with only one line to execute does not need "then" or "end."
So I looked a little bit at your code, and it seems to me that you need to start writing your code with more of a head for what will be coming next. Potentially massive programs with a simple idea (such as an adventure game) are a perfect opportunity to exercise some good ol' abstraction. Instead of putting your whole program into a loop, make a sort of outer program that can handle user input and output, inventory, character, fights, enemies, etc. while you delegate the bookkeeping to subprograms. For instance, you could use global string and list variables to hold the data for your inventory and whatever room you're in, as well as the behavior of that room, but use a single loop that can process any room or scenario you may enter, just using those variables. This allows you to write a complete program with very little actual gameplay, and then you can add the actual gameplay willy-nilly insubprograms that alter those variables without worrying about whether you have to write more code to do it.
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 2
» All times are UTC - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement