Introducing, a first look at what I want to make into a full game: Bejeweled 84+!

Click on the image to jump to the latest version!



As of now, it just loads the graphics, creates a random board with no match checking (yet), and displays that board.

If anyone's wondering how I did all that, one word: textsprites.

Download here or here. Tell me what you think!

EDIT: Source code for the curious (processed with TokenIDE):

Code:
ClrDraw
AxesOff
ZStandard
104→Xmax
⁻72→Ymin
ZInteger
For(A,0,74
If A<11
Text(57,A+15,sub("?Y﹢.﹢Y?  ",A+1,1
If A<21
Text(52,A+10,sub("?Y'([i]QJ'['JQ[i]('Y?  ",A+1,1
If A<25
Text(47,A+8,sub("﹢[s]!!]:XX.χ[i][i][i]χ.XX:]!![s]﹢  ",A+1,1
If A<28
Text(42,A+8,sub("  .Jẋ[e]|u([s]:[s](|u[e][e]J.   ??  ",A+1,1
If A<41
Then
Text(37,A,sub("''?    Y'Y]|uQYYY? Y'^Y''Y1|uQYYY?  ",A+1,1
Text(32,A,sub(" plotsquare[[2JQ!Jplotsquare[e]plotsquareJ[e]plotsquareplotsquare[e]plotsquareJ plotsquare['??YJplotsquare[e]plotsquareplotsquare [e]plotsquareplotsquareplotsquare2  ",A+1,1
Text(27,A,sub("JJJJJJJ.              .          plotsquare﹢  ",A+1,1
End
Text(5,A+11,sub("[[JJ[i]Q' 'QplotsquareJJJJ JJJplotsquareQ' 'QplotsquareJJJJ  YQplotsquare('(plotsquareQY  'QplotsquareJJJJ 'QplotsquareJJJ 'QplotsquareJJJJ [[JJplotsquareQ'  ",A+1,1
Text(0,A+11,sub("[[]]X[( |u[]]]?     [[ |u[]]]? [[.     .[[ |u[]]]? [[     |u[]]]? [[??Y[|u  ",A+1,1
End
{11,21,36,56,71,77
For(A,1,6
Line(Ans(A),0,Ans(A)+4,0
End
{31,42,51,62
For(A,1,4
Line(Ans(A),0,Ans(A)+1,0
End
⁻14
Line(2,Ans,36,Ans
Line(⁻Ans,2Ans,24,2Ans
{2,⁻Ans,26
For(A,1,3
Line(Ans(A),⁻22,Ans(A)+10,⁻22
End
26
Line(12,⁻24,12,⁻Ans
Line(Ans,⁻24,Ans,⁻Ans
⁻16
Line(0,Ans,0,⁻20
Line(38,Ans,38,⁻20
Line(⁻Ans,⁻12,19,⁻13
13
Line(22,⁻12,19,⁻Ans
Line(40,⁻Ans,40,⁻61
{1,15,37,15,1,21,37,21,Ans,23,25,23,Ans,27,25,27,15,Ans,23,Ans
For(A,1,10
Pt-On(Ans(2A-1),⁻Ans(2A
End
⁻12
Line(41,Ans,92,Ans
Line(41,Ymin,92,Ymin
Line(42,Ans,42,Ymin
Line(92,Ans,92,Ymin
DelVar [A]{8,8→dim([A]
For(A,1,8
For(B,1,8
randInt(1,7→[A](A,B
StorePic 1
For(C,0,7
Text(7+6A,38+6B+C,sub(sub("[[i][[[(ẋXẋ(+([(+(X]X([QJ|u[|uJ(X[i][(",5[A](A,B)-4,5)+"   ",C+1,1
End
RecallPic 1
End
End
Pause
Pretty cool! Are you using hybrid or regular basic?
LuckyGhost wrote:
Pretty cool! Are you using hybrid or regular basic?

I'm gonna be using pure TI-BASIC for everything, hopefully. At this point, it is all pure TI-BASIC.

Also, I'm testing a system of generating boards that have no matches before you start.
Your text sprites look really great there. I think I've only seen Elfprince13 and perhaps Bsparks use text sprites that effectively before, so I salute you for going that route. Keep up the great work, and I can't wait to see how this progresses.
KermMartian wrote:
Your text sprites look really great there. I think I've only seen Elfprince13 and perhaps Bsparks use text sprites that effectively before, so I salute you for going that route. Keep up the great work, and I can't wait to see how this progresses.

Thank you so much. It took me a while to manually convert the images to text and type them in on my calculator XD
Bump.

New code and binary! You can now switch gems! Match checking will come later.

Press 2nd on a square, and the corners of the selection box will turn black. Press 2nd on that same square to deselect, and an adjacent square to switch them. If you press 2nd on any other square, it deselects the selected square and selects the new one. So, basically like the CSE version Razz



Source code for the curious:


Code:
ClrDraw
AxesOff
ZStandard
104→Xmax
⁻72→Ymin
ZInteger
For(A,0,74
If A<11
Text(57,A+15,sub("?Y﹢.﹢Y?  ",A+1,1
If A<21
Text(52,A+10,sub("?Y'([i]QJ'['JQ[i]('Y?  ",A+1,1
If A<25
Text(47,A+8,sub("﹢[s]!!]:XX.χ[i][i][i]χ.XX:]!![s]﹢  ",A+1,1
If A<28
Text(42,A+8,sub("  .Jẋ[e]|u([s]:[s](|u[e][e]J.   ??  ",A+1,1
If A<41
Then
Text(37,A,sub("''?    Y'Y]|uQYYY? Y'^Y''Y1|uQYYY?  ",A+1,1
Text(32,A,sub(" plotsquare[[2JQ!Jplotsquare[e]plotsquareJ[e]plotsquareplotsquare[e]plotsquareJ plotsquare['??YJplotsquare[e]plotsquareplotsquare [e]plotsquareplotsquareplotsquare2  ",A+1,1
Text(27,A,sub("JJJJJJJ.              .          plotsquare﹢  ",A+1,1
End
Text(5,A+11,sub("[[JJ[i]Q' 'QplotsquareJJJJ JJJplotsquareQ' 'QplotsquareJJJJ  YQplotsquare('(plotsquareQY  'QplotsquareJJJJ 'QplotsquareJJJ 'QplotsquareJJJJ [[JJplotsquareQ'  ",A+1,1
Text(0,A+11,sub("[[]]X[( |u[]]]?     [[ |u[]]]? [[.     .[[ |u[]]]? [[     |u[]]]? [[??Y[|u  ",A+1,1
End
{11,21,36,56,71,77
For(A,1,6
Line(Ans(A),0,Ans(A)+4,0
End
{31,42,51,62
For(A,1,4
Line(Ans(A),0,Ans(A)+1,0
End
⁻14
Line(2,Ans,36,Ans
Line(⁻Ans,2Ans,24,2Ans
{2,⁻Ans,26
For(A,1,3
Line(Ans(A),⁻22,Ans(A)+10,⁻22
End
26
Line(12,⁻24,12,⁻Ans
Line(Ans,⁻24,Ans,⁻Ans
⁻16
Line(0,Ans,0,⁻20
Line(38,Ans,38,⁻20
Line(⁻Ans,⁻12,19,⁻13
13
Line(22,⁻12,19,⁻Ans
Line(40,⁻Ans,40,⁻61
{1,15,37,15,1,21,37,21,Ans,23,25,23,Ans,27,25,27,15,Ans,23,Ans
For(A,1,10
Pt-On(Ans(2A-1),⁻Ans(2A
End
⁻12
Line(41,Ans,92,Ans
Line(41,Ymin,92,Ymin
Line(42,Ans,42,Ymin
Line(92,Ans,92,Ymin
DelVar [A]{8,8→dim([A]
For(A,1,8
For(B,1,8
randInt(1,7→[A](A,B
End
End
Repeat [A]=[B]
[A]→[B]
For(X,0,1
For(A,1,8
Matr►list([A],A,L₁
not(DeltaList(DeltaList(L₁→L₁
For(B,1,6max(Ans
If L₁(B
Then

Repeat Ans≠[A](B+1,A
randInt(1,7→[A](B,A
End

End

End
End
[A]ᵀ→[A]
End
End
"[[i][[[(ẋXẋ(+([(+(X]X([QJ|u[|uJ(X[i][(→Str1
For(A,1,8
For(B,1,8
For(C,0,7
Text(7+6A,38+6B+C,sub(sub(Str1,5[A](A,B)-4,5)+"   ",C+1,1
End
Line(92,⁻12,92,Ymin
End
End

DelVar SDelVar T1→Z
1→θ
Repeat K=45
Line(38+6Z,⁻7-6θ,42+6Z,⁻7-6θ
Line(38+6Z,⁻13-6θ,42+6Z,⁻13-6θ
Line(37+6Z,⁻8-6θ,37+6Z,⁻12-6θ
Line(43+6Z,⁻8-6θ,43+6Z,⁻12-6θ
getKey→K
If K
Then
Line(38+6Z,⁻7-6θ,42+6Z,⁻7-6θ,0
Line(38+6Z,⁻13-6θ,42+6Z,⁻13-6θ,0
Line(37+6Z,⁻8-6θ,37+6Z,⁻12-6θ,0
Line(43+6Z,⁻8-6θ,43+6Z,⁻12-6θ,0
End
If K=21
Then

If S and T and (Z=S or θ=T) and 2>abs(Z-S)+abs(θ-T
Then
Pt-Off(37+6S,⁻7-6T
Pt-Off(43+6S,⁻7-6T
Pt-Off(37+6S,⁻13-6T
Pt-Off(43+6S,⁻13-6T
[A](T,S→A
[A](θ,Z→[A](T,S
A→[A](θ,Z
"     
Text(7+6θ,38+6Z,Ans
Text(7+6T,38+6S,Ans
StorePic 1
For(C,0,7
Text(7+6θ,38+6Z+C,sub(sub(Str1,5[A](θ,Z)-4,5)+"   ",C+1,1
End
RecallPic 1
StorePic 1
For(C,0,7
Text(7+6T,38+6S+C,sub(sub(Str1,5[A](T,S)-4,5)+"   ",C+1,1
End
RecallPic 1
0→S
0→T

Else
If S and T
Then
Pt-Off(37+6S,⁻7-6T
Pt-Off(43+6S,⁻7-6T
Pt-Off(37+6S,⁻13-6T
Pt-Off(43+6S,⁻13-6T
End
Z→S
θ→T
Pt-On(37+6S,⁻7-6T
Pt-On(43+6S,⁻7-6T
Pt-On(37+6S,⁻13-6T
Pt-On(43+6S,⁻13-6T
End

End
Z+(K=26 and Z<8)-(K=24 and Z>1→Z
θ+(K=34 and θ<8)-(K=25 and θ>1→θ

End


Download here or here. Tell me what you think!
Bump.

Newer code STILL! After 3 days of work, it is now possible to actually match gems, and play like a regular Bejeweled game! Levels and points will come later Wink



Source code for the curious (I myself think it's messy, but it works! and well at that!):

Code:
G-T
Full
ClrDraw
AxesOff
ZStandard
104→Xmax
⁻72→Ymin
ZInteger
For(A,0,74
If A<11
Text(57,A+15,sub("?Y﹢.﹢Y?  ",A+1,1
If A<21
Text(52,A+10,sub("?Y'([i]QJ'['JQ[i]('Y?  ",A+1,1
If A<25
Text(47,A+8,sub("﹢[s]!!]:XX.χ[i][i][i]χ.XX:]!![s]﹢  ",A+1,1
If A<28
Text(42,A+8,sub("  .Jẋ[e]|u([s]:[s](|u[e][e]J.   ??  ",A+1,1
If A<41
Then
Text(37,A,sub("''?    Y'Y]|uQYYY? Y'^Y''Y1|uQYYY?  ",A+1,1
Text(32,A,sub(" plotsquare[[2JQ!Jplotsquare[e]plotsquareJ[e]plotsquareplotsquare[e]plotsquareJ plotsquare['??YJplotsquare[e]plotsquareplotsquare [e]plotsquareplotsquareplotsquare2  ",A+1,1
Text(27,A,sub("JJJJJJJ.              .          plotsquare﹢  ",A+1,1
End
Text(5,A+11,sub("[[JJ[i]Q' 'QplotsquareJJJJ JJJplotsquareQ' 'QplotsquareJJJJ  YQplotsquare('(plotsquareQY  'QplotsquareJJJJ 'QplotsquareJJJ 'QplotsquareJJJJ [[JJplotsquareQ'  ",A+1,1
Text(0,A+11,sub("[[]]X[( |u[]]]?     [[ |u[]]]? [[.     .[[ |u[]]]? [[     |u[]]]? [[??Y[|u  ",A+1,1
End
{11,21,36,56,71,77
For(A,1,6
Line(Ans(A),0,Ans(A)+4,0
End
{31,42,51,62
For(A,1,4
Line(Ans(A),0,Ans(A)+1,0
End
14
Line(2,⁻Ans,36,⁻Ans
Line(Ans,⁻30,24,⁻30
{2,Ans,26
For(A,1,3
Line(Ans(A),⁻22,Ans(A)+10,⁻22
End
12
Line(Ans,⁻2Ans,Ans,⁻28
Line(26,⁻2Ans,26,⁻28
⁻16
Line(0,Ans,0,⁻20
Line(38,Ans,38,⁻20
Line(⁻Ans,⁻12,19,⁻13
13
Line(22,⁻12,19,⁻Ans
Line(40,⁻Ans,40,⁻61
{1,15,37,15,1,21,37,21,Ans,23,25,23,Ans,29,25,29,15,Ans,23,Ans
For(A,1,10
Pt-On(Ans(2A-1),⁻Ans(2A
End
⁻12
Line(41,Ans,92,Ans
Line(41,Ymin,92,Ymin
Line(42,Ans,42,Ymin
Line(92,Ans,92,Ymin
StorePic 2
Text(25,49,"Generating
Text(31,44,"boardplease
Text(37,48,"be patient
DelVar [A]{8,8→dim([A]
For(A,1,8
For(B,1,8
randInt(1,7→[A](A,B
End
End
Repeat [A]=[B]
[A]→[B]
For(X,0,1
For(A,1,8
Matr►list([A],A,L₁
not(DeltaList(DeltaList(L₁→L₁
For(B,1,6max(Ans
If L₁(B
Then
Repeat Ans≠[A](B+1,A
randInt(1,7→[A](B,A
End
End
End
End
[A]ᵀ→[A]
End
End
"[[i][[[(ẋXẋ(+([(+(X]X([QJ|u[|uJ(X[i][(→Str1
For(A,1,8
For(B,1,8
For(C,0,7
Text(7+6A,38+6B+C,sub(sub(Str1,5[A](A,B)-4,5)+"   ",C+1,1
End
Line(92,⁻12,92,Ymin
End
End
DelVar SDelVar T1→Z
1→θ
Repeat K=45
Line(38+6Z,⁻7-6θ,42+6Z,⁻7-6θ
Line(38+6Z,⁻13-6θ,42+6Z,⁻13-6θ
Line(37+6Z,⁻8-6θ,37+6Z,⁻12-6θ
Line(43+6Z,⁻8-6θ,43+6Z,⁻12-6θ
getKey→K
If K
Then
Line(38+6Z,⁻7-6θ,42+6Z,⁻7-6θ,0
Line(38+6Z,⁻13-6θ,42+6Z,⁻13-6θ,0
Line(37+6Z,⁻8-6θ,37+6Z,⁻12-6θ,0
Line(43+6Z,⁻8-6θ,43+6Z,⁻12-6θ,0
End
If K=21
Then
If S and T and (Z=S or θ=T) and 2>abs(Z-S)+abs(θ-T
Then
Pt-Off(37+6S,⁻7-6T
Pt-Off(43+6S,⁻7-6T
Pt-Off(37+6S,⁻13-6T
Pt-Off(43+6S,⁻13-6T
[A](T,S→A
[A](θ,Z→[A](T,S
DelVar FDelVar NA→[A](θ,Z
Repeat not(M
DelVar M[A]→[B]
For(X,0,1
For(A,1,8
Matr►list([A],A,L₁
not(DeltaList(DeltaList(L₁→L₁
For(B,1,6max(L₁
If L₁(B
Then
1→M
1→N
For(C,0,2
{B+C,A
If X
{A,B+C
Text(7+6Ans(1),38+6Ans(2),"     
0→[B](Ans(1),Ans(2
End
End
End
End
[A]ᵀ→[A]
End
If M
Then
[B]→[A]
If not(F
Then
For(X,0,1
{T,S
If X
{θ,Z
Text(7+6Ans(1),38+6Ans(2),"     
StorePic 1
For(C,0,7
If [A](Ans(1),Ans(2
Text(7+6Ans(1),38+6Ans(2)+C,sub(sub(Str1,5[A](Ans(1),Ans(2))-4,5)+"   ",C+1,1
End
RecallPic 1
End
1→F
End
For(A,1,8
Matr►list([A],A,L₁
DelVar O1→D
Repeat 8=sum(L₁=L₂
L₁→L₂
9→B
Repeat B<3 or not(L₁(B
B-1→B
End
If not(L₁(B
Then
max(B,D→D
For(C,B,2,⁻1
L₁(C-1→L₁(C
End
0→L₁(1
End
End
For(B,1,D
If not(L₁(B
Then
1→O
randInt(1,7→L₁(B
End
End
If O
Then
List►matr(L₁,[B]
rowSwap(augment([A],[B])ᵀ,A,9)ᵀ→[A]
{8,8→dim([A]
For(B,D,1,⁻1
Text(7+6B,38+6A,"     
StorePic 1
For(C,0,7
Text(7+6B,38+6A+C,sub(sub(Str1,5[A](B,A)-4,5)+"   ",C+1,1
End
RecallPic 1
End
End
End
Else
If not(N
Then
[A](T,S→A
[A](θ,Z→[A](T,S
A→[A](θ,Z
End
End
End
DelVar SDelVar T
Else
If S and T
Then
Pt-Off(37+6S,⁻7-6T
Pt-Off(43+6S,⁻7-6T
Pt-Off(37+6S,⁻13-6T
Pt-Off(43+6S,⁻13-6T
End
Z→S
θ→T
Pt-On(37+6S,⁻7-6T
Pt-On(43+6S,⁻7-6T
Pt-On(37+6S,⁻13-6T
Pt-On(43+6S,⁻13-6T
End
End
Z+(K=26 and Z<-(K=24 and Z>1→Z
θ+(K=34 and θ<-(K=25 and θ>1→θ
End


Download here and here. Tell me what you think! Also, test this to your heart's content, as this now has the main game mechanics!
Why is it that text sprites work on the monochrome calculators? When I ran it on my TI-84+CSE just to see if the text sprites would work, stuff kept getting covered up with white, so it didn't work at all.
readroof2 wrote:
Why is it that text sprites work on the monochrome calculators? When I ran it on my TI-84+CSE just to see if the text sprites would work, stuff kept getting covered up with white, so it didn't work at all.

How textsprites work on the monochrome calculators is that each character has a certain pattern of pixels on their leftmost side. For example:

Code:
##
  #
 #
   
 #

has (from top to bottom) 10000, and

Code:
 #
#
#
#
 #

has (from top to bottom) 01110.
These are displayed right next to each other (I mean by the PIXEL), and each left-hand pattern is drawn from left to right to create an image.

For example, this code on an 83+ or higher will show you how a donut picture is made (press ENTER to see it draw character by character):

Code:
ClrDraw
For(A,0,7
Text(0,A,sub("([X[(  ",A+1,1      //2 spaces
Pause
End


My program doesn't work on the CSE or CE mainly due to 1. the coordinates for drawing them being different, and 2. the different fonts of both.
Text sprites are possible on the CSE and CE models, but requires some coordinates adjusting. This is how JWinslow23's game looked like when I tried spacing out each ASCII character by 1 pixel instead of 1 and changed the text Y location:



Unfortunately, the CSE adds gaps of white pixels both at the top and bottom of text rather than just the bottom, so you can't use text sprites to create large sprites in height, since there will be a white gap between each row of characters.
One concern, while we're talking about the game's overall design: I'm not sure that putting the PopCap logo on it is a great idea. While it's a respectful way to acknowledge the original publishers of the game, it also appears to imply that you're affiliated with PopCap and have permission to use their logo, to me. Smile I would recommend removing it.
KermMartian wrote:
One concern, while we're talking about the game's overall design: I'm not sure that putting the PopCap logo on it is a great idea. While it's a respectful way to acknowledge the original publishers of the game, it also appears to imply that you're affiliated with PopCap and have permission to use their logo, to me. Smile I would recommend removing it.

Noted. No PopCap logo in the next update, just the jewel.
My progress on game-over checking:

* My List►Matr hack didn't work out
* Using augment({0,0},seq(sum( instead of the long augment( line is 10 ms slower.
* Typing out 10^ for small integer powers is actually faster than using the 10^( token, by a couple of ms. This should save ~20 ms per iteration, but not as much as precomputation would.
* I'm still trying out algorithm changes, but I don't know if anything can be faster. Your implementation in two pieces instead of fourteen has motivated me to optimize as much as I can.

EDIT: The augment(seq( was slow (73 ms), but unrolling it is only 31 ms, which saves about 30 ms net, and at the cost of only 8 bytes. Here's my current code with timing:

Code:
;3x2 checking, about 250 ms + list store time

For(D,0,1                    ;negligible
Matr►list([A],1,L2           ;?
For(C,2,8                    ;1
L2->L1                       ;?
Matr►list([A],C,L2           ;?
.1(10^L1+10^L2(L1≠L2         ;?
{0,0,sum(Ans,1,3),sum(Ans,2,4),sum(Ans,3,5),sum(Ans,4,6),sum(Ans,5,7),sum(Ans,6,8   ;31
If .3≤max(max(fPart(Ans10^~L1)),fPart(Ans10^~L2   ;?
---break the loop; possible move found---
End
[A]ᵀ->A                      ;?
End

;4x1 checking line, 74 ms

max(.3010299957=abs(ΔList(log(abs(ΔList(ΔList(10^L1
Bump.

This is almost a full game now! I just need to optimize some stuff (maybe) and add game saving. Smile

Any testers of this new game are welcome. I tried a bold font on the Game Over (or, more correctly, "NO MORE MOVES") screen (but it's not in the screenie), hope it looks cool.



Source code for the absolutely insane:

Code:
G-T
Full
ClrDraw
AxesOff
ZStandard
104→Xmax
⁻72→Ymin
ZInteger
For(A,0,74
If A<11
Text(51,A+15,sub("?Y﹢.﹢Y?  ",A+1,1
If A<21
Text(46,A+10,sub("?Y'([i]QJ'['JQ[i]('Y?  ",A+1,1
If A<25
Text(41,A+8,sub("﹢[s]!!]:XX.χ[i][i][i]χ.XX:]!![s]﹢  ",A+1,1
If A<22
Text(36,A+8,sub("  .J[e][e]|u([s]:[s](|u[e][e]J. ",A+1,1
Text(5,A+11,sub("[[JJ[i]Q' 'QplotsquareJJJJ JJJplotsquareQ' 'QplotsquareJJJJ  YQplotsquare('(plotsquareQY  'QplotsquareJJJJ 'QplotsquareJJJ 'QplotsquareJJJJ [[JJplotsquareQ'  ",A+1,1
Text(0,A+11,sub("[[]]X[( |u[]]]?     [[ |u[]]]? [[.     .[[ |u[]]]? [[     |u[]]]? [[??Y[|u  ",A+1,1
End
{11,21,36,56,71,77
For(A,1,6
Line(Ans(A),0,Ans(A)+4,0
End
{31,42,51,62
For(A,1,4
Line(Ans(A),0,Ans(A)+1,0
End
14
Line(2,⁻Ans,36,⁻Ans
Line(Ans,⁻30,24,⁻30
{2,Ans,26
For(A,1,3
Line(Ans(A),⁻22,Ans(A)+10,⁻22
End
12
Line(Ans,⁻2Ans,Ans,⁻28
Line(26,⁻2Ans,26,⁻28
⁻16
Line(0,Ans,0,⁻20
Line(38,Ans,38,⁻20
Line(⁻Ans,⁻12,19,⁻13
13
Line(22,⁻12,19,⁻Ans
Line(40,⁻Ans,40,⁻61
{1,15,1,21,37,21,Ans,23,Ans,29,25,29,15,Ans,23,Ans
For(A,1,8
Pt-On(Ans(2A-1),⁻Ans(2A
End
⁻12
Line(41,Ans,92,Ans
Line(41,Ymin,92,Ymin
Line(42,Ans,42,Ymin
Line(92,Ans,92,Ymin
"[[i][[[(ẋXẋ(+([(+(X]X([QJ|u[|uJ(X[i][(→Str1
DelVar PDelVar V30→E
StorePic 2
Lbl A
DelVar FRecallPic 2
Text(15,2,P
Pt-On(37,⁻15
Text(23,14,V
Pt-On(25,⁻23
Text(25,49,"Generating
Text(31,44,"boardplease
Text(37,48,"be patient
DelVar [A]{8,8→dim([A]
For(A,1,8
For(B,1,8
randInt(1,7→[A](A,B
End
End
Repeat [A]=[B]
[A]→[B]
For(X,0,1
For(A,1,8
Matr►list([A],A,L₁
not(DeltaList(DeltaList(L₁→L₁
For(B,1,6max(Ans
If L₁(B
Then
Repeat Ans≠[A](B+1,A
randInt(1,7→[A](B,A
End
End
End
End
[A]ᵀ→[A]
End
End
For(A,1,8
For(B,1,8
For(C,0,7
Text(7+6A,38+6B+C,sub(sub(Str1,5[A](A,B)-4,5)+"   ",C+1,1
End
Line(92,⁻12,92,Ymin
End
End
DelVar SDelVar T1→Z
Ans→θ
DelVar L₁→W
Repeat K=45 or F≥E or L=15 and F<E
Line(38+6Z,⁻7-6θ,42+6Z,⁻7-6θ
Line(38+6Z,⁻13-6θ,42+6Z,⁻13-6θ
Line(37+6Z,⁻8-6θ,37+6Z,⁻12-6θ
Line(43+6Z,⁻8-6θ,43+6Z,⁻12-6θ
getKey→K
If Ans
Then
Line(38+6Z,⁻7-6θ,42+6Z,⁻7-6θ,0
Line(38+6Z,⁻13-6θ,42+6Z,⁻13-6θ,0
Line(37+6Z,⁻8-6θ,37+6Z,⁻12-6θ,0
Line(43+6Z,⁻8-6θ,43+6Z,⁻12-6θ,0
End
If Ans=21
Then
If S and T and (Z=S or θ=T) and 2>abs(Z-S)+abs(θ-T
Then
Pt-Off(37+6S,⁻7-6T
Pt-Off(43+6S,⁻7-6T
Pt-Off(37+6S,⁻13-6T
Pt-Off(43+6S,⁻13-6T
[A](T,S→A
[A](θ,Z→[A](T,S
DelVar GDelVar NA→[A](θ,Z
Repeat not(M
DelVar M[A]→[B]
For(X,0,1
For(A,1,8
Matr►list([A],A,L₁
not(DeltaList(DeltaList(L₁→L₁
For(B,1,6max(L₁
If L₁(B
Then
P+(3^M+2N+2→P
Text(15,2,P
Pt-On(37,⁻15
F+(3^M+2N+2→F
Line(41,⁻62,41,⁻62+min(49,49F/E
N+not(M→N
M+1→M
For(C,0,2
{B+C,A
If X
{A,B+C
Text(7+6Ans(1),38+6Ans(2),"     
0→[B](Ans(1),Ans(2
End
End
End
End
[A]ᵀ→[A]
End
If M
Then
1→W
[B]→[A]
If not(G
Then
For(X,0,1
{T,S
If X
{θ,Z
Text(7+6Ans(1),38+6Ans(2),"     
StorePic 1
For(C,0,7
If [A](Ans(1),Ans(2
Text(7+6Ans(1),38+6Ans(2)+C,sub(sub(Str1,5[A](Ans(1),Ans(2))-4,5)+"   ",C+1,1
End
RecallPic 1
End
1→G
End
For(A,1,8
Matr►list([A],A,L₁
DelVar O1→D
Repeat 8=sum(L₁=L₂
L₁→L₂
9→B
Repeat B<3 or not(L₁(B
B-1→B
End
If not(L₁(B
Then
max(B,D→D
For(C,B,2,⁻1
L₁(C-1→L₁(C
End
0→L₁(1
End
End
For(B,1,D
If not(L₁(B
Then
1→O
randInt(1,7→L₁(B
End
End
If O
Then
List►matr(L₁,[B]
rowSwap(augment([A],[B])ᵀ,A,9)ᵀ→[A]
{8,8→dim([A]
For(B,D,1,⁻1
Text(7+6B,38+6A,"     
StorePic 1
For(C,0,7
Text(7+6B,38+6A+C,sub(sub(Str1,5[A](B,A)-4,5)+"   ",C+1,1
End
RecallPic 1
End
End
End
Else
If not(N
Then
[A](T,S→A
[A](θ,Z→[A](T,S
A→[A](θ,Z
End
End
End
DelVar SDelVar T
Else
If S and T
Then
Pt-Off(37+6S,⁻7-6T
Pt-Off(43+6S,⁻7-6T
Pt-Off(37+6S,⁻13-6T
Pt-Off(43+6S,⁻13-6T
End
Z→S
θ→T
Pt-On(37+6S,⁻7-6T
Pt-On(43+6S,⁻7-6T
Pt-On(37+6S,⁻13-6T
Pt-On(43+6S,⁻13-6T
End
End
Z+(K=26 and Z<8)-(K=24 and Z>1→Z
θ+(K=34 and θ<8)-(K=25 and θ>1→θ
If W and F<E
DelVar I1→L
If L and L<16
Then
Matr►list([A],1,L₂
For(A,2,8
L₂→L₁
Matr►list([A],A,L₂
.1(10^L₁+10^L₂)(L₁≠L₂
{0,0,sum(Ans,1,3),sum(Ans,2,4),sum(Ans,3,5),sum(Ans,4,6),sum(Ans,5,7),sum(Ans,6,8
If .3≤max(max(fPart(Ans10^⁻L₁),fPart(Ans10^⁻L₂))) or max(.3010299957=abs(DeltaList(log(abs(DeltaList(DeltaList(10^L₁
Then
16→L
8→A
Else
L+1→L
End
End
If L=16 and I or L≠16
[A]ᵀ→[A]
L≠16→I
End
not(L→W
If L=15 and F<E
Then
ClrDraw
RecallPic 2
Text(15,2,P
Pt-On(37,⁻15
Text(23,14,V
Pt-On(25,⁻23
For(X,0,1
Text(⁻1,21,X+47,"NO MORE
Text(⁻1,29,X+53,"MOVES
If not(X
StorePic 1
End
RecallPic 1
Text(37,49,"Press ENTER
Pause
DelVar PDelVar V30→E
End
End
ClrDraw
V+(F≥E→V
E+15(F≥E→E
If K≠45
Goto A


Download here. Tell me what you think, and please notify me of any bugs, glitches, or feature suggestions!
Bump.

This should be the finished product right here! I implemented saving games, as well as restarting your current level and restarting your entire game. There's also a logo for DoorsCS7!



Source code for the masochist:

Code:
:"Bejeweled 84+
:"000007E01DB82A5477EE742EE3C797E977EE3BDC1BD80DB005A0024001800000
G-T
Full
ClrDraw
AxesOff
ZStandard
104→Xmax
⁻72→Ymin
ZInteger
For(A,0,74
If A<11
Text(51,A+15,sub("?Y﹢.﹢Y?  ",A+1,1
If A<21
Text(46,A+10,sub("?Y'([i]QJ'['JQ[i]('Y?  ",A+1,1
If A<25
Text(41,A+8,sub("﹢[s]!!]:XX.χ[i][i][i]χ.XX:]!![s]﹢  ",A+1,1
If A<22
Text(36,A+8,sub("  .J[e][e]|u([s]:[s](|u[e][e]J. ",A+1,1
Text(5,A+11,sub("[[JJ[i]Q' 'QplotsquareJJJJ JJJplotsquareQ' 'QplotsquareJJJJ  YQplotsquare('(plotsquareQY  'QplotsquareJJJJ 'QplotsquareJJJ 'QplotsquareJJJJ [[JJplotsquareQ'  ",A+1,1
Text(0,A+11,sub("[[]]X[( |u[]]]?     [[ |u[]]]? [[.     .[[ |u[]]]? [[     |u[]]]? [[??Y[|u  ",A+1,1
End
{11,21,36,56,71,77
For(A,1,6
Line(Ans(A),0,Ans(A)+4,0
End
{31,42,51,62
For(A,1,4
Line(Ans(A),0,Ans(A)+1,0
End
14
Line(2,⁻Ans,36,⁻Ans
Line(Ans,⁻30,24,⁻30
{2,Ans,26
For(A,1,3
Line(Ans(A),⁻22,Ans(A)+10,⁻22
End
12
Line(Ans,⁻2Ans,Ans,⁻28
Line(26,⁻2Ans,26,⁻28
⁻16
Line(0,Ans,0,⁻20
Line(38,Ans,38,⁻20
Line(⁻Ans,⁻12,19,⁻13
13
Line(22,⁻12,19,⁻Ans
Line(40,⁻Ans,40,⁻61
{1,15,1,21,37,21,Ans,23,Ans,29,25,29,15,Ans,23,Ans
For(A,1,8
Pt-On(Ans(2A-1),⁻Ans(2A
End
⁻12
Line(41,Ans,92,Ans
Line(41,Ymin,92,Ymin
Line(42,Ans,42,Ymin
Line(92,Ans,92,Ymin
"[[i][[[(ẋXẋ(+([(+(X]X([QJ|u[|uJ(X[i][(→Str1
SetUpEditor BJWL
If 4=dim(ʟBJWL
Then
ʟBJWL(1→V
ʟBJWL(2→P
ʟBJWL(3→F
ʟBJWL(4→E
Else
DelVar FDelVar PDelVar V30→E
4→dim(ʟBJWL
E→ʟBJWL(4
End
7^cumSum(binomcdf(7,0→L₃
StorePic 2
Lbl A
RecallPic 2
Text(15,2,P+F
Pt-On(37,⁻15
Text(23,14,V
Pt-On(25,⁻23
Line(41,⁻62,41,⁻62+min(49,49F/E
Text(25,49,"Generating
Text(31,44,"boardplease
Text(37,48,"be patient
DelVar [A]{8,8→dim([A]
List►matr(10^(1+iPart(7fPart(randL₃))),10^(1+iPart(7fPart(randL₃))),10^(1+iPart(7fPart(randL₃))),10^(1+iPart(7fPart(randL₃))),10^(1+iPart(7fPart(randL₃))),10^(1+iPart(7fPart(randL₃))),10^(1+iPart(7fPart(randL₃))),10^(1+iPart(7fPart(randL₃))),[A]
Repeat [A]=[B]
[A]→[B]
For(X,0,1
For(A,1,8
Matr►list([A],A,L₁
not(DeltaList(DeltaList(L₁→L₁
For(B,1,6max(Ans
If L₁(B
Then
Repeat Ans≠[A](B+1,A
10^randInt(1,7→[A](B,A
End
End
End
End
[A]ᵀ→[A]
End
End
For(A,1,8
For(B,1,8
For(C,0,7
Text(7+6A,38+6B+C,sub(sub(Str1,5log([A](A,B))-4,5)+"   ",C+1,1
End
Line(92,⁻12,92,Ymin
End
End
DelVar LDelVar SDelVar T1→Z
1→θ
1→W
Repeat F≥E or L=15 and F<E or sum(K={22,23,45
Line(38+6Z,⁻7-6θ,42+6Z,⁻7-6θ
Line(38+6Z,⁻13-6θ,42+6Z,⁻13-6θ
Line(37+6Z,⁻8-6θ,37+6Z,⁻12-6θ
Line(43+6Z,⁻8-6θ,43+6Z,⁻12-6θ
getKey→K
If Ans
Then
Line(38+6Z,⁻7-6θ,42+6Z,⁻7-6θ,0
Line(38+6Z,⁻13-6θ,42+6Z,⁻13-6θ,0
Line(37+6Z,⁻8-6θ,37+6Z,⁻12-6θ,0
Line(43+6Z,⁻8-6θ,43+6Z,⁻12-6θ,0
End
If Ans=23
DelVar FDelVar PDelVar V30→E
If K=22
DelVar F
If K=21
Then
If S and T and (Z=S or θ=T) and 2>abs(Z-S)+abs(θ-T
Then
Pt-Off(37+6S,⁻7-6T
Pt-Off(43+6S,⁻7-6T
Pt-Off(37+6S,⁻13-6T
Pt-Off(43+6S,⁻13-6T
[A](T,S→A
[A](θ,Z→[A](T,S
DelVar GDelVar NA→[A](θ,Z
Repeat not(M
DelVar M[A]→[B]
For(X,0,1
For(A,1,8
Matr►list([A],A,L₁
not(DeltaList(DeltaList(L₁→L₁
For(B,1,6max(Ans
If L₁(B
Then
3^M+2N+2+F→F
Line(41,⁻62,41,⁻62+min(49,49Ans/E
If P+Ans≥ᴇ9
ᴇ9-1-P→F
Text(15,2,P+Ans
Pt-On(37,⁻15
N+not(M→N
M+1→M
For(C,0,2
{B+C,A
If X
{A,B+C
Text(7+6Ans(1),38+6Ans(2),"     
0→[B](Ans(1),Ans(2
End
End
End
End
[A]ᵀ→[A]
End
If M
Then
1→W
[B]→[A]
If not(G
Then
For(X,0,1
{T,S
If X
{θ,Z
Text(7+6Ans(1),38+6Ans(2),"     
StorePic 1
For(C,0,7
If [A](Ans(1),Ans(2
Text(7+6Ans(1),38+6Ans(2)+C,sub(sub(Str1,5log([A](Ans(1),Ans(2)))-4,5)+"   ",C+1,1
End
RecallPic 1
End
1→G
End
For(A,1,8
Matr►list([A],A,L₁
If not(min(L₁
Then
DelVar DDelVar L₂8→dim(L₂
8→C
For(B,1,8
L₁(9-B
If Ans
Then
Ans→L₂(C
C-1→C
End
If not(L₁(B
B→D
End
List►matr(L₂+10^(1+iPart(7fPart(randL₃)))not(L₂),[B]
rowSwap(augment([A],[B])ᵀ,A,9)ᵀ→[A]
{8,8→dim([A]
For(B,D,1,⁻1
Text(7+6B,38+6A,"     
StorePic 1
For(C,0,7
Text(7+6B,38+6A+C,sub(sub(Str1,5log([A](B,A))-4,5)+"   ",C+1,1
End
RecallPic 1
End
End
End
Else
If not(N
Then
[A](T,S→A
[A](θ,Z→[A](T,S
A→[A](θ,Z
End
End
End
DelVar SDelVar T
Else
If S and T
Then
Pt-Off(37+6S,⁻7-6T
Pt-Off(43+6S,⁻7-6T
Pt-Off(37+6S,⁻13-6T
Pt-Off(43+6S,⁻13-6T
End
Z→S
θ→T
Pt-On(37+6S,⁻7-6Ans
Pt-On(43+6S,⁻7-6Ans
Pt-On(37+6S,⁻13-6Ans
Pt-On(43+6S,⁻13-6Ans
End
End
Z+(K=26 and Z<8)-(K=24 and Z>1→Z
θ+(K=34 and θ<8)-(K=25 and θ>1→θ
If W and F<E
DelVar I1→L
If L and L<16
Then
Matr►list([A],1,L₂
For(A,2,8
L₂→L₁
Matr►list([A],A,L₂
.1(L₁+L₂)(L₁≠L₂
{0,0,sum(Ans,1,3),sum(Ans,2,4),sum(Ans,3,5),sum(Ans,4,6),sum(Ans,5,7),sum(Ans,6,8
If .3≤max(max(fPart(Ans/L₁),fPart(Ans/L₂))) or max(.3010299957=abs(DeltaList(log(abs(DeltaList(DeltaList(L₁
Then
15→L
8→A
End
L+1→L
End
If L=16 and I or L≠16
[A]ᵀ→[A]
L≠16→I
End
not(L→W
If L=15 and F<E
Then
ClrDraw
RecallPic 2
Text(15,2,P+F
Pt-On(37,⁻15
Text(23,14,V
Pt-On(25,⁻23
For(X,0,1
Text(⁻1,21,X+47,"NO MORE
Text(⁻1,29,X+53,"MOVES
If not(X
StorePic 1
End
RecallPic 1
Text(37,49,"Press ENTER
Pause
DelVar FDelVar PDelVar V30→E
End
End
ClrDraw
If F≥E
Then
min(999,V+1→V
min(15015,E+15→E
P+F→P
DelVar F
End
If K=22
DelVar F
If K≠45
Goto A
{V,P,F,E→ʟBJWL
ClrHome
Disp "Bejeweled 84+","","Game saved.


Download link here. Tell me what you think!
Congratulations on finishing and releasing this game! I'm suitably impressed with how quickly you put it together, and how complete it seems to be. Do you have any future plans for it? From what I've heard, you've been busy debugging and de-glitching it over the past 24 hours.
KermMartian wrote:
Congratulations on finishing and releasing this game! I'm suitably impressed with how quickly you put it together, and how complete it seems to be. Do you have any future plans for it? From what I've heard, you've been busy debugging and de-glitching it over the past 24 hours.

I don't have that many future plans for it...that is, unless I figure out how pure-BASIC textsprites would suitably work on the +CSE Razz

Seriously, if I figure out how to do that, then I'll do a color calculator port. Until then, though, I have no future plans, except optimizing it more if I find any.

Code:
.1(L₁+L₂)(L₁≠L₂
;should be
.1(L₁+L₂(L₁≠L₂

{0,0,sum(Ans,1,3),sum(Ans,2,4),sum(Ans,3,5),sum(Ans,4,6),sum(Ans,5,7),sum(Ans,6,8
If .3≤max(max(fPart(Ans/L₁),fPart(Ans/L₂))) or max(.3010299957=abs(DeltaList(log(abs(DeltaList(DeltaList(L₁

;can be (saves 9 ms, but yet untested)
{0,0,sum(Ans,1,2),sum(Ans,2,3),sum(Ans,3,4),sum(Ans,4,5),sum(Ans,5,6),sum(Ans,6,7
If .2≤max(max(fPart(Ans/L₁)),max(fPart(Ans/L₂))) or max(.3010299957=abs(DeltaList(log(abs(DeltaList(DeltaList(L₁
lirtosiast wrote:

Code:
.1(L₁+L₂)(L₁≠L₂
;should be
.1(L₁+L₂(L₁≠L₂

{0,0,sum(Ans,1,3),sum(Ans,2,4),sum(Ans,3,5),sum(Ans,4,6),sum(Ans,5,7),sum(Ans,6,8
If .3≤max(max(fPart(Ans/L₁),fPart(Ans/L₂))) or max(.3010299957=abs(DeltaList(log(abs(DeltaList(DeltaList(L₁

;can be (saves 9 ms, but yet untested)
{0,0,sum(Ans,1,2),sum(Ans,2,3),sum(Ans,3,4),sum(Ans,4,5),sum(Ans,5,6),sum(Ans,6,7
If .2≤max(max(fPart(Ans/L₁)),max(fPart(Ans/L₂))) or max(.3010299957=abs(DeltaList(log(abs(DeltaList(DeltaList(L₁

As for the first optimization, that means you're adding the L₁≠L₂th element of L₂ . That's an INVALID DIM error for me most of the time.

As for the second one, I'll add that in, but make sure to test it.
Sorry, I meant (L1+(L1!=L2)L2; my intention was to only add the elements of L2 if they're different from those of L1.
  
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 2
» 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

 

Advertisement