Hey,

I was wondering if you guys would like to see this set of puzzles ported to the TI 84 CSE: http://www.chiark.greenend.org.uk/~sgtatham/puzzles/

There is full documentation about how the apis in the code work: http://www.chiark.greenend.org.uk/~sgtatham/puzzles/devel/

Also, is this even possible?
Yeah, it's possible , but each one would require a lot of work. I recommend you attack one or two of these rather than the entire page, cause you will be coding for decades. If you wanna do this, I recommend at least doing it in hybrid basic, which will make graphics a lot easier (displaying sprites, rectangles, etc) and faster. Some of these have already been made for the CE in C I believe, so you could get inspired from that code, and some of them have already been made for the CSE in hybrid basic such as Minesweeper, Bridges, Mastermind...
Edit: Also the thing they call same game.
How would I get started with this?
smileytechguy wrote:
How would I get started with this?

It would help if you specified what exactly you're having trouble with. If it is indeed getting started, then I would recommend first planning the user interface, then implementing it.
After that you could plan and implement the game logic.
Well, if I were the one who wanted to do this, here is how I would attack the program:
1) Pick a game
2) Make sure I can think of a way to make all the mechanics work (you don't want to code for a few days and then run into a really big problem you can't solve)
3) Build the game, starting with the actual game code, then working on sprites, then a nice UI, then random optimizations and bugfixing
Lets apply it to an actual game and make a sort of walkthrough of how I would approach it:
1) Lets pick Pegs because to the best of my knowledge, it hasn't been made yet and looks very doable.
2) I will need a matrix with 1s, 2s and 0s (1 for empty circle, 0 for filled circle and 2 for out of bounds). Next, I will need cursor (like an inverted empty rectangle) to move around, and clicking once will make the rectangle stay, then I will check where where the 2nd click is, if it is on a 1, then check if it is 2 positions away in the X or Y axis, if it is, then check if the cell in the middle is a 0, if it is, allow the move by setting the middle to 1, setting the initial to 1 and setting the 2nd click position to 0. If the 2nd position is either a 0 or a 2, immediately discard the move. After each 2nd click, refresh the screen with the possibly modified matrix.
3) Start coding it, starting by making a 7x7 matrix with a cross pattern, then making a getkey routine with the little checking stuff I said above, maybe do something by drawing on the 2 buffers and switching between the two to make things more seamless. In this case, we don't even need sprites, we can just draw circles. Then, make a little custom menu routine, and save the matrices for different levels (Here is a nice place to get creative by thinking of efficient ways to store your levels)
And now we have a game

Now I kinda want to do this, sounds like a fun 1 day project type of program
mr womp womp wrote:
Well, if I were the one who wanted to do this, here is how I would attack the program:
1) Pick a game
2) Make sure I can think of a way to make all the mechanics work (you don't want to code for a few days and then run into a really big problem you can't solve)
3) Build the game, starting with the actual game code, then working on sprites, then a nice UI, then random optimizations and bugfixing
Lets apply it to an actual game and make a sort of walkthrough of how I would approach it:
1) Lets pick Pegs because to the best of my knowledge, it hasn't been made yet and looks very doable.
2) I will need a matrix with 1s, 2s and 0s (1 for empty circle, 0 for filled circle and 2 for out of bounds). Next, I will need cursor (like an inverted empty rectangle) to move around, and clicking once will make the rectangle stay, then I will check where where the 2nd click is, if it is on a 1, then check if it is 2 positions away in the X or Y axis, if it is, then check if the cell in the middle is a 0, if it is, allow the move by setting the middle to 1, setting the initial to 1 and setting the 2nd click position to 0. If the 2nd position is either a 0 or a 2, immediately discard the move. After each 2nd click, refresh the screen with the possibly modified matrix.
3) Start coding it, starting by making a 7x7 matrix with a cross pattern, then making a getkey routine with the little checking stuff I said above, maybe do something by drawing on the 2 buffers and switching between the two to make things more seamless. In this case, we don't even need sprites, we can just draw circles. Then, make a little custom menu routine, and save the matrices for different levels (Here is a nice place to get creative by thinking of efficient ways to store your levels)
And now we have a game

Now I kinda want to do this, sounds like a fun 1 day project type of program

