§ Игровые скрины




Правила игры простые. Пасьянс раскладывается на 10 стопок по примерно 5 карт (кроме первых двух стопок). Снять можно две нижние карты с каждой стопки за раз. Карты не должны совпадать по масти, но должны совпадать по достоинству. Если пасьянс снят весь — он считается разложенным.
§ Текст программы
Этот текст программы не совсем для Бейсика спектрум, потому что тут нет линии и есть дополнительные комменты. В этой программе единственный примечательный момент в том что заполняются символы UDG.BORDER 7: PAPER 7: INK 0: CLS DIM D(13): DIM M(4): DIM C(52): DIM T(10,6): DIM H(10) -- НАЗВАНИЕ ИГРЫ PLOT 32,68: DRAW 192,0: DRAW 0,64: DRAW -192,0: DRAW 0,-64 PRINT AT 8,9;"TURECKIJ PLATOK" PRINT AT 10,12;INK 1;"PASIYANS" -- "СИМВОЛЫ UDG" DATA 0,108,254,254,124,56,16,0: REM HEART 144 DATA 0,16,56,124,124,56,16,0: REM DIAMONDS 145 DATA 16,56,124,254,254,16,56,0: REM SPADES 146 DATA 56,56,214,254,214,16,56,0: REM CLUBS 147 DATA 0,94,222,86,86,86,94,0: REM "10" 148 -- "ДОСТОИНСТВА КАРТ" DATA 50,51,52,53,54,55,56,57,148,74,81,75,65 FOR I=0 To 39: READ A: POKE 65368+I,A: NEXT I FOR I=1 TO 13: READ D(I): NEXT I FOR I=1 TO 4: LET M(I)=143+I: NEXT I INPUT "Start? "; A$ RANDOMIZE PRINT AT 5,6;PAPER 2;INK 7;" Tasuem karty... " -- ТАСОВКА КОЛОДЫ КАРТ FOR I=1 TO 52: LET C(I)=I: NEXT I FOR I=1 TO 52 LET A=INT(RND*52)+1 LET B=INT(RND*52)+1 LET T=C(A) LET C(A)=C(B) LET C(B)=T NEXT I -- ВЫДАЧА КОЛОДЫ КАРТ CLS PRINT AT 0,0; PAPER 1; INK 7; "0 1 2 3 4 5 6 7 8 9 " FOR I=0 TO 51 LET K=C(1+I)-1 LET B=INT(K/13) LET A=K-B*13 LET Y=INT(I/10) LET X=I-10*Y LET T(1+X,1+Y)=K LET H(1+X)=H(1+X)+1 PRINT AT 2+Y,3*X; INK 2*(B<2); CHR$(D(A+1)); CHR$(M(B+1)); NEXT I LET CD=0 #LOOP REM "NEXT CARD" PRINT AT 20,0;PAPER 0;INK 7;" CARD=";CD;" " -- ВЫБОР КАРТЫ #L0 REM "CARD1" INPUT "First (0-9, 10-EXIT)? "; A IF A=10 THEN STOP IF A<0 OR A>9 THEN GO TO #L0 IF H(A+1)=0 THEN GO TO #L0 PRINT AT 1,3*A;"^" #L1 REM "CARD2" INPUT "Second (0-9)? "; B IF B<0 OR B>9 OR A=B THEN GO TO #L1 IF H(B+1)=0 THEN GO TO #L1 PRINT AT 1,3*A;" " -- ПРОСМОТР КАРТ LET R=T(A+1,H(A+1)): GO SUB #IDK: LET P1=P: LET J1=J LET R=T(B+1,H(B+1)): GO SUB #IDK IF P1=P THEN INPUT "Odna mast! "; U$: GO TO #L0 IF J1<>J THEN INPUT "Ne sovpadaet! "; U$: GO TO #L0 -- УДАЛЕНИЕ КАРТ PRINT AT 1+H(A+1),3*A;" "; PRINT AT 1+H(B+1),3*B;" "; LET H(A+1)=H(A+1)-1 LET H(B+1)=H(B+1)-1 LET CD=CD+2 IF CD=52 THEN INPUT "Pobeda!"; U$: STOP GO TO #LOOP #IDK REM "CALC (P,J) FROM R" LET P=INT(R/13) LET J=R-13*P RETURN