Jump to content
IGNORED

Pieces of Programming


orion1052003

Recommended Posts

I started this topic to put little bits that I was working on in case anyone was interested in them and also to get help on how to improve them. The first is a drawing of several pyramid shapes within a larger pyramid. How can the empty spot in the center be programmed to connect? There is a gaping hole, but not sure how to change the loop so that it would work.

 

10 !RAINBOW
50 ! RAINBOW PYRAMID
60 CALL CLEAR :: CALL SCREEN(2) :: CALL COLOR(9,7,2,10,12,2,11,10,2,12,5,2,13,8,2,14,4,2)
65 CALL COLOR(8,12,2)!YELLOW
70 L$="0102040810204080" :: R$="8040201008040201" :: LC$="01020408102040FF" :: RC$="80402010080402FF" :: H$="00000000000000FF"
80 CALL CHAR(96,L$,97,R$,98,LC$,99,RC$,100,H$,104,L$,105,R$,106,LC$,107,RC$,108,H$,112,L$,113,R$,114,LC$,115,RC$,116,H$)
85 CALL CHAR(120,L$,121,R$,122,LC$,123,RC$,124,H$,128,L$,129,R$,130,LC$,131,RC$,132,H$,136,L$,137,R$,138,LC$,139,RC$,140,H$)
87 CALL CHAR(88,L$,89,R$,90,LC$,91,RC$,92,H$)
90 CC=1 :: C=17
100 !DRAW LEFT SIDE
110 FOR I=10 TO 23
120 CC=CC+1
130 CALL HCHAR(I,C-CC,96)
140 NEXT I
142 CC=1
144 FOR I=11 TO 22
145 CC=CC+1
146 CALL HCHAR(I,C-CC,88)
147 NEXT I
148 CC=1
150 FOR I=12 TO 21
160 CC=CC+1
170 CALL HCHAR(I,C-CC,104)
180 NEXT I
185 CC=1
190 FOR I=13 TO 20
200 CC=CC+1
210 CALL HCHAR(I,C-CC,112)
220 NEXT I
225 CC=1
230 FOR I=14 TO 19
240 CC=CC+1
250 CALL HCHAR(I,C-CC,120)
260 NEXT I
265 CC=1
270 FOR I=15 TO 18
280 CC=CC+1
290 CALL HCHAR(I,C-CC,128)
300 NEXT I
305 CC=1
310 FOR I=16 TO 17
320 CC=CC+1
330 CALL HCHAR(I,C-CC,136)
340 NEXT I
345 CC=1
350 ! *DRAW TRIANGLE BOTTOM*
360 CALL HCHAR(24,2,100,30) :: CALL HCHAR(22,6,108,22) :: CALL HCHAR(21,8,116,18)
370 CALL HCHAR(20,10,124,14) :: CALL HCHAR(19,12,132,10) :: CALL HCHAR(18,14,140,6)
380 CALL HCHAR(23,4,92,26)
390 ! *DRAW CAPS -7 LEFT,7 RIGHT
400 CALL HCHAR(24,1,98) :: CALL HCHAR(24,32,99) :: CALL HCHAR(22,5,106) :: CALL HCHAR(22,28,107)
410 CALL HCHAR(21,7,114) :: CALL HCHAR(21,26,115) :: CALL HCHAR(20,9,122) :: CALL HCHAR(20,24,123)
420 CALL HCHAR(19,11,130) :: CALL HCHAR(19,22,131) :: CALL HCHAR(18,13,138) :: CALL HCHAR(18,20,139)
425 CALL HCHAR(23,3,90) :: CALL HCHAR(23,30,91)
430 CC=0
440 ! *DRAW RIGHT SIDE
450 FOR I=10 TO 23
460 CC=CC+1
470 CALL HCHAR(I,C+CC,97)
480 NEXT I
490 CC=0
500 FOR I=11 TO 22
510 CC=CC+1
520 CALL HCHAR(I,C+CC,89)
530 NEXT I
540 CC=0
550 FOR I=12 TO 21
560 CC=CC+1
570 CALL HCHAR(I,C+CC,105)
580 NEXT I
590 CC=0
600 FOR I=13 TO 20
610 CC=CC+1
620 CALL HCHAR(I,C+CC,113)
630 NEXT I
640 CC=0
650 FOR I=14 TO 19
660 CC=CC+1
670 CALL HCHAR(I,C+CC,121)
680 NEXT I
690 CC=0
700 FOR I=15 TO 18
710 CC=CC+1
720 CALL HCHAR(I,C+CC,129)
730 NEXT I
740 CC=0
750 FOR I=16 TO 17
760 CC=CC+1
780 CALL HCHAR(I,C+CC,137)
790 NEXT I
800 CC=0
810 GOTO 810

