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

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

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

> Игровая программа, таймер и генерация звука
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Цитата
Как сделать "пиканье"? то есть, что бы звук включался и отключался в определенные моменты
Вероятно, в те моменты, когда звук не нужен, его надо отключать, используя NoSound, который ты написал, а зачем - непонятно...
Цитата
а так же ускорялся, либо замедлялся
Кто "ускорялся" или "замедлялся"? Звук? Он не может замедляться и ускоряться. Он может только быть или нет. Может быть, тебе надо более высокие звуки при приближении к цели? Или просто уменьшить интервалы между выключением звука и его следующим включением...
 К началу страницы 
+ Ответить 

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


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

 





- Текстовая версия 20.04.2024 16:33
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name