IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> Игровая программа, таймер и генерация звука
Rocket
сообщение 9.03.2009 22:56
Сообщение #1


Знаток
****

Группа: Пользователи
Сообщений: 306
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Доброго времени суток, уважаемые форумчане! smile.gif Мне нужно написать программу, которая перед началом игры произвольно устанавливает невидимую на экране метку и видимый символ "*", который перемещается по экрану с помощью стрелок. При движении символа генерируются звуковые колебания, частота которых зависит от расстояния до невидимой метки. Если метка не найдена за 4 секунды, метка перемещается в другую точку.
Мне очень эта программа напоминает металлоискатель : )
Пока что я сделал только перемещение символа "*" с помощью букв w,s,a,d.

data segment

old_cs dw ?
old_ip dw ?

symbol db ?
Pressed db 1

x db ?
y db ?

sgn db '*'
atr db 10

data ends

code segment
assume cs: code, ds: data


new_1c proc far


push ax
push bx
push ds
push es


mov ax, data
mov ds, ax


mov ax, 40h
mov es, ax
mov ax, es:[1Ch]
mov bx, es:[1Ah]
cmp bx, ax
jne get_char


jmp go_out

get_char:
mov al, es:[bx]
mov es:[1Ch], bx
mov symbol, al
inc Pressed

go_out:
pop es
pop ds
pop bx
pop ax
iret
new_1c endp

start:
mov ax, data
mov ds, ax


mov ah, 35h
mov al, 1Ch
int 21h

mov old_ip, bx
mov old_cs, es


push ds
mov dx, offset new_1c
mov ax, seg new_1c
mov ds, ax
mov ah, 25h
mov al, 1Ch
int 21h
pop ds

mov ax, data
mov es, ax

mov x,14
mov y,40

main_loop:

cmp Pressed, 0
je m1


mov Pressed, 0
cmp symbol, 30h
je q

xor ax, ax
mov al, symbol


m1: cmp al, 'w'
jne m2
dec x
jmp met

m2: cmp al, 's'
jne m3
inc x
jmp met

m3: cmp al, 'a'
jne m4
dec y
jmp met

m4: cmp al, 'd'
jne main_loop
inc y



met: xor bh, bh
mov ah, 13h
mov al, 0d
mov dh, x
mov dl, y
lea bp, sgn
mov cx, 1
mov bl, atr
int 10h

jmp main_loop

q:

push ds

mov dx, old_ip
mov ax, old_cs
mov ds, ax
mov ah, 25h
mov al, 1Ch
int 21h
pop ds

mov ax, 4C00h
int 21h
code ends
end start


Не могу понять, почему "вверх" не срабатывает с первого раза? приходится повторно нажимать "w", в результате мы поднимаеся не на одну позицию, а на две...
И как сделать какую-нибудь очистку экрана? чтоб очищать консоль и на экран выводился только один символ "*" .
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Rocket   Игровая программа   9.03.2009 22:56
volvo   Функция 06h прерывания 10h (прокрутка окна вверх) ...   9.03.2009 23:46
Rocket   Функция 06h прерывания 10h (прокрутка окна вверх)...   10.03.2009 0:33
andriano   1. Звук генерится посредством 53 таймера, причем е...   10.03.2009 8:31
TarasBer   2. х86 процессор не имеет аппаратных средств для ...   10.03.2009 14:50
TarasBer   А турбо-паскальный рандом такой же. Я не нашёл мен...   10.03.2009 16:00
volvo   По поводу генерации звуков - когда-то 7in на одном...   10.03.2009 20:06
Rocket   По поводу генерации звуков - когда-то 7in на одно...   12.03.2009 21:32
andriano   Использую эту процедуру в программе, динамик изда...   12.03.2009 21:52
Rocket   После долго перерыва возвращаюсь к выполнению этог...   14.05.2009 20:26
volvo   Как обычно: функция генерации случайного числа от ...   15.05.2009 0:33
Rocket   Как обычно: функция генерации случайного числа от...   15.05.2009 15:49
Rocket   В интернете как-то мало материала по этой теме, та...   16.05.2009 0:13
Rocket   Что-то вопрос о random'е намертво забуксовал.....   18.05.2009 20:29
volvo   Ничего не забуксовало... Просто до ассемблера надо...   22.05.2009 12:16
volvo   Вероятно, в те моменты, когда звук не нужен, его н...   22.05.2009 14:44
Rocket   Вероятно, в те моменты, когда звук не нужен, его ...   22.05.2009 15:36
volvo   Сомневаюсь... Какие ж варианты еще? А что не нрави...   22.05.2009 15:58
Rocket   Сомневаюсь... Какие ж варианты еще? А что не нрав...   22.05.2009 16:06
volvo   Очень просто... Вот тут есть пример практически то...   22.05.2009 16:23
Rocket   Очень просто... Вот тут есть пример практически т...   22.05.2009 16:43
volvo   Почему я? Кто привел тебе этот код, тот пускай и с...   22.05.2009 17:54
Rocket   Чтобы получить разные последовательности - занеси ...   22.05.2009 18:38
Rocket   Почему я? Кто привел тебе этот код, тот пускай и ...   22.05.2009 22:02
TarasBer   Почему я? Кто привел тебе этот код, тот пускай и ...   23.05.2009 19:35
volvo   То есть, у тебя не отрабатывает вот это (переимено...   22.05.2009 19:05
Rocket   То есть, у тебя не отрабатывает вот это Спасибо...   22.05.2009 21:21
volvo   AL взять и использовать, вот и байт тебе...   23.05.2009 0:16


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.05.2024 19:53
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"