Link to comment
Share on other sites

The next one is an attempt to make a character move with a joystick using background graphics. It moves, but does not erase properly. The process is draw, erase, draw erase to make it move.

 

10 !BGTEST
15 CALL CLEAR
200 X1=7 :: X2=9 :: X3=10 :: X4=11 :: X5=12 :: X6=13 :: X7=14 :: X8=15 :: X9=21
205 Y1=17 :: Y2=16 :: Y3=11 :: Y4=18 :: Y5=14 :: Y6=19 :: E=32 :: C=96
210 CALL COLOR(9,9,9) :: CALL SCREEN(6) :: CALL CHAR(96,RPT$("F",16))
290 !DRAW INITIAL FIGURE IN BACKGROUND
300 CALL VCHAR(X1,Y1,C,2)
310 CALL HCHAR(X2,Y2,C,3)
320 CALL HCHAR(X3,Y3,C,13)
330 CALL HCHAR(X4,Y2,C,3)
340 CALL HCHAR(X5,Y2,C,3)
350 CALL HCHAR(X6,Y2,C,3)
360 CALL HCHAR(X7,Y2,C,3)
370 CALL VCHAR(X8,Y2,C,7)
380 CALL VCHAR(X8,Y4,C,7)
390 CALL HCHAR(X9,Y5,C,2)
395 CALL HCHAR(X9,Y6,C,2)
400 CALL JOYST(1,X,Y)
410 IF Y=4 THEN CALL UP(X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,Y4,Y5,Y6,E,C)
420 IF Y=-4 THEN CALL DOWN(X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,Y4,Y5,Y6,E,C)
430 IF X=-4 THEN CALL LEFT(X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,Y4,Y5,Y6,E,C)
440 IF X=4 THEN CALL RIGHT(X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,Y4,Y5,Y6,E,C)
450 DISPLAY AT(1,1):"X1=";X1;"Y1=";Y1;"X2=";X2;"X3=";X3;"X4=";X4;"E=";E;"C=";C
455 DISPLAY AT(23,1):"Y1=";Y1;"Y2=";Y2;"Y3=";Y3;"Y4=";Y4
460 DISPLAY AT(24,1):"X5=";X5;"X6=";X6;"Y5=";Y5;"Y6=";Y6
490 GOTO 400!MAIN LOOP
500 SUB UP(X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,Y4,Y5,Y6,E,C)
510 CALL VCHAR(X1,Y1,E,2) :: CALL VCHAR(X1-1,Y1,C,2) :: X1=X1-1
520 CALL HCHAR(X2,Y2,E,3) :: CALL HCHAR(X2-1,Y2,C,3) :: X2=X2-1
530 CALL HCHAR(X3,Y3,E,13) :: CALL HCHAR(X3-1,Y3,C,13) :: X3=X3-1
540 CALL HCHAR(X4,Y2,E,3) :: CALL HCHAR(X4-1,Y2,C,3) :: X4=X4-1
550 CALL HCHAR(X5,Y2,E,3) :: CALL HCHAR(X5-1,Y2,C,3) :: X5=X5-1
560 CALL HCHAR(X6,Y2,E,3) :: CALL HCHAR(X6-1,Y2,C,3) :: X6=X6-1
570 CALL HCHAR(X7,Y2,E,3) :: CALL HCHAR(X7-1,Y2,C,3) :: X7=X7-1
580 CALL VCHAR(X8,Y2,E,7) :: CALL VCHAR(X8-1,Y2,C,7)
590 CALL VCHAR(X8,Y4,E,7) :: CALL VCHAR(X8-1,Y4,C,7) :: X8=X8-1
593 CALL HCHAR(X9,Y5,E,2) :: CALL HCHAR(X9-1,Y5,C,2)
595 CALL HCHAR(X9,Y6,E,2) :: CALL HCHAR(X9-1,Y6,C,2) :: X9=X9-1
597 SUBEND
600 SUB DOWN(X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,Y4,Y5,Y6,E,C)
610 CALL HCHAR(X9,Y6,E,2) :: CALL HCHAR(X9+1,Y6,C,2)
620 CALL HCHAR(X9,Y5,E,2) :: CALL HCHAR(X9+1,Y5,C,2) :: X9=X9+1
630 CALL VCHAR(X8,Y4,E,7) :: CALL VCHAR(X8+1,Y4,C,7)
640 CALL VCHAR(X8,Y2,E,7) :: CALL VCHAR(X8+1,Y2,C,7) :: X8=X8+1
650 CALL HCHAR(X7,Y2,E,3) :: CALL HCHAR(X7+1,Y2,C,3) :: X7=X7+1
660 CALL HCHAR(X6,Y2,E,3) :: CALL HCHAR(X6+1,Y2,C,3) :: X6=X6+1
670 CALL HCHAR(X5,Y2,E,3) :: CALL HCHAR(X5+1,Y2,C,3) :: X5=X5+1
680 CALL HCHAR(X4,Y2,E,3) :: CALL HCHAR(X4+1,Y2,C,3) :: X4=X4+1
690 CALL HCHAR(X3,Y3,E,13) :: CALL HCHAR(X3+1,Y3,C,13) :: X3=X3+1
693 CALL HCHAR(X2,Y2,E,3) :: CALL HCHAR(X2+1,Y2,C,3) :: X2=X2+1
695 CALL VCHAR(X1,Y1,E,2) :: CALL VCHAR(X1+1,Y1,C,2) :: X1=X1+1
697 SUBEND
700 SUB LEFT(X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,Y4,Y5,Y6,E,C)
710 CALL VCHAR(X1,Y1,E,2) :: CALL VCHAR(X1,Y1-1,C,2) :: Y1=Y1-1
720 CALL HCHAR(X2,Y2,E,3) :: CALL HCHAR(X2,Y2-1,C,3)
730 CALL HCHAR(X3,Y3,E,13) :: CALL HCHAR(X3,Y3-1,C,13) :: Y3=Y3-1
740 CALL HCHAR(X4,Y2,E,3) :: CALL HCHAR(X4,Y2-1,C,3)
750 CALL HCHAR(X5,Y2,E,3) :: CALL HCHAR(X5,Y2-1,C,3)
760 CALL HCHAR(X6,Y2,E,3) :: CALL HCHAR(X6,Y2-1,C,3)
770 CALL VCHAR(X7,Y2,E,3) :: CALL VCHAR(X7,Y2-1,C,3)
780 CALL VCHAR(X7,Y2,E,7) :: CALL VCHAR(X7,Y2-1,C,7) :: Y2=Y2-1
790 CALL HCHAR(X5,Y4,E,7) :: CALL HCHAR(X5,Y4-1,C,7) :: Y4=Y4-1
793 CALL HCHAR(X8,Y5,E,2) :: CALL HCHAR(X8,Y5-1,C,2) :: Y5=Y5-1
795 CALL HCHAR(X9,Y6,E,2) :: CALL HCHAR(X9,Y6-1,C,2) :: Y6=Y6-1
797 SUBEND
800 SUB RIGHT(X1,X2,X3,X4,X5,X6,X7,X8,X9,Y1,Y2,Y3,Y4,Y5,Y6,E,C)
810 CALL HCHAR(X9,Y6,E) :: CALL HCHAR(X9,Y6+1,C) :: Y6=Y6+1
820 CALL HCHAR(X8,Y5,E) :: CALL HCHAR(X8,Y5+1,C) :: Y5=Y5+1
830 CALL HCHAR(X5,Y4,E) :: CALL HCHAR(X5,Y4+1,C) :: Y4=Y4+1
840 CALL VCHAR(X7,Y2,E) :: CALL VCHAR(X7,Y2+1,C) :: Y2=Y2+1
850 CALL VCHAR(X7,Y2,E) :: CALL VCHAR(X7,Y2+1,C)
860 CALL HCHAR(X6,Y2,E) :: CALL HCHAR(X6,Y2+1,C)
870 CALL HCHAR(X5,Y2,E) :: CALL HCHAR(X5,Y2+1,C)
880 CALL HCHAR(X4,Y2,E) :: CALL HCHAR(X4,Y2+1,C)
890 CALL HCHAR(X3,Y3,E) :: CALL HCHAR(X3,Y3+1,C) :: Y3=Y3+1
893 CALL HCHAR(X2,Y2,E,3) :: CALL HCHAR(X2,Y2+1,C,3)
895 CALL VCHAR(X1,Y1,E,2) :: CALL VCHAR(X1,Y1+1,C,2) :: Y1=Y1+1
897 SUBEND

