ClrHome
"3221110000→Str2
"MH →Str1
0identity(16→[A]
DelVar TDelVar SDelVar LRepeat S=20 and T=20
ClrHome
For(A,1,8
Output(A,9-8L,"++++++++
End
Output(1,9-8L,"PLAYER
Output(1,16-8L,L+1
1→X
1→Y
DelVar G1→R
Repeat R=11
Repeat K=21
For(A,0,expr(sub(Str2,R,1
Output(X+AG,Y+Anot(G)+8L,sub("* ",2-[A](X+AG,Y+Anot(G)+8L),1
End
If Ans=31
not(G→G
min(8-Gexpr(sub(Str2,R,1)),max(1,X+sum(DeltaList(K={25,34→X
min(8-not(G)expr(sub(Str2,R,1)),max(1,Y+sum(DeltaList(K={24,26→Y
For(A,0,expr(sub(Str2,R,1
Output(X+AG,Y+Anot(G)+8L,"*
End
Repeat Ans
getKey→K
End
End
DelVar HFor(A,0,expr(sub(Str2,R,1
H+[A](X+AG,Y+Anot(G)+8L→H
End
If not(H
Then
For(A,0,expr(sub(Str2,R,1
1→[A](X+AG,Y+Anot(G)+8L
End
If L
T+1+expr(sub(Str2,R,1→T
If not(L
S+1+expr(sub(Str2,R,1→S
R+1→R
End
End
not(L→L
End
1→X
Ans→Y
randInt(0,1→L
Lbl 1
Repeat S=0 xor T=0
ClrHome
For(A,1,8
Output(A,1+8L,"++++++++
End
Output(1,1+8L,"PLAYER
Output(1,8+8L,L+1
For(A,1,8
For(B,9-8L,16-8L
Output(A,B,sub(Str1,4-[A](A,B),1
End
End
1→X
9→Y
Repeat K=21
Output(X,Y-8L,sub(Str1,4-[A](X,Y-8L),1
min(8,max(1,X+sum(DeltaList(K={25,34→X
min(16,max(9,Y+sum(DeltaList(K={24,26→Y
Output(X,Y-8L,"S
Output(3,4+8L,sub("ABCDEFGH",X,1
Output(3,5+8L,Y-8
Repeat Ans
getKey→K
End
End
If 1<[A](X,Y-8L
Then
Output(5,1+8L,"TRY
Output(6,4+8L,"AGAIN
Pause
Goto 1
End
If not([A](X,Y-8L
Then
Output(5,3+8L,"MISS
3→[A](X,Y-8L
not(L→L
Pause
Goto 1
End
If 1=[A](X,Y-8L
Then
Output(5,3+8L,"HIT!
If L
T-1→T
If not(L
S-1→S
2→[A](X,Y-8L
not(L→L
Pause
End
End
End
DelVar [A]ClrHome
not(L→L
Output(4,5,"PLAYER
Output(4,12,L+1
Output(5,7,"WON!
{8,8→dim([A]
Ans→dim([B]
to0identity(8->[A]
Ans->[B]
B+(K=34)-(K=25
min(8,max(1,Ans→B
C+(K=26)-(K=24
min(16,max(9,Ans→C
tomin(8,max(1,B+(K=34)-(K=25->B
min(16,max(9,C+(K=26)-(K=24->C
If Ans=31
G+not(G)-(G=1→G
End
toIf Ans=31
not(G->G
End
Delvar[A]Delvar[B]
10000
01000
00100
00010
00001
no, problem meishe! (:
identity(A) creates a matrix A rows by A columns, with every number being 0 except for the diagonals.
so identity(5) creates:Code: [Select]10000
01000
00100
00010
00001
in my trick you have 0identity(8), which creates an 8x8 matrix then multiplies it by 0, creating an 8x8 0-filled matrix (:
also, i'm curious: when you have a player move their pieces around, are you drawing the whole map every time they move?
DelVar ADelVar GDelVar DDelVar E"4332221111→Str2
"MH →Str1
0identity(8→[A]
Ans→[B]
1→B
1→C
Repeat A=2
1→R
For(θ,1,8
Output(θ,9-8A,"********
End
Output(1,9-8A,"PLAYER
Output(1,16-8A,A+1
For(I,1,8
For(J,1,8
If A
Output(I,J+8,[B](B,C
If not(A
Output(I,J,[A](B,C
End
End
Repeat R=11
Repeat K=21
For(Q,0,expr(sub(Str2,R,1))-1
Output(B+QG,C+Qnot(G)+8A,(A=1)[B](B,C)+not(A)[A](B,C
End
If K=31
not(G→G
min(8-Gexpr(sub(Str2,R,1))+G,max(1,B+(K=34)-(K=25→B
min(8-not(G)expr(sub(Str2,R,1))+not(G),max(1,C+(K=26)-(K=24→C
For(Q,0,expr(sub(Str2,R,1))-1
Output(B+QG,C+Qnot(G)+8A,sub(Str2,R,1
End
Repeat Ans
getKey→K
End
End
For(Q,0,expr(sub(Str2,R,1))-1
If A
expr(sub(Str2,R,1→[B](B+Q(G=1),C+Qnot(G
If not(A
expr(sub(Str2,R,1→[A](B+Q(G=1),C+Qnot(G
End
R+1→R
End
A+1→A
1→B
Ans→C
End
1→B
9→C
DelVar ARepeat E>49 or D>49
ClrHome
For(I,1,8
For(J,1,8
If A
Output(I,J,sub(Str1,7-[A](I,J),1
If not(A
Output(I,J+8,sub(Str1,7-[B](I,J),1
End
End
For(θ,1,8
Output(θ,1+8A,"********
End
Output(1,1+8A,"PLAYER
Output(1,8+8A,A+1
Repeat K=21
If A
Output(B,C-8,sub(Str1,7-[A](B,C-8),1
If not(A
Output(B,C,sub(Str1,7-[B](B,C-8),1
min(8,max(1,B+(K=34)-(K=25→B
min(16,max(9,C+(K=26)-(K=24→C
Output(B,C-8A,"S
Output(3,4+8A,sub("ABCDEFGH",B,1
Output(3,5+8A,C-8
Repeat Ans
getKey→K
End
End
If A
Then
If [A](B,C-8
Then
D+[A](B,C-8→D
5→[A](B,C-8
Output(6,11,"HIT!
Else
6→[A](B,C-8
Output(7,11,"MISS
End
Else
If [B](B,C-8
Then
E+[B](B,C-8→E
5→[B](B,C-8
Output(6,3,"HIT!
Else
6→[B](B,C-8
Output(7,3,"MISS
End
End
Pause
A+not(A)-(A=1→A
End
ClrHome
Output(4,5,"PLAYER
Output(4,12,A
Output(5,7,"WON!
cool! Do you think it will be small enough to put into ztrumpet's Homescreen Gamepack?
EDIT: 200th post!
:ClrHome
:"3221110000→Str2
:"MH →Str1
:0identity(16→[A]
:DelVar TDelVar SDelVar LRepeat S=20 and T=20
:ClrHome
:For(A,1,8
:Output(A,9-8L,"++++++++
:End
:Output(1,9-8L,"PLAYER
:Output(1,16-8L,L+1
:1→X
:1→Y
:DelVar G1→R
:Repeat R=11
:Repeat K=21
:For(A,0,expr(sub(Str2,R,1
:Output(X+AG,Y+Anot(G)+8L,sub("* ",2-[A](X+AG,Y+Anot(G)+8L),1
:End
:If Ans=31
:not(G→G
:min(8-Gexpr(sub(Str2,R,1)),max(1,X+sum(DeltaList(K={25,34→X
:min(8-not(G)expr(sub(Str2,R,1)),max(1,Y+sum(DeltaList(K={24,26→Y
:For(A,0,expr(sub(Str2,R,1
:Output(X+AG,Y+Anot(G)+8L,"*
:End
:Repeat Ans
:getKey→K
:End
:End
:DelVar HFor(A,0,expr(sub(Str2,R,1
:H+[A](X+AG,Y+Anot(G)+8L→H
:End
:If not(H
:Then
:For(A,0,expr(sub(Str2,R,1
:1→[A](X+AG,Y+Anot(G)+8L
:End
:If L
:T+1+expr(sub(Str2,R,1→T
:If not(L
:S+1+expr(sub(Str2,R,1→S
:R+1→R
:End
:End
:not(L→L
:End
:1→X
:Ans→Y
:randInt(0,1→L
:Lbl 1
:Repeat S=0 xor T=0
:ClrHome
:For(A,1,8
:Output(A,1+8L,"++++++++
:End
:Output(1,1+8L,"PLAYER
:Output(1,8+8L,L+1
:For(A,1,8
:For(B,9-8L,16-8L
:Output(A,B,sub(Str1,4-[A](A,B),1
:End
:End
:1→X
:9→Y
:Repeat K=21
:Output(X,Y-8L,sub(Str1,4-[A](X,Y-8L),1
:min(8,max(1,X+sum(DeltaList(K={25,34→X
:min(16,max(9,Y+sum(DeltaList(K={24,26→Y
:Output(X,Y-8L,"S
:Output(3,4+8L,sub("ABCDEFGH",X,1
:Output(3,5+8L,Y-8
:Repeat Ans
:getKey→K
:End
:End
:If 1<[A](X,Y-8L
:Then
:Output(5,1+8L,"TRY
:Output(6,4+8L,"AGAIN
:Pause
:Goto 1
:End
:If not([A](X,Y-8L
:Then
:Output(5,3+8L,"MISS
:3→[A](X,Y-8L
:not(L→L
:Pause
:Goto 1
:End
:If 1=[A](X,Y-8L
:Then
:Output(5,3+8L,"HIT!
:If L
:T-1→T
:If not(L
:S-1→S
:2→[A](X,Y-8L
:not(L→L
:Pause
:End
:End
:End
:DelVar [A]ClrHome
:not(L→L
:Output(4,5,"PLAYER
:Output(4,12,L+1
:Output(5,7,"WON!
just tried it out, and i am impressed
i rarely play anything in basic anymore, but this one's a keeper. props =D
EDIT: i glanced through the code really quickly and didnt see any obvious optimizations (cept mebbe where you used 1->x:1->y and then later 1->x:ans->y), but i like i said i havent messed with basic in a while and never on a screen this large, so...
DOUBLE EDIT: here's the codeSpoiler For To keep this post smaller:
Making *any* game in a kilobyte or less is quite a task. I myself had a pack of 1 kilobyte games in a folder somewhere but i dont have them anymore...
Ok. So I decided to completely do a rewrite of my Battle Ship program because I thought it was to big and just wasn't satisfied with it. I was also to lazy to just go back and rework the code to work. But anywho, to the program.
I did succeed in making this one smaller by about 62 bytes while still making it better than the previous version (it stands at 990 bytes). It should work perfectly now but if anyone discovers a bug please let me know.
[2ND] - It is the enter button.
[ALPHA] - When setting the maps this is what flips it between vertical and horizontal movement.
[ENTER] - Used to exit the Pause after turns.
This version fixes the previous bugs that I knew about. Like I said before if you find one just tell me and I'll try to fix it.
I can't think of much else to say so I'll let you guys to it. Have fun and enjoy.
Here is the source code in case anyone else can find optimizations. I'm very tired so there is a chance I missed something.Spoiler For To Keep it Shorter:
wow nice update! Pretty small too. I agree it's hard to keep a lot of games under 1 KB. I myself often had an hard time doing it with anything other than tunnelWasn't there the one where...