How many enemies should be in each level?
1-5
 33%  [ 3 ]
6-10
 11%  [ 1 ]
11-15
 55%  [ 5 ]
Total Votes : 9

Graphing Calculator Legend of Theta is a remake of my game I made on my laptop called Legend of Doors and Legend of Darkness. I'm working on refining it and adding new levels. Originally on my Ti-83 plus, but after it lagged too much, I switched it to my Ti-84 Plus CE. If you have any suggestions on what else to call it, then reply with it. I might call it "Theta Adventures" or something. 132 Lines of code and 941 Bytes for one level. Dang. Also, the room size is approximately 9 by 16 or so characters. An enemy is 1 character. keep that in mind when voting.
UPDATE: I requested an update adding:
-NEW Character Select!
-Another Level
-More random things
Link in archives: https://www.cemetech.net/programs/index.php?mode=file&path=/beta/LegendofTheta.zip
Seems this is in TI-BASIC, I'd be happy to lend a hand if you get stuck with a few things, even I'm not the expert, the programs I have on this site could be optimized further.
SM84CE wrote:
Seems this is in TI-BASIC, I'd be happy to lend a hand if you get stuck with a few things, even I'm not the expert, the programs I have on this site could be optimized further.
Sure. It is in Ti-basic, and I'm thinking of uploading the one-level concept soon
Show us what you have! We'd be happy to help optimize, though I optimize for size, while some others optimize for speed and not size, others do both.
Okay.
SM84CE wrote:
Show us what you have! We'd be happy to help optimize, though I optimize for size, while some others optimize for speed and not size, others do both.
Done! It is now in the queue.
It got declined because I forgot to put it in a zipped folder, so I'm trying again.
I'm sorry to be the one who spoils all the fun, but on Cemetech, our philosophy is "quality over quantity". This means, among other things, that you should refrain from posting two (or three or more) times in a row, instead edit your previous post. Exceptions can be made if either a whole day (or close to it) has passed since the last post, or if the new information is so essentially important or different that a new post cannot be avoided.

In this particular case, I see no need at all to post a single word ("Okay") or that your program was rejected. Don't worry, it's not a big problem, just try to avoid it in the future and put as much value and quality into every post as you can. Smile

</stick-in-the-mud>

You idea seems very ambitious. Have you done a proof of concept yet? If so, how fast does it run? May we see the code? I am totally looking forward to seeing the results of this!
Oh yes. No double posting Wink
Nik wrote:
I'm sorry to be the one who spoils all the fun, but on Cemetech, our philosophy is "quality over quantity". This means, among other things, that you should refrain from posting two (or three or more) times in a row, instead edit your previous post. Exceptions can be made if either a whole day (or close to it) has passed since the last post, or if the new information is so essentially important or different that a new post cannot be avoided.

In this particular case, I see no need at all to post a single word ("Okay") or that your program was rejected. Don't worry, it's not a big problem, just try to avoid it in the future and put as much value and quality into every post as you can. Smile

</stick-in-the-mud>

You idea seems very ambitious. Have you done a proof of concept yet? If so, how fast does it run? May we see the code? I am totally looking forward to seeing the results of this!
Its quite fast, and I send the code to SM84CE so he may optimize it. If you want the code to optimize it, I can send it to you by PM. Also, thanks for the info.
If you could post or link your code, I think many people here would be willing to help optimize your code. Oftentimes it better to have the whole community suggest optimizations rather than a few people. Smile
If you want to keep this as closed-source as possible though, that's understandable.

I look forward to playing this!
TheLastMillennial wrote:
If you could post or link your code, I think many people here would be willing to help optimize your code. Oftentimes it better to have the whole community suggest optimizations rather than a few people. Smile
If you want to keep this as closed-source as possible though, that's understandable.

I look forward to playing this!

Sure! I can do that. Should I do it here?
Yes, do so here, add a Google Drive Link to the files
If you post it here, make sure to use the [code] tags.

Pastbin is also good Wink
Okay. This is the code for the first level and the menu:

Code:
ClrHome
3→S
3→T
6→Y
8→X
1→C
0→Q
randInt(5,21)→E
randInt(2,9)→D
randInt(5,21)→G
randInt(2,9)→F
Lbl θ
Menu("LEGEND OF DOORS","START",A,"CONTROLS",C,"QUIT",B
Lbl A
Output(1,5,"SCORE:"
Output(1,12,Q
Output(1,14,"8888888888888"
Output(10,1,"88888888888888888888888888"
Output(1,1,"8888"
Output(2,1,"8888"
Output(3,1,"8888"
Output(4,1,"8888"
Output(5,1,"8888"
Output(6,1,"8888"
Output(7,1,"8888"
Output(8,1,"8888"
Output(9,1,"8888"
Output(1,23,"8888"
Output(2,23,"8888"
Output(3,23,"8888"
Output(4,23,"8888"
Output(5,23,"8888"
Output(6,23,"8888"
Output(7,23,"8888"
Output(8,23,"8888"
Output(9,23,"8888"
While 1
Output(1,12,Q
Output(Y,X,"θ"
Output(D,E,"X"
Output(F,G,"X"
Output(9,22,"O"
Output(7,10,"W"
G→U
G+1→G
If G=23
Then
5→G
End
Output(F,G,"X"
Output(F,U," "
getKey→C
If C=24
Then
X→T
X-1→X
Output(Y,T," "
End
If C=26
Then
X→T
X+1→X
Output(Y,T," "
End
If C=25
Then
Y→S
Y-1→Y
Output(S,X," "
End
If C=34
Then
Y→S
Y+1→Y
Output(S,X," "
End
If X=23
Then
22→X
End
If X=4
Then
5→X
End
If Y=10
Then
2→Y
End
If Y=1
Then
9→Y
End
If D=Y and E=X
Then
Goto θ
End
If F=Y and G=X
Then
Goto θ
End
If X=22 and Y=9
Then
prgmLOFDLVL2
End
If X=20 and Y=7
Then
S→Y
T→X
End







End

ClrHome
Lbl C
Output(1,1,"MOVE: ARROW KEYS"
Output(2,1,"YOU: θ"
Output(3,1,"ENEMIES: X"
Output(4,1,"WALLS: W"
Output(5,1,"POINTS: π"
Output(6,1,"TARGET: O"
Output(7,1,"OTHER STUFF: F,B, AND D"
Pause
ClrHome
Goto θ
Lbl B
ClrHome
12123434 wrote:
Okay. This is the code for the first level and the menu:

Code:
ClrHome
3→S
3→T
6→Y
8→X
1→C
0→Q
randInt(5,21)→E
randInt(2,9)→D
randInt(5,21)→G
randInt(2,9)→F
Lbl θ
Menu("LEGEND OF DOORS","START",A,"CONTROLS",C,"QUIT",B
Lbl A
Output(1,5,"SCORE:"
Output(1,12,Q
Output(1,14,"8888888888888"
Output(10,1,"88888888888888888888888888"
Output(1,1,"8888"
Output(2,1,"8888"
Output(3,1,"8888"
Output(4,1,"8888"
Output(5,1,"8888"
Output(6,1,"8888"
Output(7,1,"8888"
Output(8,1,"8888"
Output(9,1,"8888"
Output(1,23,"8888"
Output(2,23,"8888"
Output(3,23,"8888"
Output(4,23,"8888"
Output(5,23,"8888"
Output(6,23,"8888"
Output(7,23,"8888"
Output(8,23,"8888"
Output(9,23,"8888"
Output(1,12,Q
Output(Y,X,"θ"
Output(D,E,"X"
Output(F,G,"X"
Output(9,22,"O"
Output(7,10,"W"
G→U
G+1→G
If G=23
Then
5→G
End
Output(F,G,"X"
Output(F,U," "
getKey→C
If C=24
Then
X→T
X-1→X
Output(Y,T," "
End
If C=26
Then
X→T
X+1→X
Output(Y,T," "
End
If C=25
Then
Y→S
Y-1→Y
Output(S,X," "
End
If C=34
Then
Y→S
Y+1→Y
Output(S,X," "
End
If X=23
Then
22→X
End
If X=4
Then
5→X
End
If Y=10
Then
2→Y
End
If Y=1
Then
9→Y
End
If D=Y and E=X
Then
Goto θ
End
If F=Y and G=X
Then
Goto θ
End
If X=22 and Y=9
Then
prgmLOFDLVL2
End
If X=20 and Y=7
Then
S→Y
T→X
End







End

ClrHome
Lbl C
Output(1,1,"MOVE: ARROW KEYS"
Output(2,1,"YOU: θ"
Output(3,1,"ENEMIES: X"
Output(4,1,"WALLS: W"
Output(5,1,"POINTS: π"
Output(6,1,"TARGET: O"
Output(7,1,"OTHER STUFF: F,B, AND D"
Pause
ClrHome
Goto θ
Lbl B
ClrHome


I see some optimization right away:


Code:
ClrHome
3→S
3→T
6→Y
8→X
1→C
0→Q
randInt(5,21→E  // removed parentheses, as suggested by SM84CE
randInt(2,9→D
randInt(5,21→G
randInt(2,9→F
Lbl θ
Menu("LEGEND OF DOORS","START",A,"CONTROLS",C,"QUIT",B
Lbl A
Output(1,5,"SCORE:"
Output(1,12,Q
"8888  // as suggested by SM84CE, a shortcut for all those 8's
Output(1,14,Ans+Ans+Ans+"8  // removed closing quote, here and following lines
Output(10,1,Ans+Ans+Ans+Ans+Ans+Ans+"88
Output(1,1,Ans  // despite your comment on SAX, I highly recommend you use a loop here
Output(2,1,Ans
Output(3,1,Ans
Output(4,1,Ans
Output(5,1,Ans
Output(6,1,Ans
Output(7,1,Ans
Output(8,1,Ans
Output(9,1,Ans
Output(1,23,Ans
Output(2,23,Ans
Output(3,23,Ans
Output(4,23,Ans
Output(5,23,Ans
Output(6,23,Ans
Output(7,23,Ans
Output(8,23,Ans
Output(9,23,Ans
Output(1,12,Q
Output(Y,X,"θ
Output(D,E,"X
Output(F,G,"X
Output(9,22,"O
Output(7,10,"W
G→U
G+1→G
If G=23  // if an If-block has only one line, the Then & End lines can be skipped
5→G
Output(F,G,"X
Output(F,U,"
getKey→C
If max(Ans={24,26  // Ans is a bit faster, used a trick to check if Ans is 24 or 26, combined if blocks
Then
X→T
Output(Y,T,"
End
X-(C=24)+(C=26→X  // either 0 or 1 is added/subtracted, smaller and faster shortcut
If max(C={25,34
Then
Y→S
Output(S,X,"
End
Y-(C=25)+(C=34→Y
22(X=23)+5(X=4)+Xmax(X!={4,22→X  // just combined those with another trick
2(Y=10)+9(Y=1)+Ymax(Y!={1,10→Y
If D=Y and E=X
Goto θ
If F=Y and G=X
Goto θ
If X=22 and Y=9
prgmLOFDLVL2
If X=20 and Y=7
Then
S→Y
T→X
End


// ??




End

ClrHome
Lbl C
Output(1,1,"MOVE: ARROW KEYS
Output(2,1,"YOU: θ
Output(3,1,"ENEMIES: X
Output(4,1,"WALLS: W
Output(5,1,"POINTS: π
Output(6,1,"TARGET: O
Output(7,1,"OTHER STUFF: F,B, AND D
Pause
ClrHome
Goto θ
Lbl B
ClrHome


Please test before running this, I made this just in the post editing window and may have typos or whatever.
Nik wrote:
12123434 wrote:
Okay. This is the code for the first level and the menu:

Code:
ClrHome
3→S
3→T
6→Y
8→X
1→C
0→Q
randInt(5,21)→E
randInt(2,9)→D
randInt(5,21)→G
randInt(2,9)→F
Lbl θ
Menu("LEGEND OF DOORS","START",A,"CONTROLS",C,"QUIT",B
Lbl A
Output(1,5,"SCORE:"
Output(1,12,Q
Output(1,14,"8888888888888"
Output(10,1,"88888888888888888888888888"
Output(1,1,"8888"
Output(2,1,"8888"
Output(3,1,"8888"
Output(4,1,"8888"
Output(5,1,"8888"
Output(6,1,"8888"
Output(7,1,"8888"
Output(8,1,"8888"
Output(9,1,"8888"
Output(1,23,"8888"
Output(2,23,"8888"
Output(3,23,"8888"
Output(4,23,"8888"
Output(5,23,"8888"
Output(6,23,"8888"
Output(7,23,"8888"
Output(8,23,"8888"
Output(9,23,"8888"
Output(1,12,Q
Output(Y,X,"θ"
Output(D,E,"X"
Output(F,G,"X"
Output(9,22,"O"
Output(7,10,"W"
G→U
G+1→G
If G=23
Then
5→G
End
Output(F,G,"X"
Output(F,U," "
getKey→C
If C=24
Then
X→T
X-1→X
Output(Y,T," "
End
If C=26
Then
X→T
X+1→X
Output(Y,T," "
End
If C=25
Then
Y→S
Y-1→Y
Output(S,X," "
End
If C=34
Then
Y→S
Y+1→Y
Output(S,X," "
End
If X=23
Then
22→X
End
If X=4
Then
5→X
End
If Y=10
Then
2→Y
End
If Y=1
Then
9→Y
End
If D=Y and E=X
Then
Goto θ
End
If F=Y and G=X
Then
Goto θ
End
If X=22 and Y=9
Then
prgmLOFDLVL2
End
If X=20 and Y=7
Then
S→Y
T→X
End







End

ClrHome
Lbl C
Output(1,1,"MOVE: ARROW KEYS"
Output(2,1,"YOU: θ"
Output(3,1,"ENEMIES: X"
Output(4,1,"WALLS: W"
Output(5,1,"POINTS: π"
Output(6,1,"TARGET: O"
Output(7,1,"OTHER STUFF: F,B, AND D"
Pause
ClrHome
Goto θ
Lbl B
ClrHome


I see some optimization right away:


Code:
ClrHome
3→S
3→T
6→Y
8→X
1→C
0→Q
randInt(5,21)→E
randInt(2,9)→D
randInt(5,21)→G
randInt(2,9)→F
Lbl θ
Menu("LEGEND OF DOORS","START",A,"CONTROLS",C,"QUIT",B
Lbl A
Output(1,5,"SCORE:"
Output(1,12,Q
Output(1,14,"8888888888888  // removed closing quote, here and following lines
Output(10,1,"88888888888888888888888888
Output(1,1,"8888  // despite your comment on SAX, I highly recommend you use a loop here
Output(2,1,"8888
Output(3,1,"8888
Output(4,1,"8888
Output(5,1,"8888
Output(6,1,"8888
Output(7,1,"8888
Output(8,1,"8888
Output(9,1,"8888
Output(1,23,"8888
Output(2,23,"8888
Output(3,23,"8888
Output(4,23,"8888
Output(5,23,"8888
Output(6,23,"8888
Output(7,23,"8888
Output(8,23,"8888
Output(9,23,"8888
Output(1,12,Q
Output(Y,X,"θ
Output(D,E,"X
Output(F,G,"X
Output(9,22,"O
Output(7,10,"W
G→U
G+1→G
If G=23  // if an If-block has only one line, the Then & End lines can be skipped
5→G
Output(F,G,"X
Output(F,U,"
getKey→C
If max(Ans={24,26  // Ans is a bit faster, used a trick to check if Ans is 24 or 26, combined if blocks
Then
X→T
Output(Y,T,"
End
X-(C=24)+(C=26→X  // either 0 or 1 is added/subtracted, smaller and faster shortcut
If max(C={25,34
Then
Y→S
Output(S,X,"
End
Y-(C=25)+(C=34→Y
22(X=23)+5(X=4)+Xmax(X!={4,22→X  // just combined those with another trick
2(Y=10)+9(Y=1)+Ymax(Y!={1,10→Y
If D=Y and E=X
Goto θ
If F=Y and G=X
Goto θ
If X=22 and Y=9
prgmLOFDLVL2
If X=20 and Y=7
Then
S→Y
T→X
End


// ??




End

ClrHome
Lbl C
Output(1,1,"MOVE: ARROW KEYS
Output(2,1,"YOU: θ
Output(3,1,"ENEMIES: X
Output(4,1,"WALLS: W
Output(5,1,"POINTS: π
Output(6,1,"TARGET: O
Output(7,1,"OTHER STUFF: F,B, AND D
Pause
ClrHome
Goto θ
Lbl B
ClrHome


Please test before running this, I made this just in the post editing window and may have typos or whatever.

okay, can do.
It gave me a syntax error for 3>X... I'll have to see what that was about.
I replaced "8888" with a Str0, so I can just do Str0+Str0 for "88888888", that can be done, as well as removing the closing parentheses on randInt commands.

EDIT: Here's my optimizations!
Should have used Ans, that's MUCH better than Str0, replaced that in mine!


Code:
ClrHome
3->S
3->T
7->Y
9->X
1->C
1->Q
randInt(5,21->E
randInt(2,9->D
randInt(5,21->G
randInt(2,9->F
Lbl theta
"8888
Menu("LEGEND OF DOORS","START",A,"CONTROLS",C,"QUIT",B
Lbl A
Output(1,5,"SCORE:
Output(1,12,Q
Output(1,14,Ans+Ans+Ans+"8
Output(10,1,Ans+Ans+Ans+Ans+Ans+Ans+"88
Output(1,1,Ans
Output(2,1,Ans
Output(3,1,Ans
Output(4,1,Ans
Output(5,1,Ans
Output(6,1,Ans
Output(7,1,Ans
Output(8,1,Ans
Output(9,1,Ans
Output(1,23,Ans
Output(2,23,Ans
Output(3,23,Ans
Output(4,23,Ans
Output(5,23,Ans
Output(6,23,Ans
Output(7,23,Ans
Output(8,23,Ans
Output(9,23,Ans
While 1
Output(1,12,Q
Output(Y,X,"theta
Output(D,E,"X
Output(F,G,"X
Output(9,22,"O
Output(7,10,"W
G->U
G+1->G
If G=23
Then
5->G
End
Output(F,G,"X
Output(F,U,"
getKey->C
If C=24
Then
X->T
X-1->X
Output(Y,T,"
End
If C=26
Then
X->T
X+1->X
Output(Y,T,"
End
If C=25
Then
Y->S
Y-1->Y
Output(S,X,"
End
If C=34
Then
Y->S
Y+1->Y
Output(S,X,"
End
If X=23
Then
23->X
End
If X=4
Then
5->X
End
If Y=10
Then
3->Y
End
If Y=1
Then
9->Y
End
If D=Y and E=X
Then
Goto theta
End
If F=Y and G=X
Then
Goto theta
End
If X=22 and Y=9
   Then
      ClrHome
      Disp "LEVEL 2 COMING SOON!
      Pause "PRESS [ENTER]
      Return:Goto B
      "prgmLOFDLVL2
End
If X=20 and Y=7
Then
S->Y
T->X
End
End

ClrHome
Lbl C
ClrHome
Output(1,1,"MOVE: ARROW KEYS
Output(2,1,"YOU: theta
Output(3,1,"ENEMIES: X
Output(4,1,"WALLS: W
Output(5,1,"POINTS: pi
Output(6,1,"TARGET: O
Output(7,1,"OTHER STUFF: F,B, and D
Pause
ClrHome
Goto theta
Lbl B
ClrHome
0->Q can be DelVar Q (faster, IIRC)
The G+1->G:If G=23:5->G section can be: G-19(G=23)+1->G (much, much faster; If statements are very slow)

Edit: If you add a ClrHome right after Lbl θ, you can save the ClrHome at the beginning, and the one in the section after Lbl C.
I have made a working score system! Now, I'm going to work on making an enemy that can move vertically instead of horizontally. I may also add a link to a youtube video I may make where I show the one-level concept.




And it has been accepted into the archives as "Theta Adventures"
  
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 1
» 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