orion1052003 Posted February 6, 2012 Share Posted February 6, 2012 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 Quote Link to comment Share on other sites More sharing options...
orion1052003 Posted February 6, 2012 Author Share Posted February 6, 2012 (edited) 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 Edited February 6, 2012 by orion1052003 Quote Link to comment Share on other sites More sharing options...
orion1052003 Posted February 6, 2012 Author Share Posted February 6, 2012 (edited) 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 Edited February 6, 2012 by orion1052003 1 Quote Link to comment Share on other sites More sharing options...
tiwolf Posted February 7, 2012 Share Posted February 7, 2012 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 Quote Link to comment Share on other sites More sharing options...
unhuman Posted February 7, 2012 Share Posted February 7, 2012 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. Quote Link to comment Share on other sites More sharing options...
notwhoyouthink Posted December 19, 2017 Share Posted December 19, 2017 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. Quote Link to comment Share on other sites More sharing options...
sometimes99er Posted December 19, 2017 Share Posted December 19, 2017 (edited) 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 December 19, 2017 by sometimes99er 3 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.