post-19460-0-53410400-1328509683_thumb.jpg

Edited by orion1052003
Link to comment
Share on other sites

This one is a programming exercise to make a Knight move around on a chessboard. Thanks to some help it works. Any suggestions on what to add to it or change about it?

 

10 !KNIGHTMOVES-K1
40 !KNIGHT MOVES
50 !BY JAMES PEYTON 2012
55 CALL CLEAR :: CALL CHARSET
60 CALL COLOR(9,13,1,10,3,1,11,16,3) :: CALL SCREEN(6)
70 S$="FFFFFFFFFFFFFFFF" :: K$="3A7C6EFFFFCF0F1F3736363636367F7F"
75 D$="FFFFFFFFFFFFFFFF"
80 CALL CHAR(96,S$,104,S$,112,K$,115,D$)
83 CALL CHAR(116,"80C0E0F0F8FCFEF") :: CALL CHAR(117,"0103070F1F3F7FFF")!KNIGHTSYMBOL
85 CALL CHAR(118,"FFFFFFFFFF1F1F1F") :: CALL CHAR(119,"FFFFFFFFFF000000")!KNIGHTSYMBOL
90 !DRAW SQUARES
100 FOR I=1 TO 3 :: FOR J=1 TO 3
120 CALL HCHAR(I,J,96) :: CALL HCHAR(I,J+6,96) :: CALL HCHAR(I,J+12,96) :: CALL HCHAR(I,J+18,96)
130 NEXT J :: NEXT I
140 FOR I=4 TO 6 :: FOR J=4 TO 6
150 CALL HCHAR(I,J,96) :: CALL HCHAR(I,J+6,96) :: CALL HCHAR(I,J+12,96) :: CALL HCHAR(I,J+18,96)
160 NEXT J :: NEXT I
170 FOR I=7 TO 9 :: FOR J=1 TO 3
180 CALL HCHAR(I,J,96) :: CALL HCHAR(I,J+6,96) :: CALL HCHAR(I,J+12,96) :: CALL HCHAR(I,J+18,96)
190 NEXT J :: NEXT I
200 FOR I=10 TO 12 :: FOR J=4 TO 6
210 CALL HCHAR(I,J,96) :: CALL HCHAR(I,J+6,96) :: CALL HCHAR(I,J+12,96) :: CALL HCHAR(I,J+18,96)
220 NEXT J :: NEXT I
230 FOR I=13 TO 15 :: FOR J=1 TO 3
240 CALL HCHAR(I,J,96) :: CALL HCHAR(I,J+6,96) :: CALL HCHAR(I,J+12,96) :: CALL HCHAR(I,J+18,96)
250 NEXT J :: NEXT I
260 FOR I=16 TO 18 :: FOR J=4 TO 6
270 CALL HCHAR(I,J,96) :: CALL HCHAR(I,J+6,96) :: CALL HCHAR(I,J+12,96) :: CALL HCHAR(I,J+18,96)
280 NEXT J :: NEXT I
290 FOR I=19 TO 21 :: FOR J=1 TO 3
300 CALL HCHAR(I,J,96) :: CALL HCHAR(I,J+6,96) :: CALL HCHAR(I,J+12,96) :: CALL HCHAR(I,J+18,96)
310 NEXT J :: NEXT I
320 FOR I=22 TO 24 :: FOR J=4 TO 6
330 CALL HCHAR(I,J,96) :: CALL HCHAR(I,J+6,96) :: CALL HCHAR(I,J+12,96) :: CALL HCHAR(I,J+18,96)
340 NEXT J :: NEXT I
350 !BOTTOMRIGHTCORNER
360 FOR I=19 TO 24 :: FOR J=25 TO 32
370 CALL HCHAR(I,J,96)
380 NEXT J :: NEXT I
390 !MIDDLERIGHTSIDE
400 FOR I=7 TO 18 :: FOR J=25 TO 32
410 CALL HCHAR(I,J,104)
420 NEXT J :: NEXT I
421 !KNIGHT SYMBOL
422 CALL HCHAR(11,27,115,4) :: CALL HCHAR(12,27,115,2) :: CALL HCHAR(13,28,115,2) :: CALL HCHAR(14,28,115,2)
423 CALL HCHAR(15,27,115,4) :: CALL HCHAR(10,28,115)
424 CALL HCHAR(9,28,116) :: CALL HCHAR(10,27,117) :: CALL HCHAR(10,29,118) :: CALL HCHAR(12,30,119)
429 !STATS DISPLAY
430 DISPLAY AT(20,23):"KNIGHT"
440 DISPLAY AT(22,23):"MOVES"!:: DISPLAY AT(2,28):"NEW" :: DISPLAY AT(4,28):"OLD"
450 !ISPLAY AT(6,27):"LAST"
480 HR=105 :: HC=105
490 CALL SPRITE(#1,112,16,HR,HC)!KNIGHT-SPRITE
495 !MAIN LOOP
500 CALL JOYST(1,X,Y) :: CALL KEY(1,K,S) :: DR,DC=0
510 CALL POSITION(#1,HR,HC)
520 IF X=0 AND Y=4 THEN DR=HR-48 :: DC=HC-24 :: GOTO 600
530 IF X=4 AND Y=4 THEN DR=HR-48 :: DC=HC+24 :: GOTO 600
540 IF X=4 AND Y=0 THEN DR=HR-24 :: DC=HC+48 :: GOTO 600
550 IF X=4 AND Y=-4 THEN DR=HR+24 :: DC=HC+48 :: GOTO 600
560 IF X=0 AND Y=-4 THEN DR=HR+48 :: DC=HC+24 :: GOTO 600
570 IF X=-4 AND Y=-4 THEN DR=HR+48 :: DC=HC-24 :: GOTO 600
580 IF X=-4 AND Y=0 THEN DR=HR+24 :: DC=HC-48 :: GOTO 600
590 IF X=-4 AND Y=4 THEN DR=HR-24 :: DC=HC-48 :: GOTO 600
600 IF(DR<1 OR DR>192)OR(DC<1 OR DC>192)THEN GOTO 500
610 CALL LOCATE(#1,DR,DC) :: DR,DC=0 :: FOR D=1 TO 100 :: NEXT D :: GOTO 500

post-19460-0-89484300-1328509967_thumb.jpg

Edited by orion1052003
  • Like 1
Link to comment
Share on other sites

I started this topic to put little bits that I was working on in case anyone was interested in them and also to get help on how to improve them. The first is a drawing of several pyramid shapes within a larger pyramid. How can the empty spot in the center be programmed to connect? There is a gaping hole, but not sure how to change the loop so that it would work.

 

You were close. Only had to set your columns further on lines 90 and 430 then start your loops a row higher:

10 !RAINBOW
50 ! RAINBOW PYRAMID
60 CALL CLEAR :: CALL SCREEN(2) :: CALL COLOR(9,7,2,10,12,2,11,10,2,12,5,2,13,8,2,14,4,2)
65 CALL COLOR(8,12,2)!YELLOW
70 L$="0102040810204080" :: R$="8040201008040201" :: LC$="01020408102040FF" :: RC$="80402010080402FF" :: H$="00000000000000FF"
80 CALL CHAR(96,L$,97,R$,98,LC$,99,RC$,100,H$,104,L$,105,R$,106,LC$,107,RC$,108,H$,112,L$,113,R$,114,LC$,115,RC$,116,H$)
85 CALL CHAR(120,L$,121,R$,122,LC$,123,RC$,124,H$,128,L$,129,R$,130,LC$,131,RC$,132,H$,136,L$,137,R$,138,LC$,139,RC$,140,H$)
87 CALL CHAR(88,L$,89,R$,90,LC$,91,RC$,92,H$)
90 CC=1 :: C=18
100 !DRAW LEFT SIDE
110 FOR I=9 TO 23
120 CC=CC+1
130 CALL HCHAR(I,C-CC,96)
140 NEXT I
142 CC=1
144 FOR I=10 TO 22
145 CC=CC+1
146 CALL HCHAR(I,C-CC,88)
147 NEXT I
148 CC=1
150 FOR I=11 TO 21
160 CC=CC+1
170 CALL HCHAR(I,C-CC,104)
180 NEXT I
185 CC=1
190 FOR I=12 TO 20
200 CC=CC+1
210 CALL HCHAR(I,C-CC,112)
220 NEXT I
225 CC=1
230 FOR I=13 TO 19
240 CC=CC+1
250 CALL HCHAR(I,C-CC,120)
260 NEXT I
265 CC=1
270 FOR I=14 TO 18
280 CC=CC+1
290 CALL HCHAR(I,C-CC,128)
300 NEXT I
305 CC=1
310 FOR I=15 TO 17
320 CC=CC+1
330 CALL HCHAR(I,C-CC,136)
340 NEXT I
345 CC=1
350 ! *DRAW TRIANGLE BOTTOM*
360 CALL HCHAR(24,2,100,30) :: CALL HCHAR(22,6,108,22) :: CALL HCHAR(21,8,116,18)
370 CALL HCHAR(20,10,124,14) :: CALL HCHAR(19,12,132,10) :: CALL HCHAR(18,14,140,6)
380 CALL HCHAR(23,4,92,26)
390 ! *DRAW CAPS -7 LEFT,7 RIGHT
400 CALL HCHAR(24,1,98) :: CALL HCHAR(24,32,99) :: CALL HCHAR(22,5,106) :: CALL HCHAR(22,28,107)
410 CALL HCHAR(21,7,114) :: CALL HCHAR(21,26,115) :: CALL HCHAR(20,9,122) :: CALL HCHAR(20,24,123)
420 CALL HCHAR(19,11,130) :: CALL HCHAR(19,22,131) :: CALL HCHAR(18,13,138) :: CALL HCHAR(18,20,139)
425 CALL HCHAR(23,3,90) :: CALL HCHAR(23,30,91)
430 CC=0 :: C=16
440 ! *DRAW RIGHT SIDE
450 FOR I=9 TO 23
460 CC=CC+1
470 CALL HCHAR(I,C+CC,97)
480 NEXT I
490 CC=0
500 FOR I=10 TO 22
510 CC=CC+1
520 CALL HCHAR(I,C+CC,89)
530 NEXT I
540 CC=0
550 FOR I=11 TO 21
560 CC=CC+1
570 CALL HCHAR(I,C+CC,105)
580 NEXT I
590 CC=0
600 FOR I=12 TO 20
610 CC=CC+1
620 CALL HCHAR(I,C+CC,113)
630 NEXT I
640 CC=0
650 FOR I=13 TO 19
660 CC=CC+1
670 CALL HCHAR(I,C+CC,121)
680 NEXT I
690 CC=0
700 FOR I=14 TO 18
710 CC=CC+1
720 CALL HCHAR(I,C+CC,129)
730 NEXT I
740 CC=0
750 FOR I=15 TO 17
760 CC=CC+1
780 CALL HCHAR(I,C+CC,137)
790 NEXT I
800 CC=0
810 GOTO 810

 

Swap color sets 8 and 9 and you can combine some loops:

10 ! RAINBOW PYRAMID
20 CALL CLEAR :: CALL SCREEN(2) :: CALL COLOR(8,7,2,9,12,2,10,12,2,11,10,2,12,5,2,13,8,2,14,4,2)
30 L$="0102040810204080" :: R$="8040201008040201" :: LC$="01020408102040FF" :: RC$="80402010080402FF" :: H$="00000000000000FF"
40 CALL CHAR(96,L$,97,R$,98,LC$,99,RC$,100,H$,104,L$,105,R$,106,LC$,107,RC$,108,H$,112,L$,113,R$,114,LC$,115,RC$,116,H$)
50 CALL CHAR(120,L$,121,R$,122,LC$,123,RC$,124,H$,128,L$,129,R$,130,LC$,131,RC$,132,H$,136,L$,137,R$,138,LC$,139,RC$,140,H$)
60 CALL CHAR(88,L$,89,R$,90,LC$,91,RC$,92,H$)
70 !DRAW TRIANGLE
80 FOR I=9 TO 23 :: CALL HCHAR(I,25-I,88) :: CALL HCHAR(I,I+8,89) :: NEXT I
90 FOR I=10 TO 22 :: CALL HCHAR(I,26-I,96) :: CALL HCHAR(I,I+7,97) :: NEXT I
100 FOR I=11 TO 21 :: CALL HCHAR(I,27-I,104) :: CALL HCHAR(I,I+6,105) :: NEXT I
110 FOR I=12 TO 20 :: CALL HCHAR(I,28-I,112) :: CALL HCHAR(I,I+5,113) :: NEXT I
120 !DRAW BASE AND CAPS
130 FOR I=13 TO 19 :: C=I-(I-13)*3 :: L=6+(I-13)*4 :: A=138-(I-13)*8
140 CALL HCHAR(I,29-I,120) :: CALL HCHAR(I+5,C,A) :: CALL HCHAR(I+5,C+1,A+2,L) :: CALL HCHAR(I+5,C+L+1,A+1) :: CALL HCHAR(I,I+4,121) :: NEXT I
150 FOR I=14 TO 18 :: CALL HCHAR(I,30-I,128) :: CALL HCHAR(I,I+3,129) :: NEXT I
160 FOR I=15 TO 17 :: CALL HCHAR(I,31-I,136) :: CALL HCHAR(I,I+2,137) :: NEXT I
170 GOTO 170

Link to comment
Share on other sites

For your man draw program you could GREATLY smplify the code...

 

Just track x+y of the man... Then your loop contents would look like this

 

call joyst

if joyst unchanged, go back to call joyst

call drawman(32) - erase the man

adjust x+y

call drawman(96) - draw the man

goto call joyst

 

and your sub drawman will take a single parameter of what character to use when drawing.

Link to comment
Share on other sites

  • 5 years later...

This one is a programming exercise to make a Knight move around on a chessboard. Thanks to some help it works. Any suggestions on what to add to it or change about it?

 

10 !KNIGHTMOVES-K1
40 !KNIGHT MOVES
50 !BY JAMES PEYTON 2012
55 CALL CLEAR :: CALL CHARSET
60 CALL COLOR(9,13,1,10,3,1,11,16,3) :: CALL SCREEN(6)
70 S$="FFFFFFFFFFFFFFFF" :: K$="3A7C6EFFFFCF0F1F3736363636367F7F"
75 D$="FFFFFFFFFFFFFFFF"
80 CALL CHAR(96,S$,104,S$,112,K$,115,D$)
83 CALL CHAR(116,"80C0E0F0F8FCFEF") :: CALL CHAR(117,"0103070F1F3F7FFF")!KNIGHTSYMBOL
85 CALL CHAR(118,"FFFFFFFFFF1F1F1F") :: CALL CHAR(119,"FFFFFFFFFF000000")!KNIGHTSYMBOL
90 !DRAW SQUARES
100 FOR I=1 TO 3 :: FOR J=1 TO 3
120 CALL HCHAR(I,J,96) :: CALL HCHAR(I,J+6,96) :: CALL HCHAR(I,J+12,96) :: CALL HCHAR(I,J+18,96)
130 NEXT J :: NEXT I
140 FOR I=4 TO 6 :: FOR J=4 TO 6
150 CALL HCHAR(I,J,96) :: CALL HCHAR(I,J+6,96) :: CALL HCHAR(I,J+12,96) :: CALL HCHAR(I,J+18,96)
160 NEXT J :: NEXT I
170 FOR I=7 TO 9 :: FOR J=1 TO 3
180 CALL HCHAR(I,J,96) :: CALL HCHAR(I,J+6,96) :: CALL HCHAR(I,J+12,96) :: CALL HCHAR(I,J+18,96)
190 NEXT J :: NEXT I
200 FOR I=10 TO 12 :: FOR J=4 TO 6
210 CALL HCHAR(I,J,96) :: CALL HCHAR(I,J+6,96) :: CALL HCHAR(I,J+12,96) :: CALL HCHAR(I,J+18,96)
220 NEXT J :: NEXT I
230 FOR I=13 TO 15 :: FOR J=1 TO 3
240 CALL HCHAR(I,J,96) :: CALL HCHAR(I,J+6,96) :: CALL HCHAR(I,J+12,96) :: CALL HCHAR(I,J+18,96)
250 NEXT J :: NEXT I
260 FOR I=16 TO 18 :: FOR J=4 TO 6
270 CALL HCHAR(I,J,96) :: CALL HCHAR(I,J+6,96) :: CALL HCHAR(I,J+12,96) :: CALL HCHAR(I,J+18,96)
280 NEXT J :: NEXT I
290 FOR I=19 TO 21 :: FOR J=1 TO 3
300 CALL HCHAR(I,J,96) :: CALL HCHAR(I,J+6,96) :: CALL HCHAR(I,J+12,96) :: CALL HCHAR(I,J+18,96)
310 NEXT J :: NEXT I
320 FOR I=22 TO 24 :: FOR J=4 TO 6
330 CALL HCHAR(I,J,96) :: CALL HCHAR(I,J+6,96) :: CALL HCHAR(I,J+12,96) :: CALL HCHAR(I,J+18,96)
340 NEXT J :: NEXT I
350 !BOTTOMRIGHTCORNER
360 FOR I=19 TO 24 :: FOR J=25 TO 32
370 CALL HCHAR(I,J,96)
380 NEXT J :: NEXT I
390 !MIDDLERIGHTSIDE
400 FOR I=7 TO 18 :: FOR J=25 TO 32
410 CALL HCHAR(I,J,104)
420 NEXT J :: NEXT I
421 !KNIGHT SYMBOL
422 CALL HCHAR(11,27,115,4) :: CALL HCHAR(12,27,115,2) :: CALL HCHAR(13,28,115,2) :: CALL HCHAR(14,28,115,2)
423 CALL HCHAR(15,27,115,4) :: CALL HCHAR(10,28,115)
424 CALL HCHAR(9,28,116) :: CALL HCHAR(10,27,117) :: CALL HCHAR(10,29,118) :: CALL HCHAR(12,30,119)
429 !STATS DISPLAY
430 DISPLAY AT(20,23):"KNIGHT"
440 DISPLAY AT(22,23):"MOVES"!:: DISPLAY AT(2,28):"NEW" :: DISPLAY AT(4,28):"OLD"
450 !ISPLAY AT(6,27):"LAST"
480 HR=105 :: HC=105
490 CALL SPRITE(#1,112,16,HR,HC)!KNIGHT-SPRITE
495 !MAIN LOOP
500 CALL JOYST(1,X,Y) :: CALL KEY(1,K,S) :: DR,DC=0
510 CALL POSITION(#1,HR,HC)
520 IF X=0 AND Y=4 THEN DR=HR-48 :: DC=HC-24 :: GOTO 600
530 IF X=4 AND Y=4 THEN DR=HR-48 :: DC=HC+24 :: GOTO 600
540 IF X=4 AND Y=0 THEN DR=HR-24 :: DC=HC+48 :: GOTO 600
550 IF X=4 AND Y=-4 THEN DR=HR+24 :: DC=HC+48 :: GOTO 600
560 IF X=0 AND Y=-4 THEN DR=HR+48 :: DC=HC+24 :: GOTO 600
570 IF X=-4 AND Y=-4 THEN DR=HR+48 :: DC=HC-24 :: GOTO 600
580 IF X=-4 AND Y=0 THEN DR=HR+24 :: DC=HC-48 :: GOTO 600
590 IF X=-4 AND Y=4 THEN DR=HR-24 :: DC=HC-48 :: GOTO 600
600 IF(DR<1 OR DR>192)OR(DC<1 OR DC>192)THEN GOTO 500
610 CALL LOCATE(#1,DR,DC) :: DR,DC=0 :: FOR D=1 TO 100 :: NEXT D :: GOTO 500

There is a chess puzzle known as the "knights tour".

One knight starts on chess board square and must visit every square. It is common to use coins or checkers men to mark visited squares.

This would be a good start to that, if someone wanted to make it.

Link to comment
Share on other sites

Pyramids ... ;)

 

100 call clear::call screen(2):$="01020408102040808040201008040201FF"::for i=0 to 7::call char(33+i*8,p$)
110 for j=0 to i*2::call hchar(12-i+j,16-j,33+i*::call hchar(12-i+j,17+j,34+i*::next j
120 call hchar(12-i+j,17-j,35+i*8,i*4+2)::read c::call color(i+1,c,1)::next i::for i=0 to 9^9::next i
130 data 3,5,7,8,11,14,15,13
run
 
 
Edited by sometimes99er
  • Like 3
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...