After recently finding one of my old calculators (I had two 83+'s for the longest time, but lost one) I have stumbled upon what was the best program I had made, 4 years into programming. Mind you up to just after this point I had almost zero experience online (tutorials, guides, or even contact with almost any other programmer), and a few weeks/months after making this project, I found my home forums: DevHardware.
Here is my once prized program, TICTACTO: (WARNING: This code was made before I knew the term "optimization" or how to "optimize" code. The file is absolutely massive, and iirc, is about 8-12 KB. Also, it was severely corrupted, so some of it may not work properly, and you may run into syntax errors. I tried taking out anything that was corrupted, but let me know if you find anything that looks like it wouldn't work. Lastly, this whole code was de-token-ized by Merth's TokensIDE, so ignore the "" breaks)
Code:
Here is my once prized program, TICTACTO: (WARNING: This code was made before I knew the term "optimization" or how to "optimize" code. The file is absolutely massive, and iirc, is about 8-12 KB. Also, it was severely corrupted, so some of it may not work properly, and you may run into syntax errors. I tried taking out anything that was corrupted, but let me know if you find anything that looks like it wouldn't work. Lastly, this whole code was de-token-ized by Merth's TokensIDE, so ignore the "" breaks)
Code:
6->dim(listSCOR
ClrHome
Goto 9
Lbl 8
ClrHome
Disp "IS THIS YOUR","FIRST TIME","PLAYING TIC-TAC-","TOE?","(Y/N)
getKey->G
Repeat G=92 or G=71
getKey->G
End
ClrHome
If G=92:Goto 1
Goto AA
Lbl 9
Output(1,3,"Tic-Tac-Toe"
Output(2,6,"V-1.6"
Output(4,1,"Best on TI-84+SE"
Output(8,4,"Loading..."
Output(6,5,"Made By:"
Output(7,3,"Joey McNamara"
rand(1
If listSCOR(6)=0:Goto 8
Goto AA
Lbl AA
ClrHome
1->listSCOR(6)
Menu("Tic-Tac-Toe","One Player",C,"T\wo Player",B,"Reset Scores",R1,"Q\uit",NO,"Help",1
Lbl 1
ClrHome
Disp "To play Tic-Tac-","Toe, yo\u \use the","Up, Do\wn, Left, ","and Right arro\ws","to mo\vdotPlotmin( yo\ur ","c\urrent position","seen by thE 4 *s"
Output(8,1,"aro\und the grid."
Pause
ClrHome
Disp "Yo\u can also \use","the n\umbers 1-9 ","like a grid to ","j\ump to yo\ur ","desired position","q\uickly. "
Pause
ClrHome
Disp "The n\umbers and ","letters next to ","the grid sho\w ","yo\ur scores. "
Pause
ClrHome
Disp "X-X's \wins ","O-O's \wins ","0-0's \wins ","theta-theta's \wins ","D-Dra\ws "
Pause
ClrHome
Disp "X is either yo\u ","or \whoe\ver \used ","X at th[phat1]time. ","O is the second ","player \used only","d\uring T\wo ","Players mode "
Pause
ClrHome
Disp "0 is any One ","Player mode comp","other than the ","Impossible comp.","theta is the ","Impossible mode ","comp\uter's \wins."
Pause
ClrHome
Disp "In easy mode, ","the comp\uter ","\will only do ","randomly ","generated points"
Pause
ClrHome
Disp "In Normal mode, ","the comp\uter ","\will act only on","defense, and ","\will not \win ","on p\urpose, b\ut ","may on accident "
Output(8,1,"or self-defense."
Pause
ClrHome
Disp "In Hard mode, ","the comp\uter ","\will act on the ","defense and ","offense, and ","\will take any ","chance gi\ven to "
Output(8,1,"\win. "
Pause
ClrHome
Disp "Impossible mode ","is named s\uch ","for a reason. ","It is not ","possible to \win ","against the comp","\when it is in "
Output(8,1,"this mode. "
Pause
ClrHome
Disp "Yo\u \will no\w ","ret\urn to the ","main men\u. ","Good l\uck, ha\ve ","f\un, and try not","to lose too many","times! "
Output(8,1," -Joey Mac "
Pause
ClrHome
Goto AA
Lbl R1
Menu("Are yo\u s\ure?","No",AA,"Yes",R
Lbl C
Menu("Pick Diffic\ulty","Easy",E,"Normal",N,"Hard",H,"Impossible",IM,"Back",AA
Lbl E
1->A
Goto I
Lbl N
2->A
Goto I
Lbl H
3->A
Goto I
Lbl IM
4->A
Goto I
Lbl B
DelVar A
Goto I
Lbl R
For(U,1,5
0->listSCOR(U)
End
Goto AA
Lbl I
ClrHome
DelVar M
Disp " * X","* ! ! * O"," -+-+- 0"," ! ! theta"," -+-+- D"," ! ! "," *"
For(U,1,5
If listSCOR(U)<=9999999 and listSCOR(U)>=0:Then
Output(U,10,listSCOR(U)
Else
Output(U,10,"ERROR"
End
End
" "->Str1
Str1->Str2
Str2->Str3
Str3->Str4
Str4->Str5
Str5->Str6
Str6->Str7
Str7->Str8
Str8->Str9
2->X
2->Y
DelVar R
DelVar Q
Goto I1
Lbl I1
While 1
If Q=0:Then
If ((A=1 or A=2 or A=3) and int(M/2)!=M/2) or ((A=4 or A=5) and int(M/2)=M/2):Goto I4
DelVar G
"X"->Str0
If int(M/2)!=M/2 and A!=4 and A!=5:"O"->Str0
Output(1,1,Str0
Output(1,7,Str0
Output(7,1,Str0
Output(7,7,Str0
getKey->G
While not(G=24 or G=25 or G=26 or G=34 or G=23 or G=72 or G=73 or G=74 or G=82 or G=83 or G=84 or G=92 or G=93 or G=94 or G=105
getKey->G
End
G->R
X->S
Y->T
If G=23:Goto NO
If int(G/10)>=7 and int(G/10)<=9:int(G/10)*2-12->X
If G-10int(G/10)>=2 and G-10int(G/10)<=4 and int(G/10)>3:2G-20int(G/10)-2->Y
If G=105:Then
If X=2:Then
If Y=2 and Str1=" ":Then
M+1->M
Str0->Str1
Output(2,2,Str1
End
If Y=4 and Str2=" ":Then
M+1->M
Str0->Str2
Output(2,4,Str2
End
If Y=6 and Str3=" ":Then
M+1->M
Str0->Str3
Output(2,6,Str3
End
End
If X=4:Then
If Y=2 and Str4=" ":Then
M+1->M
Str0->Str4
Output(4,2,Str4
End
If Y=4 and Str5=" ":Then
M+1->M
Str0->Str5
Output(4,4,Str5
End
If Y=6 and Str6=" ":Then
M+1->M
Str0->Str6
Output(4,6,Str6
End
End
If X=6:Then
If Y=2 and Str7=" ":Then
M+1->M
Str0->Str7
Output(6,2,Str7
End
If Y=4 and Str8=" ":Then
M+1->M
Str0->Str8
Output(6,4,Str8
End
If Y=6 and Str9=" ":Then
M+1->M
Str0->Str9
Output(6,6,Str9
End
End
End
If G=24 and Y!=2:Y-2->Y
If G=25 and X!=2:X-2->X
If G=26 and Y!=6:Y+2->Y
If G=34 and X!=6:X+2->X
If S!=X or T!=Y:Then
Output(S,1,"
Output(S,7,"
Output(1,T,"
Output(7,T,"
Output(X,1,"*
Output(X,7,"*
Output(1,Y,"*
Output(7,Y,"*
End
End
If M>4:Then
If (Str1!=" " and Str1=Str2 and Str2=Str3) or (Str1!=" " and Str1=Str5 and Str5=Str9) or (Str1!=" " and Str1=Str4 and Str4=Str7) or (Str2!=" " and Str2=Str5 and Str5=Str8) or (Str3!=" " and Str3=Str5 and Str5=Str7) or (Str3!=" " and Str3=Str6 and Str6=Str9) or (Str4!=" " and Str4=Str5 and Str5=Str6) or (Str7!=" " and Str7=Str8 and Str8=Str9):Then
Output(6,10,"PRESS
Output(7,9,"[ENTER]
Pause
ClrHome
Disp Str0
Output(1,3,"WINS!
If Str0="0" or Str0="theta":Output(1,7,"...
listSCOR(1)+(Str0="X")->listSCOR(1)
listSCOR(2)+(Str0="O")->listSCOR(2)
listSCOR(3)+(Str0="0")->listSCOR(3)
listSCOR(4)+(Str0="theta")->listSCOR(4)
Goto RS
End
If M=9:Then
Output(6,10,"PRESS
Output(7,9,"[ENTER]
Pause
ClrHome
Disp "DRAW...
1+listSCOR(5)->listSCOR(5)
Goto RS
End
End
DelVar Q
If A!=0 and A!=4 and A!=5 and (M=1 or M=3 or M=5 or M=7 or M=9):Goto I4
End
Lbl I4
"0"->Str0
If A=4 or A=5:"theta"->Str0
Output(1,1,Str0
Output(1,7,Str0
Output(7,1,Str0
Output(7,7,Str0
M+1->M
Output(8,1,"Loading..."
If not(M=2 or A=1):Then
0->Z
If Str1=" " and (Str3="X" and Str2="X" or Str7="X" and Str4="X" or Str9="X" and Str5="X"):1->Z
If Str2=" " and (Str1="X" and Str3="X" or Str8="X" and Str5="X"):2->Z
If Str3=" " and (Str1="X" and Str2="X" or Str7="X" and Str5="X" or Str9="X" and Str6="X"):3->Z
If Str4=" " and (Str1="X" and Str7="X" or Str5="X" and Str6="X"):4->Z
If Str5=" " and (Str1="X" and Str9="X" or Str2="X" and Str8="X" or Str3="X" and Str7="X" or Str4="X" and Str6="X"):5->Z
If Str6=" " and (Str3="X" and Str9="X" or Str4="X" and Str5="X"):6->Z
If Str7=" " and (Str1="X" and Str4="X" or Str3="X" and Str5="X" or Str8="X" and Str9="X"):7->Z
If Str8=" " and (Str2="X" and Str5="X" or Str7="X" and Str9="X"):8->Z
If Str9=" " and (Str1="X" and Str5="X" or Str3="X" and Str6="X" or Str7="X" and Str8="X"):9->Z
If A=2:Then
If Z=0:Goto I5
Goto I6
End
If Str1=" " and (Str3=Str0 and Str2=Str0 or Str7=Str0 and Str4=Str0 or Str9=Str0 and Str5=Str0):1->Z
If Str2=" " and (Str1=Str0 and Str3=Str0 or Str8=Str0 and Str5=Str0):2->Z
If Str3=" " and (Str1=Str0 and Str2=Str0 or Str7=Str0 and Str5=Str0 or Str9=Str0 and Str6=Str0):3->Z
If Str4=" " and (Str1=Str0 and Str7=Str0 or Str5=Str0 and Str6=Str0):4->Z
If Str5=" " and (Str1=Str0 and Str9=Str0 or Str2=Str0 and Str5=Str0 or Str3=Str0 and Str7=Str0 or Str4=Str0 and Str6=Str0):5->Z
If Str6=" " and (Str3=Str0 and Str9=Str0 or Str4=Str0 and Str5=Str0):6->Z
If Str7=" " and (Str1=Str0 and Str4=Str0 or Str3=Str0 and Str5=Str0 or Str8=Str0 and Str9=Str0):7->Z
If Str8=" " and (Str2=Str0 and Str5=Str0 or Str7=Str0 and Str9=Str0):8->Z
If Str9=" " and (Str1=Str0 and Str5=Str0 or Str3=Str0 and Str6=Str0 or Str7=Str0 and Str8=Str0):9->Z
If A=3 or A=5:Then
If Z=0:Goto I5
Goto I6
End
If Str1=" ":1->Z
If M=3:Then
If Str7="X" or Str4="X":2->Z
If Str2="X" or Str3="X":4->Z
If Str8="X" or Str9="X":3->Z
If Str6="X":Then
5->Z
5->A
End
If Str5="X":Then
9->Z
5->A
End
Goto I6
End
If M=5:Then
If (Str2="X" or Str3="X") and Str4="theta" and Str7="X" or (Str4="X" or Str7="X") and Str2="theta" and Str3="X" or Str8="X" and Str3="theta" and Str2="X":5->Z
If Str9="X" and Str3="theta" and Str2="X":7->Z
5->A
Goto I6
End
Goto I6
End
Lbl I5
randInt(1,9)->Z
If (Z=1 and Str1!=" ") or (Z=2 and Str2!=" ") or (Z=3 and Str3!=" ") or (Z=4 and Str4!=" " or (Z=5 and Str5!=" ") or (Z=6 and Str6!=" ") or (Z=7 and Str7!=" ") or (Z=8 and Str8!=" ") or (Z=9 and Str9!=" "):Goto I5
Lbl I6
If Z=1:Then
Str0->Str1
Output(2,2,Str1
End
If Z=2:Then
Str0->Str2
Output(2,4,Str2
End
If Z=3:Then
Str0->Str3
Output(2,6,Str3
End
If Z=4:Then
Str0->Str4
Output(4,2,Str4
End
If Z=5:Then
Str0->Str5
Output(4,4,Str5
End
If Z=6:Then
Str0->Str6
Output(4,6,Str6
End
If Z=7:Then
Str0->Str7
Output(6,2,Str7
End
If Z=8:Then
Str0->Str8
Output(6,4,Str8
End
If Z=9:Then
Str0->Str9
Output(6,6,Str9
End
Output(8,1," "
DelVar Q
If M!=2:1->Q
Goto I1
End
Lbl 3
Menu("SAME SETTINGS?","YES, SAME",2,"NO, DIFFERENT",AA
Lbl 2
If A=5:4->A
Goto I
Lbl RS
Output(6,10,"Press"
Output(7,9,"[ENTER]"
Pause
ClrHome
Menu("Play again?","Yes",3,"No",NO
Lbl NO
ClrHome
"Done