// Title: Solitaire Name: SOLITAIR First version: March-ish 1998 Version: v.6 (June 18, 1998) Author: Bungeman (Ben Wagner) Email: bungeman@juno.com Webpage: http://members.tripod.com/~bungeman/casio Model: 9850, 9950 Description: My fifth try at a cool game for a casio. It's not quite done yet, but it shows great promise. Much optomization of size to be done, many of the rutines are very simmiler. // ;Initalize AxesOff GridOff Norm ViewWindow 1,127,5,63,1,5 Text 1,46,"SOLITAIRE" 1->D 24->X:Prog "~DIM" Mat Ans->Mat D [[0,0,0,0]]->Mat P 7->Y:19->X:Prog"~DIM" Mat Ans->Mat F [[0]] Prog "~SHUFFLE" For 1->I To 24 Mat R[1,I]->Mat S[1,I] Next 25->K For 1->I To 7 I-1->Mat F[I,19] For I->J To 7 Mat R[1,K]->Mat F[J,I] 1+K->K Next Next [[0]]->Mat R ;Display For 1->I To 7 Text 7I+9,3,I-1 10->X:7I+9->Y:Mat F[I,I]->C Prog "~CARD" Next Text 9,5,"[D]" 9->Y For 1->I To D 10I+6->X:Mat D[1,I]->C Prog "~CARD" Next Text 9,60,"S" Orange Text 9,76,"D H" Text 9,108,"C" PxlOff 1,127 0->W:D->P:0->F:10D+6->R Mat D[1,P]->Q Do Do Getkey->K LpWhile K=0 If K=79 Then 0->J (P=24 And F0->P If (P<24 And FP To 24 If Mat D[1,P]>0 Then J+1->J 6+10J->X:9->Y If J=1 Then Text Y,X," " ;8 spaces Orange Text Y,X," ";8 spaces EndIf Mat D[1,P]->C Prog "~CARD" IfEnd J=D=>Break Next (P=24 And F<5)=>F+1->F 10D+6->R:C->Q IfEnd IfEnd If K=69 And P>0 Then 0->E Green F-Line R,14,R+S,14 Do Do Getkey->K LpWhile K<>0 1->E Mat D[1,P]->Q Int (13.01Frac((Q-1)/13)+1)->N Int ((Q-1)/13)+1->S If K=59 Or K=49 Or K=39 Or K=29 Then 4-((K-29)/10)->K If K=S And N=Mat P[1,K]+1 Then Mat P[1,K]+1->Mat P[1,K] 16K+44->X:9->Y:Q->C Prog "~CARD" 2->E IfEnd IfEnd If K>71 And K<79 Then 79-K->K For 18->I To 1 Step -1 Mat F[K,I]>0->Break Next Mat F[K,I]->T If T>0 Then Int ((T-1)/13)+1->X Int ((Q-1)/13)+1->Y If (Int (13.01Frac ((T-1)/13))-N And (X+Y<>5 And X<>Y) And N>1 Then Q->Mat F[K,I+1] Q->C:7K+9->Y:10(I+1-Mat F[K,19])->X Prog "~CARD" 2->E IfEnd Else If N=13 Then Q->Mat F[K,1] 10->X:7K+9->Y:Q->C Prog "~CARD" 2->E IfEnd IfEnd IfEnd If E=2 Then 0->Mat D[1,P] For P->P To 1 Step -1 Mat D[1,P]<>0=>Break P=1=>0->P Next Text 9,R," " Orange Text 9,R," " Green Text 14,R," " If P>0 Then Mat D[1,P]->Q If R=16 Then 16->X:9->Y:Q->C Prog "~CARD" Else R-10->R IfEnd IfEnd IfEnd Green Text 14,R," " LpWhile E=0 IfEnd If K=59 Or K=49 Or K=39 Or K=29 Then WINPILE IfEnd If K>71 And K<79 Then 0->E 79-K->J Mat F[J,19]->Z If Z<>0 Or Mat F[J,1]<>0 Then For 18->M To 1 Step -1 Mat F[J,M]>0=>Break Next M->L Do Green F-Line 10(L-Z),7J+14,10(L+1-Z),7J+14 Do Getkey->K LpWhile K<>27 And K<>38 And K<>31 K=31=>Break Green Text 7J+9,10(L-Z)," " K=38=>L>Z+1=>L-1->L K=27=>LL+1->L LpWhile 1 Mat F[J,L]->Q Int (13.01Frac ((Q-1)/13)+1)->N Int ((Q-1)/13)+1->S Do Getkey->K LpWhile K=0 If (K=29 or K=39 Or K=49 Or K=59) And L=M Then 4-((K-29)/10)->K If K=S And N=Mat P[1,K]+1 Then Mat P[1,K]+1->Mat P[1,K] 16K+44->X:9->Y:Q->C Prog "~CARD{" 0->Mat F[J,L] 2->E IfEnd IfEnd IfEnd If K<79 And K>71 Then 79-K->K For 18->I To 1 Step -1 Mat F[K,I]->T T>0->Break I=1=>0->I Next Int ((T-1)/13)+1->X If ((Int (13.01Frac ((T-1)/13))=N) And X+S<>5 And X<>S) Or (N=13 And T=0) Then 7K+9->Y For L->A To 18 Mat F[J,A]->C C=0=>Break 0->Mat F[J,A] C->Mat F[K,I+A-L+1] 10(I+A-L-Mat F[K,19]+1)->X Prog "~CARD" Next 2->E IfEnd IfEnd Green Text 7J+9,10(L-Z)," " If E=2 Then Text 7J+9,10(L-Z)," ";30 spaces Orange Text 7J+9,10(L-Z)," "l30 spaces If L=Z+1 And Z>0 Then Z-1->Mat F[J,19] 10->X:7J+9->Y Mat F[J,Z]->C Prog "~CARD" Text Y,3,Z-1 IfEnd IfEnd IfEnd PxlOff 1,127 LpWhile K<>47 Or W=52 [[0]]->Mat D Mat D->Mat F