I would do it, if you hadn't spoiled the fun by telling us how to do it
Kay, it's been a few hours, I've made the game... I have a problem D:
Here is my code, currently, it kinda works, but playing with it a little, you will see that it actually has a very major bug that I haven't yet fixed. I've procrastinated the fixing of that bug by working on other things like the icon and adding the DoorsCSE detection code. I still need to add the main menu where I plan to add other maps, and possibly store them in a better way than just the plain matrix, although it's only like 49 elements, which isn't too bad.
EDIT: Added the main menu, a different level, and fixed the critical bug, its was a stupid mistake (I forgot to close a parenthesis when I had to)
Code:
```:DCS "0000001111000000000011111111000000011111111110000011188888811100011188888888111001188889988881101118889999888111111889999998811111188999999881111118889999888111011888899888811001118888888811100011188888811100000111111111100000001111111100000000001111000000 If 80>det([[20 Then    Disp "G[|e][t] Doo[r][s] CSE [t]o [r]|u[n] [t]hi[s]:","h[t][t][p]://[|d][|c][s].[|c][|e]m[|e][t][|e][|c]h.[n][|e][t]    Return End real(0,1,1 real(8,1,0 real(0,3,4,149 "Pegs CSE real(6,0,45,4,28 "Cross/Octagon/7x7/8x8/Quit real(6,0,32,34,28,47 1->F Repeat max(K={21,105,45    ">    real(6,0,24,26+8F,8    Repeat K       getKey->K    End    ">    If max(K={25,34    real(6,0,24,26+8F,149    F+(K=34)-(K=25->F    F-5(F=6)+5not(F->F End If K=45 or F=5 Return If F=1 Then    [[2,2,0,0,0,2,2][2,2,0,0,0,2,2][0,0,0,0,0,0,0][0,0,0,1,0,0,0][0,0,0,0,0,0,0][2,2,0,0,0,2,2][2,2,0,0,0,2,2]]->[A]    32->E End If F=2 Then    [[2,2,0,0,0,2,2][2,0,0,0,0,0,2][0,0,0,0,0,0,0][0,0,0,0,0,0,0][0,0,0,0,0,0,0][2,0,0,0,0,0,2][2,2,0,0,1,2,2]]->[A]    36->E End If F=3 Then    DelVar [A]:{7,7->dim([A]    1->[A](1,1    48->E End If F=4 Then    DelVar [A]:{8,8->dim([A]    1->[A](1,1    63->E End real(8,1,0 real(0,3,4,223 "P[|e]g[s] CSE real(6,0,45,4,21 For(A,1,7+(F=4    For(B,1,7+(F=4       [A](A,B)->C       If C=1 or not(C       Then          real(7,9,25+12A,10+12B,12,12,255          real(7,12,31+12A,16+12B,4,26+123C       End End:End DelVar K4->A:4->B {0,0->L1 While E!=1    real(7,8,26+12A,11+12B,11,11    Repeat dim(L1)=6 or K=45       Repeat K          getKey->K       End       If K!=21       Then          real(7,8,26+12A,11+12B,11,11          Else          augment(L1,{A,B->L1       End       If K=24 and A>1       A-([A](A-1,B)!=2->A       If K=26 and A<(7+(F=4)       A+([A](A+1,B)!=2->A       If K=25 and B>1       B-([A](A,B-1)!=2->B       If K=34 and B<(7+(F=4       B+([A](A,B+1)!=2->B       real(7,8,26+12A,11+12B,11,11    End    If K=45    Return    If abs(L1(6)-L1(4))=2 xor abs(L1(5)-L1(3))=2    Then       A->C:B->D       If L1(6)!=L1(4)       Then          max(L1(6),L1(4)          Ans-1->D          Else          max(L1(5),L1(3)          Ans-1->C       End              If not([A](C,D)) and not([A](L1(3),L1(4))) and 1=[A](L1(5),L1(6       Then          E-1->E          real(7,12,31+12C,16+12D,4,149          1->[A](C,D          real(7,12,31+12L1(3),16+12L1(4),4,149          1->[A](L1(3),L1(4          real(7,12,31+12A,16+12B,4,26          0->[A](A,B       End    End    real(7,8,26+12L1(3),11+12L1(4),11,11    2->dim(L1 End Pause ```

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.

»
» All times are GMT - 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