|
Программа «Мультипликатор»
|
Программа предназначена для создания, просмотра и записи на магнитофон мультфильмов.
Управляющие клавиши:
Q - движение курсора вверх.
А - движение курсора вниз.
О - движение курсора влево.
Р - движение курсора вправо.
Курсор - это мигающая точка, в начале работы находится в левом нижнем углу экрана.
CapsShift+U - установка курсора по координатам;
CapsShift+K - запись кадра в память. По этой команде запоминаются все изменения произошедшие на экране со времени предыдущего выполнения этой команды.
CapsShift+P - режим перемещения курсора без изменения экрана;
CapsShift+R - режим рисования;
Т - режим ускоренного перемещения курсора без изменения экрана;
CapsShift+T - выход из режима ускоренного перемещения;
CapsShift+Z - запись на магнитофон составленного мультфильма или его части (запись предлагается также при переполнении буфера).
CapsShift+I - изменение цвета (цвет вводится номером 0 - 7).
CapsShift+L - просмотр мультфильма.
CapsShift+C - очистка экрана.
Пример составления простою мультфильма.
В мультфильме нужно изобразить человека взмахивающего рукой. Сначала рисуем человека в исходном состоянии и записываем этот кадр в память (CapsShift+K). Далее стираем у него руку и рисуем ее в новом положении. Записываем в память этот кадр. И таким-же образом еще несколько кадров.
При просмотре (CapsShift+L) вы увидите человека у которого изменяется положение руки.
Примечание.
В программе не предусмотрены проверки при вводе цвета и координат, поэтому их неправильный ввод может вызвать ошибку.
1 DATA 65000,4
2 DATA «64010000798479842178691100400100131 ABE280F77E52AEEFD73237223772313»
3 DATA «22EEFDE123130B78B120E6C921004011 786901001BEDB0C90179842AEEFDEB211B»
4 DATA «00007AB820047BB928060303032318 F2ED4BE8FD1807ED4BE8FD2AEAFDEB2179DD»
5 DATA «84C5C1C50B78B120FB7AB3280 A4E2346237E23021В18EBC1C900A2»
6 PRINT "wait": GO SUB 9990
19 CLEAR 26999: LET rf=1: LET w=20: LET c=0: CLS: LET n=199: LET x=0: LET y=0: LET i=0
20 RANDOMIZE USR 65044
60 LET a$=INKEY$
65 IF a$="t" THEN LET rf=10: LET zxc=n: LET n=990
66 IF a$="T" THEN LET rf=l: LET n=zxc
70 IF a$="U" THEN GO SUB 350: GO TO 60
75 IF a$="K" THEN GO SUB 4000: GO TO 60
77 IF a$="L" THEN RANDOMIZE USR 65056: GO TO 60
80 IF a$=”C" THEN CLS: GO TO 60
85 IF a$=”Z" THEN GO SUB 5000: GO TO 60
90 IF a$="R" THEN LET n=199: GO TO 60
100 IF a$="S" THEN LET n=230: GO TO 60
110 IF a$="I” THEN GO SUB 360: GO TO 60
115 IF a$=”P” THEN LET n=990: GO TO 60
120 IF a$="H” THEN FOR x=l TO 13: PRINT #0; AT 0,0;q$(x): PAUSE 0: NEXT x
130 IF a$="q” THEN LET y=y+rf
140 IF a$=”o" THEN LET x=x-rf
150 IF a$="a" THEN LET y=y-rf
160 IF a$="p" THEN LET x=x+rf
180 LET asw=22528+(x/8)+32+((192-y)/8): LET attr=PEEK asw
181 IF y<0 THEN LET y=174
182 IF y>175 THEN LET y=0
183 IF x>255 THEN LET x=0
184 IF x<0 THEN LET x=255
190 LET asw=22528+INT (x/8)+32*INT ((175-y)/8): LET attr=PEEK asw
196 GO TO n
197 GO SUB 990
199 PLOT INK i;x,у
205 PRINT #0;AT 0,0;« »,« »
210 PRINT #0;AT 0,0;x,y
225 GO TO 60
230 GO SUB 990
232 PLOT INVERSE l;x,у
245 PRINT #0;AT 0,0;" "," "
250 PRINT #0;AT 0,0;x,y 255 GO TO 60
350 PRINT #0;AT 0,0;"WWEDITE KOORDINATY ";: PAUSE 0: INPUT x,y: RETURN
360 PRINT #0;AT 0,0;«WWEDITE CWET»;: PAUSE 0: INPUT i; RETURN
990 LET fg=POINT (x,y): LET w=20: LET c=0
992 LET a$=INKEY$
993 IF w>0 THEN LET w=w-l: GO TO 1000 995 LET w=20: LET c=l-c
1000 PLOT INVERSE c;x,у 1005 IF a$<>”" THEN GO TO 1020
1010 GO TO 992
1030 PLOT INVERSE l-fg;x,y: IF N=990 THEN GO TO 60 1040 RETURN
4000 IF PEEK 65006+256*PEEK 65007>63G00 THEN GO SUB 5000
4010 RANDOMIZE USR 65008 4030 RETURN
5000 LET adr=PEEK 65004+256*PEEK 65005: LET adrl=PEEK 65006+256*PEEK 65007: SAVE «cod»CODE adr,adrl-adr
5020 POKE 65006,PEEK 65004: POKE 65007,PEEK 65005: RETURN
9990 RESTORE 1
9993 READ a,S: FOR f=1 TO S
9994 READ 1$: LET 1=LEN 1$: LET s=0: LET k=2
9995 LET a$=l$(k-l): LET b$=l$(k)
9996 LET c=(CODE a$-48-(7*(a$>"@")))*16+CODE b$-48-(7* (b$>"@">)
9997 IF k<1 THEN POKE a,c: LET s=s+c: LET k=k+2: LET a=a+1: GO TO 9995
9998 IF s-256*INT (s/256)<>c THEN PRINT "error in string";f+l: STOP
9999 NEXT f: RETURN
Текст программы просмотра мультфильма, записанного на магнитофон
1 DATA 60000,6
2 DATA «С30ВЕВ1103003EFFB737DD2131EB08F33E 0FD3FE213F05E5DBFE1FE620CD6F3CEB»
3 DATA «BFC0CDE70530FA21690010FE2B7CB520F9 CDE30530EB069CCDE30530E43EC6B866»
4 DATA «30E02420F106C9CDE70530D578FED430F4C DE705D079EE034F260006B0181F089D»
5 DATA «2007300FDD7500180FCB11ADC0791F4F 131807DD7E00ADC0DD231B0806B22E0113»
6 DATA «CDE305D03ECBB8CB1506B0D2E0EA7CAD6 77AB320CAE53A33EB2A31EB77DD213148»
7 DATA «EB110300E108DD750018CD111200DD2117 EBAF37C356050046»
20 GO SUB 9993
40 RANDOMIZE USR 60000
50 RANDOMIZE USR 60003
60 GO TO 40
9993 READ a,S: FOR f=1 TO S
9994 READ 1$: LET 1=LEN 1$: LET s=0: LET k=2
9995 LET a$=1$(k-1): LET b$=1$(k)
9996 LET c=(CODE a$-48-(7*(a$>"@")))*16+CODE b$-48-(7*(b$>"@"))
9997 IF k<1 THEN POKE a,c: LET s=s+c: LET k=k+2: LETa=a+1: GO TO 9995
9998 IF s-256*INT (s/256)<>c THEN PRINT "error in string";f+1: STOP
9999 NEXT f: RETURN
|