Спрайттармен жұмыс

1.Графикалық режимде жұмыс істейтін кез-келген қосымша үшін суреттерді қозғалтуда не қимылдатуда спрайттардың қолдауы қажет. Кез-келген ойын программалары теңіз толқуын,ойындағы батырлардың қозғалуын,басқа түрлі эффектілерді көрсету үшін көптеген спрайттарды пайдаланады. Мұндай компьютерлік мултипликация алдын-ала жадыға жүктелген суреттер тізбегінің тез ауысуы арқылы орындалады. Оларды әрдайым қатты дискіден оқу өте жай жүреді, ал 1 секундта 5-10 кадр көрсету керек, әйтпесе адам көзі экрандағы бейненің дұрыс шықпағанын байқап қалады.

Сондықтан суреттерді кейін оларды файлдан ешқандай қиындықсыз тез оқу үшін Бейсик форматында сақтаған жақсы.

  1. Спрайт- айнымалы арқылы оқылатын және сол айнымалы арқылы экранға шығарылатын нақты бір экранның бөлігі. Олүшін төмендегі екі оператор қолданылады.

GET (x1, y1)-(x2,y2), {айнымалы аты}

PUT (x1,y1), {айнымалы аты},{шығару әдісі}

GET операторы сол жақ жоғарғы бұрышының координаты x1, y1,оң жақ төменгі бұрышының координаттары x2,y2 болатын экранның тіктөртбұрышты бөлігін оператордағы соңғы параметр ретінде көрсетілген айнымалыға көшіреді. Бұл айнымалы ретінде санды сақтайтын жай айнымалы емес, спрайт жадыдан көп орн алатындықтан массив алынуы керек.

Мүмкіндігі жоғары экран режимдерінде бір экран нүктесіне 1 байт бөлінуі мүмкін, яғн өлшемі 10×16 нүкте болатын онша үлкен емес спрайтты сақтау үшін әдетте нүктелер санын артығымен алады.

  1. PUT оперераторының соңында спрайтты экранға шығару тәсілін анықтайтын параметр енгізілуі мүмкін. Әр түрлі шығару тәсілдерін дүрыс пайдалана отырып, мүмкін болатын түрлі анимациялық эффектілерді алуға болады.

Спрайтты шығару тәсілдері:

Параметр мәні PUT операторының жұмысы. AND, OR

Спрайт биттерінің логикалық қосылу және бірігу (нүкте түстегінің құралуы) күрделі формалллы бейнелерді құру жән                                                                                  анимациялау үшін қолданылады.

PSET Экранда алдын-ала орнын тазалап, жаңа спрайт салу.

PRESET PSET сиятты тек түстері ауысады.                                                                                                                                                                                                 XOR Экран нүктелерінің түсі спрайт нүктелерінің

түсімен сәйкес келгенде бұл түстер қарама-қарсы

өзгереді,бұл спрайтты бір жерде екі рет сызу арқылы экранда

ескі бейнені қалпына келтіреді.

Егер шығару әдістері көрсетілмесе , спрайт массивке қалай көшірілсе, экранға солай шығады.

Мысалы:

SCREEN 12

‘ жадыдан спрайт үшін 10×10 нүкте орын бөлінген

DIM  BOX % (1TO 200)

‘спрайтты бастапқы координаттары

x1%=1 : x2%=10

y1%=1 : y2%=10

‘бірінші кезде спрайтты (боялған квадрат) қолмен саламыз

LINE (X1%,41%)-(X2%,42%),9,BF

‘Спрайтты BOX%айнымалысына көшіру

GET (X1%,Y1%)-(X2%,Y2%),BOX%

‘Спрайтты бейнелеу циклі

FOR X1%=1 TO 630 STEP 10

‘экранды орнын тазалап BOX% массивінен спрайтты шығарамыз

PUT (X1%,Y1%),BOX%, PSET

‘1 секундқа үзіліс

SLEEP 1

‘циклді қайталау

NEXT

END

Программа іске қосылған соң экранның жоғарғы жағында көк жолақ әр секунд сайын өсіп отырады.

SLEEP операторынан соң

PUT (x1%,y1%), BOX%,XOR жолын қоссақ квадрат әр секунд сайын қозғалып отырады.

Шеңберді қозғалту.

SCREEN 12

DIM BOX% (1TO 200)

CIRCLE (10,10), 9, 15

PAINT (10, 10), 4,15

GET (1, 1)-(20, 20),BOX%

FOR x1% = 1 TO 600 STEP 10

PUT (1 + x1%, 1), BOX%, XOR

SLEEP 1

PUT (1+x1%, 1), BOX%, XOR

NEXT x1%

END

REM Летающая тарелка

DEFINT A-Z

DIM TARELKA (300)

X = 320: Y = 240

SCREEN 12

‘Построение тарелки

CIRCLE (100, 50), 20, 15 , , , .4

PAINT (100, 50), 4, 15

CIRCLE (100, 46), 20, 15, 3.3, 0, .3

LINE (107, 44)-(110, 38), 15

CIRCLE (110, 38), 2, 15

LINE (93,44)-(90,38), 15

CIRCLE (90, 38), 2, 15

‘Запомнили образ

GET (79, 36)-(121, 59), TARELKA

‘Стерли

PUT (79, 36), TARELKA,XOR

‘Построение звездного неба

FOR I = 0 TO 1000

PSET (INT(RND* 639) +1,INT(RND*479) + 1), INT(RND*15) + 1

NEXT I

DO WHILE INKEY$ = “”

PUT (X,Y), TARELKA , XOR

SOUND 32767 , 4.92

PUT (X,Y),TARELKA ,XOR

DX = INT(RND*60) + 1: IF DX MOD 2 = 1 TNEN DX = -DX

X = X + DX

IF X > 590 THEN X = 590

IF X < 0 THEN X = 0

DY = INT(RND * 40) + 1 : IF DY MOD 2 = 1 THEN DY = -DY

Y =Y +DY

IF Y > 450 THEN Y = 450

IF Y < 0 Y = 0

LOOP

END

«Baribar.kz-тің» Telegram-каналына жазыламыз!