Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2011, 10:29   #1
Dronlion
 
Регистрация: 05.04.2011
Сообщений: 6
Радость QBasic графика в движении

Обьясните новичку вот написал движок игры

Код:
Код:
DECLARE SUB KbINIT ()
DECLARE SUB KbKILL ()

DECLARE SUB Prepare ()
DECLARE SUB FLIP ()
DECLARE SUB DrawALL ()
DIM SHARED Up%, Dn%, Lf%, Rg%
CONST Kamney = 20, SpdKam = 3, KamnepadTimer = 5
CONST ALStp = 8, ALYst = 4
DIM SHARED Act%, Viz%
DIM SHARED KamX%(Kamney), KamY%(Kamney)
DIM SHARED KamID%(Kamney), KamR%(Kamney), TimeNext%
DIM SHARED AlpX%, AlpY%, GameKadr%
DIM SHARED L%, R%, U%, D%
DIM SHARED ScrBF%(8001)
KbINIT
Prepare
DO
L% = L% OR Lf%
R% = R% OR Rg%
U% = U% OR Up%
D% = D% OR Dn%
IF GameKadr% THEN
AlpX% = AlpX% - ALStp * L%
IF AlpX% < ALStp * 2 THEN AlpX% = ALStp * 2
AlpX% = AlpX% + ALStp * R%
IF AlpX% > 639 - ALStp * 2 THEN AlpX% = 639 - ALStp * 2
AlpY% = AlpY% - ALYst * U%
IF AlpY% < ALYst * 2 THEN AlpY% = ALYst * 2
AlpY% = AlpY% + ALYst * D%
IF AlpY% > (349 - ALYst * 2) THEN AlpY% = 349 - ALYst * 2

TimeNext% = TimeNext% - 1
IF TimeNext% = 0 THEN
TimeNext% = KamnepadTimer
FOR i% = 1 TO Kamney
IF KamID%(i%) = 0 THEN
KamID%(i%) = 1
KamX%(i%) = RND * 580 + 30
KamY%(i%) = 30
KamR%(i%) = RND * 10 + 5
EXIT FOR
END IF
NEXT
END IF
FOR i% = 1 TO Kamney
IF KamID%(i%) = 1 THEN
KamY%(i%) = KamY%(i%) + SpdKam
IF KamY%(i%) > 350 THEN KamID%(i%) = 0
END IF
NEXT
GameKadr% = GameKadr% - 1
L% = 0: R% = 0: U% = 0: D% = 0
END IF
DrawALL
FLIP
LOOP UNTIL EscK%
KbKILL

END
' Процедуры прерывания
UpOn: Up% = 1: RETURN
UpOff: Up% = 0: RETURN
DnOn: Dn% = 1: RETURN
DnOff: Dn% = 0: RETURN
LfOn: Lf% = 1: RETURN
LfOff: Lf% = 0: RETURN
RgOn: Rg% = 1: RETURN
RgOff: Rg% = 0: RETURN
EscOn: EscK% = 1: RETURN
TmEVENT: PLAY "p64": GameKadr% = GameKadr% + 1
Kb$ = INKEY$: RETURN

SUB DrawALL
LINE (0, 0)-(639, 349), 9, BF
LINE (50, 10)-(150, 40), 7, BF 'PLOSHADKA
LINE (50, 10)-(150, 40), 10, B 'ploshadka
LINE (AlpX% - 10, AlpY% - 10)-(AlpX% + 10, AlpY% + 10), 12, BF 'chelovek
FOR i% = 1 TO Kamney
IF KamID%(i%) = 1 THEN
CIRCLE (KamX%(i%), KamY%(i%)), KamR%(i%), 15
PAINT (KamX%(i%), KamY%(i%)), 7, 15
END IF
NEXT
END SUB

SUB FLIP
SWAP Act%, Viz%
SCREEN , , , Viz%
WAIT &H3DA, 8
SCREEN , , Act%, Viz%
'WAIT &H3DA, 8, 8
END SUB

SUB KbINIT
' Назначаем клавишу вверх
KEY 15, "АH"
KEY 16, "А" + CHR$(200)
' Назначаем клавишу вниз
KEY 17, "АP"
KEY 18, "А" + CHR$(208)
' Назначаем клавишу лево
KEY 19, "АK"
KEY 20, "А" + CHR$(203)
' Назначаем клавишу право
KEY 21, "АM"
KEY 22, "А" + CHR$(205)
' Назначаем клавишу ESC
KEY 23, CHR$(0) + CHR$(1)
' Назначаем процедуры прерывания
ON KEY(15) GOSUB UpOn
ON KEY(16) GOSUB UpOff
ON KEY(17) GOSUB DnOn
ON KEY(18) GOSUB DnOff
ON KEY(19) GOSUB LfOn
ON KEY(20) GOSUB LfOff
ON KEY(21) GOSUB RgOn
ON KEY(22) GOSUB RgOff
ON KEY(23) GOSUB EscOn
' Включаем процедуры
KEY(15) ON
KEY(16) ON
KEY(17) ON
KEY(18) ON
KEY(19) ON
KEY(20) ON
KEY(21) ON
KEY(22) ON
KEY(23) ON
END SUB

SUB KbKILL
' Сбрасываем векторы
KEY(15) OFF
KEY(16) OFF
KEY(17) OFF
KEY(18) OFF
KEY(19) OFF
KEY(20) OFF
KEY(21) OFF
KEY(22) OFF
KEY(23) OFF
END SUB

SUB Prepare

ON PLAY(1) GOSUB TmEVENT
PLAY ON
PLAY "MB ML P64"
Act% = 1: Viz% = 0
SCREEN 9, , Act%, Viz%
AlpX% = 320: AlpY% = 320
TimeNext% = 100
END SUB

Осталось немногое, обьясните как можно сделать чтобы при пересечении квадрата с камне игра выдавала надпись Game over
Dronlion вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
QBasic Дмитрий карпенко Помощь студентам 0 26.02.2011 14:48
QBasic 064 Помощь студентам 6 30.06.2010 07:54
Построение графика функции на QBasic artemon999 Помощь студентам 2 30.03.2009 15:16
При движении картинки происходит мерцание... Teen4jump Gamedev - cоздание игр: Unity, OpenGL, DirectX 14 11.07.2007 01:43
Мигание при движении Speeker Общие вопросы Delphi 1 14.02.2007 01:22