This is often useful since character or item graphics we've made aren't always going to be shaped exactly like squares of 16 by 16 pixels.
10 SCREEN 1
20 DEFINT A-Z
30 GFXSIZE = 33
50 DIM PLAYERGFX(GFXSIZE): DIM PLAYERMASK(GFXSIZE)
60 DIM MONSTERGFX(GFXSIZE): DIM MONSTERMASK(GFXSIZE)
65 DIM GRASSGFX(GFXSIZE): DIM ICEGFX(GFXSIZE)
70 GOSUB 800: GET (0, 0)-(15, 15), PLAYERGFX: CLS
71 GOSUB 800: GET (0, 0)-(15, 15), PLAYERMASK: CLS
72 GOSUB 800: GET (0, 0)-(15, 15), MONSTERGFX: CLS
73 GOSUB 800: GET (0, 0)-(15, 15), MONSTERMASK: CLS
74 GOSUB 800: GET (0, 0)-(15, 15), GRASSGFX: CLS
75 GOSUB 800: GET (0, 0)-(15, 15), ICEGFX: CLS
100 FOR Y = 0 TO 7
105 GY = Y * 16
110 FOR X = 0 TO 19
115 GX = X * 16
120 IF X > 0 AND X < 19 AND Y > 2 AND Y < 7 THEN PUT (GX, GY), ICEGFX, PSET ELSE PUT (GX, GY), GRASSGFX, PSET
130 NEXT X
140 NEXT Y
150 PUT (32, 56), PLAYERMASK, AND
151 ' A mask is just made up of black and white pixels.
152 ' When we PUT the mask we must use the AND operator.
153 ' AND, behaving like a bitwise AND operator, will leave the pixels
154 ' already drawn to screen alone where the mask has a white pixel.
155 ' Any pixel already drawn to screen where the mask has a black
156 ' pixel will be cleared from the screen.
160 PUT (32, 56), PLAYERGFX, OR
161 ' Now when drawing the actual sprite to screen, we use the
162 ' OR operator.
163 ' OR adds the bit values of the sprite to where you PUT it,
164 ' retaining whatever pixels the mask didn't remove.
170 PUT (128, 80), MONSTERMASK, AND: PUT (128, 80), MONSTERGFX, OR
180 PUT (192, 32), MONSTERMASK, AND: PUT (192, 32), MONSTERGFX, OR
300 LOCATE 17: PRINT "A simple program for demonstrating
310 PRINT "16x16 tiled graphics in GW-BASIC."
400 END
800 ' Subroutine that read the DATA statement values
801 ' and then draw pixels with PSET
810 FOR y = 0 TO 15
820 FOR x = 0 TO 15
830 READ c
840 PSET (x, y), c
850 NEXT x
860 NEXT y
870 RETURN
900 ' player gfx
901 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
902 DATA 0,0,0,0,0,2,2,2,2,2,0,0,0,0,0,0
903 DATA 0,0,0,0,2,0,2,2,2,2,2,0,0,0,0,0
904 DATA 0,0,0,2,0,2,2,2,2,2,2,2,0,0,0,0
905 DATA 0,0,0,3,0,3,3,3,3,3,3,3,0,0,0,0
906 DATA 0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0
907 DATA 0,0,0,0,1,1,1,0,1,1,0,1,0,0,0,0
908 DATA 0,0,0,0,1,3,1,1,2,2,1,1,0,0,0,0
909 DATA 0,0,0,0,0,3,3,3,3,3,3,3,0,0,0,0
910 DATA 0,0,0,0,0,3,3,3,2,2,3,3,0,0,0,0
911 DATA 0,0,0,0,2,2,3,3,3,3,3,3,0,0,0,0
912 DATA 0,0,0,2,2,2,2,3,3,3,3,2,0,0,0,0
913 DATA 0,0,0,1,1,2,2,2,3,3,2,1,1,0,0,0
914 DATA 0,0,0,0,0,2,2,2,2,2,2,0,0,0,0,0
915 DATA 0,0,0,0,0,2,2,0,0,2,2,0,0,0,0,0
916 DATA 0,0,0,0,0,2,2,2,0,2,2,2,0,0,0,0
920 ' player mask
921 DATA 3,3,3,3,0,0,0,0,0,0,0,3,3,3,3,3
922 DATA 3,3,3,0,0,0,0,0,0,0,0,0,3,3,3,3
923 DATA 3,3,0,0,0,0,0,0,0,0,0,0,0,3,3,3
924 DATA 3,3,0,0,0,0,0,0,0,0,0,0,0,3,3,3
925 DATA 3,3,0,0,0,0,0,0,0,0,0,0,0,3,3,3
926 DATA 3,3,0,0,0,0,0,0,0,0,0,0,0,3,3,3
927 DATA 3,3,3,0,0,0,0,0,0,0,0,0,0,3,3,3
928 DATA 3,3,3,0,0,0,0,0,0,0,0,0,0,3,3,3
929 DATA 3,3,3,0,0,0,0,0,0,0,0,0,0,3,3,3
930 DATA 3,3,3,0,0,0,0,0,0,0,0,0,0,3,3,3
931 DATA 3,3,0,0,0,0,0,0,0,0,0,0,0,3,3,3
932 DATA 3,3,0,0,0,0,0,0,0,0,0,0,0,0,3,3
933 DATA 3,3,0,0,0,0,0,0,0,0,0,0,0,0,3,3
934 DATA 3,3,0,0,0,0,0,0,0,0,0,0,0,0,3,3
935 DATA 3,3,3,3,0,0,0,0,0,0,0,0,0,3,3,3
936 DATA 3,3,3,3,0,0,0,0,0,0,0,0,0,3,3,3
940 ' snake gfx
941 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
942 DATA 0,0,0,0,0,0,0,0,0,0,0,1,2,0,0,0
943 DATA 0,0,0,0,0,0,0,0,0,0,0,0,1,2,0,0
944 DATA 0,0,0,0,0,0,0,1,1,1,1,1,1,2,0,0
945 DATA 0,0,0,0,0,0,1,1,2,2,2,2,2,0,0,0
946 DATA 0,0,0,0,0,0,1,2,0,0,0,0,0,0,0,0
947 DATA 0,0,0,0,0,0,1,1,1,1,2,0,0,0,0,0
948 DATA 0,0,0,0,0,0,0,1,1,1,1,2,0,0,0,0
949 DATA 0,0,0,0,0,0,0,0,0,1,1,2,0,0,0,0
950 DATA 0,0,0,0,0,1,1,1,1,1,1,2,0,0,0,0
951 DATA 0,0,1,1,1,1,1,1,1,1,2,2,0,0,0,0
952 DATA 0,1,1,1,1,1,1,2,2,2,2,0,0,0,0,0
953 DATA 0,1,0,1,0,1,2,0,0,0,0,0,0,0,0,0
954 DATA 0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
955 DATA 0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0
956 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
960 ' snake mask
961 DATA 3,3,3,3,3,3,3,3,3,3,0,0,0,0,3,3
962 DATA 3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,3
963 DATA 3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,3
964 DATA 3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,3
965 DATA 3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,3
966 DATA 3,3,3,3,3,0,0,0,0,0,0,0,0,0,3,3
967 DATA 3,3,3,3,3,0,0,0,0,0,0,0,0,3,3,3
968 DATA 3,3,3,3,3,0,0,0,0,0,0,0,0,3,3,3
969 DATA 3,3,3,3,0,0,0,0,0,0,0,0,0,3,3,3
970 DATA 3,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3
971 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3
972 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3
973 DATA 0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3
974 DATA 0,0,0,0,0,0,0,0,3,3,3,3,3,3,3,3
975 DATA 0,0,0,0,0,0,0,3,3,3,3,3,3,3,3,3
976 DATA 0,0,0,0,0,0,3,3,3,3,3,3,3,3,3,3
980 ' grass
981 DATA 0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0
982 DATA 0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0
983 DATA 0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0
984 DATA 0,0,0,0,1,0,0,0,0,0,1,0,0,0,1,0
985 DATA 0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0
986 DATA 0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0
987 DATA 0,0,1,0,0,0,0,0,1,0,0,0,1,0,0,0
988 DATA 0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1
989 DATA 0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,1
992 DATA 0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0
993 DATA 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0
994 DATA 0,0,0,1,0,0,0,1,0,0,0,0,0,0,1,0
995 DATA 0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0
996 DATA 1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0
997 DATA 1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0
998 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0
1000 ' ice
1010 DATA 1,1,1,1,1,1,3,1,1,1,3,1,1,1,1,1
1011 DATA 1,3,1,1,1,1,1,1,1,3,1,1,1,3,1,1
1012 DATA 3,1,1,1,3,1,1,1,1,1,1,1,3,1,1,1
1013 DATA 1,1,1,3,1,1,1,3,1,1,1,3,1,1,1,3
1014 DATA 1,1,1,1,1,1,3,1,1,1,3,1,1,1,1,1
1015 DATA 1,3,1,1,1,3,1,1,1,3,1,1,1,3,1,1
1016 DATA 3,1,1,1,3,1,1,1,1,1,1,1,3,1,1,1
1017 DATA 1,1,1,3,1,1,1,3,1,1,1,1,1,1,1,3
1018 DATA 1,1,1,1,1,1,3,1,1,1,3,1,1,1,1,1
1019 DATA 1,3,1,1,1,1,1,1,1,3,1,1,1,3,1,1
1020 DATA 3,1,1,1,3,1,1,1,1,1,1,1,3,1,1,1
1021 DATA 1,1,1,3,1,1,1,3,1,1,1,3,1,1,1,3
1022 DATA 1,1,1,1,1,1,3,1,1,1,3,1,1,1,3,1
1023 DATA 1,3,1,1,1,3,1,1,1,3,1,1,1,3,1,1
1024 DATA 3,1,1,1,3,1,1,1,1,1,1,1,3,1,1,1
1025 DATA 1,1,1,3,1,1,1,3,1,1,1,1,1,1,1,3
Geesh... really starting to become cluttered in here with DATA statements. We'll look at that next.
No comments:
Post a Comment