Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.78/36: Рейтинг темы: голосов - 36, средняя оценка - 4.78
filip5210
0 / 0 / 0
Регистрация: 05.09.2013
Сообщений: 18
1

Написание игры "Змейка"

19.09.2013, 23:38. Просмотров 6936. Ответов 27
Метки нет (Все метки)

Вот я не понимаю: как в змейке указать ну что бы она двигалась автоматически и самое главное как что бы при нажатие на клавишу "верх" что бы она двигалась в верх? если "влево" то она двигалась влево?
как вообще создать движение? и что бы она подчинялась клавишам при нажатии "верх" "низ" "вправо" "влево" ???
Пожалуйста объясните.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2013, 23:38
Ответы с готовыми решениями:

Избавиться от сообщений "Файл не найден", "Системе не удается найти указанный путь", "Устройство не готово"
Здравствуйте. В батнике присутствует поиск файлов: for %%i in (c d e f g h i j...

Не работает стрелка "влево" в движке для игры
@echo off SetLocal EnableExtensions set x==1 set y=0 Set...

Копирование определённых файлов из папки, в которой находится сам копирующий bat-файл, в папку игры "Steam"
Здравствуйте, пишу скрипт который должен скопировать из текущей папки(где сам...

for /f "delims=" %%b in ('dir !DirName! /b /s /a-d') do () жрёт символы "!" и "^"
Добрый день, коллеги. День сегодня убил, но так и не понял что делать, может...

Небольшой движок для игры. Нужны люди, "шарящие" в Batch для его доработки!
Я создал небольшой движок для игры с помощю Dragokas .Но также для работы этой...

27
magirus
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
27954 / 15675 / 959
Регистрация: 15.09.2009
Сообщений: 67,837
Записей в блоге: 78
19.09.2013, 23:40 2
сначала объясните, каким боком здесь раздел Bat/ CMD...
0
filip5210
0 / 0 / 0
Регистрация: 05.09.2013
Сообщений: 18
20.09.2013, 20:19  [ТС] 3
так я в и хочу в bat написать
0
KosmonavtPad
0 / 0 / 0
Регистрация: 19.09.2013
Сообщений: 5
20.09.2013, 20:54 4
В бате такие вещи не пишут , если хочешь сделать такую игру , то юзай языки программирования (кому как конечно , но по мне легче всего C#)
0
Dragokas
Эксперт WindowsАвтор FAQ
17009 / 7066 / 856
Регистрация: 25.12.2011
Сообщений: 10,881
Записей в блоге: 16
21.09.2013, 15:03 5
Старт уже положен.
Так что дерзайте: Сапер на CMD
1
Charles Kludge
Клюг
7642 / 3157 / 382
Регистрация: 03.05.2011
Сообщений: 8,382
21.09.2013, 15:06 6
Цитата Сообщение от KosmonavtPad Посмотреть сообщение
В бате такие вещи не пишут
Ну почему же?
SNAKE.BAT - A pure Windows batch implementation of the classic game
Код
http://www.dostips.com/forum/viewtopic.php?f=3&t=4741
2
Dragokas
Эксперт WindowsАвтор FAQ
17009 / 7066 / 856
Регистрация: 25.12.2011
Сообщений: 10,881
Записей в блоге: 16
21.09.2013, 15:07 7
Цитата Сообщение от filip5210 Посмотреть сообщение
при нажатие на клавишу "верх" что бы она двигалась в верх?
только стирать всю информацию на экране через cls и отрисовывать заново.

Цитата Сообщение от filip5210 Посмотреть сообщение
если "влево" то она двигалась влево?
Через получение служебного символа BackSpace: 0x08 by jeb
0
logincyberforu
30 / 31 / 0
Регистрация: 26.08.2013
Сообщений: 282
21.09.2013, 15:11 8
filip5210, нуу типа присвоить сторонам х/y/-x-y ну через определённый интервал плюсовать по еденице если небыло нажпта клавиша... но смотря как ищо ты пытаешся получить код клавиш
0
Dragokas
Эксперт WindowsАвтор FAQ
17009 / 7066 / 856
Регистрация: 25.12.2011
Сообщений: 10,881
Записей в блоге: 16
21.09.2013, 15:52 9
logincyberforu, да, с отслеживанием нажатий там засада.
Здесь обсуждались нативные и не очень способы получить код клавиши.
0
logincyberforu
30 / 31 / 0
Регистрация: 26.08.2013
Сообщений: 282
21.09.2013, 16:04 10
Dragokas, как "быдло" вариант могу предложить управление только клавишей ентер, то есть змейка поварачивает толко на лево или право
0
Dragokas
Эксперт WindowsАвтор FAQ
17009 / 7066 / 856
Регистрация: 25.12.2011
Сообщений: 10,881
Записей в блоге: 16
21.09.2013, 16:18 11
logincyberforu, не, принцип змейки ведь предусматривает некую скорость реакции.
Думаю, "пошаговый квест" тут не вариант -))

Можно, например, вместо стрелок использовать набор клавиш WASD, тогда интерактивность будет соблюдена с помощью встроенной в Win7 (и Win9x) choice:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@echo off
:begin
>nul CHOICE /C WASD /N
cls
call :%errorlevel%
goto begin
 
:1
echo W
exit /B
 
:2
echo A
exit /B
 
:3
echo S
exit /B
 
:4
echo D
exit /B
Для Win XP choice.exe, к сожалению, придется тянуть вместе с батником.
0
logincyberforu
30 / 31 / 0
Регистрация: 26.08.2013
Сообщений: 282
21.09.2013, 16:30 12
Dragokas, ууу так я думал прога и должна быть в формате bat. Чиста для прогеров давненько я в такие не играль.
а вот с ентером ступил,- както запамятывал что прога будет ждать нажатия ентер.

чесно говоря такого вопроса както не вставало... могу припомнить только "REPLY.COM" но думаю что он не подойдёт...
0
Eva Rosalene
T for Trans-
4050 / 1589 / 303
Регистрация: 06.01.2013
Сообщений: 4,182
Завершенные тесты: 2
21.09.2013, 16:45 13
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
set coordx=10
set coordy=10
set turn=0
:again
choice /C WASDP /T 1 /D P > nul
set /a turn=%turn%+1
if "%errorlevel%"=="1" (set /a coordy=%coordy%+1)
if "%errorlevel%"=="2" (set /a coordx=%coordy%-1)
if "%errorlevel%"=="3" (set /a coordy=%coordy%-1)
if "%errorlevel%"=="4" (set /a coordx=%coordx%+1)
cls
echo.Turn: %turn%
echo.Pos: {0x: %coordx% 0y:%coordy%}
goto again
Что-то типично-бредовое =D

Добавлено через 7 минут
Есть вариант попробовать на AutoIT кейграббер написать. С блекджеком и красивыми девушками. Но вот только он будет перехватывать сообщения даже когда окно игры неактивно (или придется добавить соответствующую проверку).
1
logincyberforu
30 / 31 / 0
Регистрация: 26.08.2013
Сообщений: 282
21.09.2013, 17:01 14
Просмотрел всю справку по cmd нашол только две команды которые могут быть полезны,- расширеная клава и расписание событий... но и из них только с большим трудом можно извлечь чтото полезное...

так что проще написать прогу на другом яп в консольном окне, а всем говорить что это cmd, но в exe
0
Eva Rosalene
T for Trans-
4050 / 1589 / 303
Регистрация: 06.01.2013
Сообщений: 4,182
Завершенные тесты: 2
21.09.2013, 17:48 15
Например:
Код
$Args = $CmdLine[0]
Dim $HKeys[$Args]
$HKeys[0] = ""
For $i = 1 to $CmdLine[0] - 1
 $HKeys[$i] = $CmdLine[$i + 1]
 HotKeySet($HKeys[$i], "SKey")
Next
if $CmdLine[0] = 0 then
   $delay = 200
else 
   $delay = Number($CmdLine[1])
EndIf
$T = TimerInit()
$Key = 0

While(True)
 if TimerDiff($T) >= $delay then 
	Exit($Key)
 EndIf
WEnd

Func SKey()
 for $i = 0 to $CmdLine[0] - 1
   if @HotKeyPressed = $HKeys[$i] then $Key = $i
 Next
EndFunc
Пример вызова из батника:
Bash
1
2
3
@echo off
start /wait KeyPress 2000 {ESCAPE} {UP} A
echo.%errorlevel%
Сначала идет время в миллисекундах, потом названия кнопок в формате AutoIT (они совпадают с VBS)
Только после окончания времени скрипт завершается и возвращает порядковый номер последней нажатой клавиши из списка, или 0, если такая клавиша не была нажата.
1
Вложения
Тип файла: zip KeyPress.zip (280.1 Кб, 35 просмотров)
Eva Rosalene
T for Trans-
4050 / 1589 / 303
Регистрация: 06.01.2013
Сообщений: 4,182
Завершенные тесты: 2
22.09.2013, 14:21 16
Почти змейка =D
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
@echo off
set posx=10
set posy=10
set frln=.....................
mode con cols=22 lines=22
:again
cls
for /L %%A IN (1,1,21) DO (
 if not "%posy%"=="%%A" (
  echo.%frln%
 ) else (
  call :draw %posx%
 )
)
start /wait KeyPress 50 {UP} {DOWN} {LEFT} {RIGHT}
if "%errorlevel%"=="1" (set /a posy=%posy%-1)
if "%errorlevel%"=="2" (set /a posy=%posy%+1)
if "%errorlevel%"=="3" (set /a posx=%posx%-1)
if "%errorlevel%"=="4" (set /a posx=%posx%+1)
goto again
:draw
setlocal enabledelayedexpansion
(set line=)
set /a before=%~1-1
set /a after=21-%~1
for /L %%A IN (1,1,%before%) DO (set line=!line!.)
set line=%line%@
for /L %%A IN (1,1,%after%) DO (set line=!line!.)
echo.%line%
endlocal
exit /b
Добавлено через 47 секунд
Управление [ВВЕРХ/ВНИЗ/ВЛЕВО/ВПРАВО]
2
MaksKompanienko
1 / 1 / 0
Регистрация: 26.07.2016
Сообщений: 45
26.07.2016, 15:57 17
Dragokas, logincyberforu,
Я так и не понял как клавиатурой управлять
0
Dragokas
Эксперт WindowsАвтор FAQ
17009 / 7066 / 856
Регистрация: 25.12.2011
Сообщений: 10,881
Записей в блоге: 16
26.07.2016, 16:06 18
Как в большинстве Action-играх.
Цитата Сообщение от Dragokas Посмотреть сообщение
>nul CHOICE /C WASD /N
1
MaksKompanienko
1 / 1 / 0
Регистрация: 26.07.2016
Сообщений: 45
27.07.2016, 12:03 19
1234
Цитата Сообщение от Dragokas Посмотреть сообщение
Как в большинстве Action-играх.
а как сделать чтобы на место букв или цыфр была клавиша "вниз" ? Типо
>nul CHOICE /C "клавишва вниз" /N
И возможно то что я спросил в этой теме : Можно ли сделать так, чтобы выбор пункта меню осуществлялся с помощью клавиатуры или мыши?
0
Dragokas
Эксперт WindowsАвтор FAQ
17009 / 7066 / 856
Регистрация: 25.12.2011
Сообщений: 10,881
Записей в блоге: 16
27.07.2016, 16:57 20
Цитата Сообщение от MaksKompanienko Посмотреть сообщение
а как сделать чтобы на место букв или цыфр была клавиша "вниз" ?
На чистом CMD никак.
На Windows XP / 2003 и ниже можно было через ассемблерную вставку, т.к. только в нём есть утилита debug.exe:
(наследие от Delphiist):
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
@echo off
SetLocal EnableExtensions
 
Set GetKeyFileName=GetKey
 
Call :MakeProgramGetKey %GetKeyFileName%
 
:begin
Call :GetKeyCode %GetKeyFileName%
echo KeyCode = %Result1%, Character = %Result2%
goto :begin
 
Rem Ожидает нажатия клавиши и возвращает ее скан код
:GetKeyCode & Rem (String #FileName#)
    Rem возвращает скан-код и через пробел символ
    For /F "tokens=1,2* delims= " %%i In ('%1.com') Do (
        Set Result1=%%i
        If %%i EQU 57 (Set Result2= ) else (Set Result2=%%j)
    )
Exit /b
 
Rem Создание программы по определению скан кода клавиши
Rem Типа асм вставки (они же не запрещены в других языках, так почему же тут не воспользоваться...) :)))
:MakeProgramGetKey
    If Not Exist %WinDir%\System32\Debug.exe (
        Echo Не найден файл: "%WinDir%\System32\Debug.exe"
        Pause>nul
        Exit
    )
 
    Echo n %1.com>%1.dat
    Echo r cx>>%1.dat
    Echo 3E>>%1.dat
    Echo a 100>>%1.dat
    Echo xor dx,dx>>%1.dat
    Echo mov dl,24>>%1.dat
    Echo push dx>>%1.dat
    Echo mov ah,^0>>%1.dat
    Echo int 16>>%1.dat
    Echo push cs>>%1.dat
    Echo pop ds>>%1.dat
    Echo mov dl,al>>%1.dat
    Echo push dx>>%1.dat
    Echo mov dl,20>>%1.dat
    Echo push dx>>%1.dat
    Echo mov cl,08>>%1.dat
    Echo shr ax,cl>>%1.dat
    Echo mov bl,0A>>%1.dat
    Echo mov cx,03>>%1.dat
    Echo div bl>>%1.dat
    Echo add ah,30>>%1.dat
    Echo mov dl,ah>>%1.dat
    Echo push dx>>%1.dat
    Echo xor ah,ah>>%1.dat
    Echo add cx,01>>%1.dat
    Echo test al,al>>%1.dat
    Echo jnz 11A>>%1.dat
    Echo mov di,150>>%1.dat
    Echo mov dx,di>>%1.dat
    Echo pop ax>>%1.dat
    Echo mov [di],al>>%1.dat
    Echo add di,^1>>%1.dat
    Echo loop 130>>%1.dat
    Echo mov ah,^9>>%1.dat
    Echo int 21>>%1.dat
    Echo int 20>>%1.dat
    Echo.>>%1.dat
    Echo w>>%1.dat
    Echo q>>%1.dat
    Echo.>>%1.dat
    debug < %1.dat > nul
Exit /b
Цитата Сообщение от MaksKompanienko Посмотреть сообщение
И возможно то что я спросил в этой теме : Можно ли сделать так, чтобы выбор пункта меню осуществлялся с помощью клавиатуры или мыши?
Для реализации этого Вам нужен язык высокого уровня.
0
27.07.2016, 16:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.07.2016, 16:57

"tokens=*" "съедает" одну строчку при обработке вывода результата выполнения команды ping :)
Друзья, нашел батничек для пинга узла и вывода инфо в файл, кое что подправил...

Искать в файле из директории "base" строки, которые содержат строку из "list.ini" и отсеивать их
Здравствуйте. Имеется данный Batch: @ECHO off SETLOCAL EnableExtensions...

Поиск файлов с атрибутом "скрытый" ("hidden") на заданном дисковом томе с целью их дальнейшего удаления
Всем здравствуйте!!! Помогите пожалуйста создать батник. Задание: Поиск...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru