» Goto page 1, 2, 3  Next

Code:
```ClrDraw:AxesOff GridOff:BackgroundOff 0->Xmin:0->Ymin 264->Xmax:164->Ymax Line(5,117,149,117,1,19,2 Line(5,1,149,1,1,19,2 Line(5,1,5,117,1,19,2 Line(149,1,149,117,1,19,2 For(F,12,107,19 For(P,17,149,20 Circle(P,F,08,19 End:End For(F,7,147,20 Line(F,1,F,117,1,19,2 End For(F,2,116,19 Line(5,F,149,F,1,19,2 End```

So far, that's what I've managed to write to generate the playing field. It takes quite a while. Here is the end result thus far:

Selection will be above the board, text for whose turn it is to the right of.

I'm just curious, should I try to come up with code to fill in the little spots, or just leave it and move on to figuring out how to shade in each of those circles with red and black? :)

Edit:

From here I found the fill in circle routine. It's not perfect, but does a good enough approximation for now. I've determined the following for the bottom left:

8->R
23->X
12->Y

To move up 1, it's 31->Y. To move right one, it's 45->X. This gives me base numbers to move things around with :)

I'm thinking of using a list to handle the 0's, 1's and 2's, but haven't fully set on that. I think on the one side, it'll make things faster and smaller, but matrices would definitely be easier to keep track of. Just something I'm messing with in my thinking.
Looks good, but I would definitely change the background color if you're going to use yellow.
Got any suggestions that isn't red or black, that would look good with yellow? lol

I'll play with it, see what I can figure out
If it helps, here's a routine that would draw both the circle and the square area around it, using your existing F and P values.

Code:
```:For(A,~9,9 :Line(P-9,F+A,P-sqrt(81-A^2),F+A,1,19 :Line(P+9,F+A,P+sqrt(81-A^2),F+A,1,19 :End```

I think this should work. Edit: regarding colors, how about orange instead of yellow?

Edit: Faster and smaller:

Code:
```:For(A,~9,9 sqrt(81-A^2 :Line(P-9,F+A,P-Ans,F+A,1,19 :Line(P+9,F+A,P+Ans,F+A,1,19 :End```
Gray should look fine.
Grey does work! And Yellow because that's what the original board color was

Edit:

Oooh, looking nice. You can easy fix that column if you so decide, but it looks kinda nice that way to me.
Ooh, that looks very nice! You should make a grayscale chess game to rival thepenguin77's, too >.>
I agree as well! If you look at images of Connect 4 on google, you can plainly see those dividers as well.

Now to work on other things, like making things work!

Edit: lol Xeda, I'm thinking that needs ASM. I'm just a silly BASIC coder
tifreak8x wrote:
I agree as well! If you look at images of Connect 4 on google, you can plainly see those dividers as well.

Now to work on other things, like making things work!

Edit: 0x5 Xeda, I'm thinking that needs ASM. I'm just a silly BASIC coder
Not anymore! That's the beauty of the TI-84 Plus C Silver Edition. I bet the logic might be slow in TI-BASIC for an AI, though.
Not if you have grayscale at your disposal And yes, those dividers do make it look nice. It is a small detail, but it makes it look more real.
I'm giving thoughts to that as well. I -think- I might have a solution, but I won't know until I make this workable.
After spending a couple hours on this code, and with the help of Kerm for getting the rendering to go a bit faster, I have this:

What this does currently is move the colored token back and forth across the top, and drop in the first slot. For some reason, it's not working in the others. It does, however, properly stack.

I'll need to write in some more diagnostic stuff so I can figure out what else is going on.

Code currently:

Code:
```ClrDraw:AxesOff GridOff BackgroundOnMedGray 0->Xmin:0->Ymin 264->Xmax:164->Ymax SetUpEditor L1 42->dim(L1 Fill(0,L1 Line(5,117,148,117,1,19,2 Line(5,1,148,1,1,19,2 Line(5,1,5,117,1,19,2 Line(148,1,148,117,1,19,2 For(F,12,107,19 For(P,17,149,20 For(A,~9,9 sqrt(81-A^^2 Line(P-9,F+A,P-Ans,F+A,1,19 Line(P+9,F+A,P+Ans,F+A,1,19 End:End:End 1->W:0->U:7->R While iPart(W)=1 If fPart(W)=0:Then:17->A:126->B:End For(F,0,R,DeltaX sqrt(R^2-F^2 Line(A+F,B+Ans,A+F,B-Ans,1,11+U,1 Line(A-F,B+Ans,A-F,B-Ans,1,11+U,1 End 2->W While W=2 getKey->K If max(K={21,24,26,22 Then For(F,0,R,DeltaX sqrt(R^2-F^2 Line(A+F,B+Ans,A+F,B-Ans,0 Line(A-F,B+Ans,A-F,B-Ans,0 End If K=24 or K=26:Then A-20((K=24 and A>17)-(K=26 and A<155->A 1.1->W:End If K=22:Then ClrDraw:BackgroundOff:DelVar ADelVar FDelVar ZDelVar KDelVar MDelVar LDelVar PDelVar RDelVar thetaDelVar UDelVar WDelVar L1 End If K=21:Then (A+3)/20->L (B-12)/19->Z (6L)-5->M If L1(M)=0:Then While Z>1 and L1(M+1)=0 Text(1,1,Z For(F,0,R,DeltaX sqrt(R^2-F^2 Line(A+F,B+Ans,A+F,B-Ans,0 Line(A-F,B+Ans,A-F,B-Ans,0 End B-19->B:M+1->M (B+7)/19->Z If Z=2 and L1(M)!=0:U->L1(M For(F,0,R,DeltaX sqrt(R^2-F^2 Line(A+F,B+Ans,A+F,B-Ans,1,11+U,1 Line(A-F,B+Ans,A-F,B-Ans,1,11+U,1 End:End U+1->L1(M U+((U=0)-(U=1->U 1->W End:End:End End End:"W=1```

I'll begin tracking down that bug sometime tomorrow.

http://tifreakware.net/tifreak8x/connect4/BA.8xp
Any particular rationale as to why you're representing the board as a list rather than a matrix or string? Just curious!
I'm glad you were able to be productive on HCWP, tifreak8x! As I asked you there, I'll do my best not to pick through this for optimizations yet. I tried to spot your bug, but to no avail.

Edit: I second Elfprince's question; a matrix would make this much easier.
I can think that lists might make general formulas to find 4-in-a-row easier (on diagonals, for example), but I'm not sure. That's what I was asking.
I haven't really used a matrix in a very long time. My experiences with them led me to the facts that

1) Matrices consume a ton of memory very quickly

2) Matrices are a lot slower to deal with than lists, plus take more code to do checks and such for.

Appreciate the support, guys

@Kerm: The reason I don't want help with optimizations at this stage is because the code is far from ready to be optimized. I never worry about optimized code at this point, I just want the thing to work. Once this thing is fully playable, then I can go through and optimize, and ask for help. I'd feel bad if you optimized code, and I had to change it to make something else work down the road and break things

Edit:

Here is an animated. The line isn't missing in the center of the circles, obviously, and it is a little faster than shown in the shot. It takes a little under 40 seconds to render the board.

Edit 2:

I've managed to get it to drop pieces in every section except the last column. :/ It has to do with the list elements going beyond what it is supposed to. The dim( is supposed to be 42, and it keeps going for 43.

Edit 3:

I've gotten it to drop down on the right side all the way without erroring, but now it isn't stopping when it hits to a point where there is one under neath it. Still checking stuff out..
So, for drawing the board it looks like you have some sort of for loop for the squares that is doing some calculations and going all the way through. You can probably take advantage of the symmetry and and only do a quarter of the calculations. For dropping, I probably wouldn't animate it dropping, just for the sake of time.
tifreak8x wrote:
I haven't really used a matrix in a very long time. My experiences with them led me to the facts that

1) Matrices consume a ton of memory very quickly
It can appear so, because squarish matrices grow by O(n^2), but they consume exactly the same amount of memory as lists. An N-element list consumes 9N+a few bytes, say 9N+16 to account for the size bytes and the VAT entry. An NxM matrix takes 9(NxM)+a few bytes, say 9(NxM)+16 bytes. If you need 6x6 elements, you either need a 36-element list or a 6x6 matrix, both of which are going to be about 340 bytes.

Quote:
2) Matrices are a lot slower to deal with than lists, plus take more code to do checks and such for.
For this program, I believe matrices would be faster and require less code.

Quote:
Appreciate the support, guys

@Kerm: The reason I don't want help with optimizations at this stage is because the code is far from ready to be optimized. I never worry about optimized code at this point, I just want the thing to work. Once this thing is fully playable, then I can go through and optimize, and ask for help. I'd feel bad if you optimized code, and I had to change it to make something else work down the road and break things
That makes perfect sense; premature optimization is a bad idea in most languages and projects.
Yeah, I might see about implementing the matrix setup. Might eliminate some of the headaches that I've almost got taken care of :p

Edit:

Also, because Text( fails with backgrounds (Maybe pass that on to TI, about maybe doing better overlaying of characters from the Text( command on backgrounds for the next OS update?), I'm thinking about going with no brackground, and a blue board. What are your all thoughts on this?

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.

»
» Goto page 1, 2, 3  Next
» 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