Перейти к содержимому


Фотография

Арканойд на двоих


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 13

#1 Оффлайн   TraerTaer

TraerTaer
  • Пользователи
  • Сообщений: 94
  • Уровень сигнала: 0,11%
  • В игре: 0 час. 57 мин.

Награды

              

Отправлено 09 Июль 2016 - 19:17

Довольно долго пытался сделать обычный, но не смог. Создал эту тему чтобы спросить несколько вопросов и залить дополнение к обычному арканойду.

 

http://pastebin.com/5K6yh6g6 - арканойд на двоих(не работает)

 

Там весьма подробный комментарии. Вопрос таков, как сделать чтобы он после соприкосновении с платформой летел нормально? 

Так же просьба рассказать о всех костылях и вообще переписать пол проги за меня чтоб я понял свои косяки. Как я понимаю их много.

 

И как определить закрашен ли пиксель. Например:

  gpu.setBackground(color)
  gpu.set(x, y, " ")

Как узнать какой цвет в координатах х у?

 


  • Kartze это нравится

#2 Оффлайн   Totoro

Totoro
  • Хранители Кода
  • Сообщений: 1 750
  • Уровень сигнала: 0,26%
  • В игре: 2 час. 13 мин.

Награды

                                      

Отправлено 09 Июль 2016 - 20:17

И как определить закрашен ли пиксель. Например:

  gpu.setBackground(color)
  gpu.set(x, y, " ")

Как узнать какой цвет в координатах х у?

local char, foreColor, backColor = gpu.get(x, y)


#3 Оффлайн   TraerTaer

TraerTaer
  • Автор темы
  • Пользователи
  • Сообщений: 94
  • Уровень сигнала: 0,11%
  • В игре: 0 час. 57 мин.

Награды

              

Отправлено 09 Июль 2016 - 20:22

...

Спасибо



#4 Оффлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • Сообщений: 1 458
  • Уровень сигнала: 0,22%
  • В игре: 1 час. 54 мин.
  • ГородCity17

Награды

                             

Отправлено 09 Июль 2016 - 21:59

Замутить арканоид? Пфф да запросто, там много ума не надо. Хоть на четверых можно играть  :) Но мне лень пока писать, занят был созданием хардкорной сборки, сейчас тестить начну.

 

А пока просто по накидаю советов по программированию в ОС:

  • Когда пишешь проги в отдельном редакторе, возможно, нужна перезагрузка компа или выход/вход в игру, чтобы изменения вступили в силу. (в одиночной игре) Чтобы изменения сразу вступали в силу без перезагрузки, нужно в конфигах одну строку изменить. (для одиночной игры)
  • Если пишешь библиотеку - готовься после каждого изменения файла перезагружать комп. Увы, но мне лень было придумывать способ выгрузки библиотек из памяти. Пусть гуру луа пояснят, что в таких случаях нужно делать.
  • Если используешь event.listen, и перед выключением проги не производишь event.ignore - готовься что у тебя будут повторяться некоторые действия. Быстрое решение - перезагружать комп каждый раз после выхода из проги. Более правильное решение - не выходить из проги через Ctrl + C и по завершении проги использовать event.ignore (как я понял ты с этой проблемой столкнулся и она тебе дико мешает)

Удачи с реализацией!



#5 Оффлайн   TraerTaer

TraerTaer
  • Автор темы
  • Пользователи
  • Сообщений: 94
  • Уровень сигнала: 0,11%
  • В игре: 0 час. 57 мин.

Награды

              

Отправлено 09 Июль 2016 - 22:03

 

  • Если используешь event.listen, и перед выключением проги не производишь event.ignore - готовься что у тебя будут повторяться некоторые действия. Быстрое решение - перезагружать комп каждый раз после выхода из проги. Более правильное решение - не выходить из проги через Ctrl + C и по завершении проги использовать event.ignore (как я понял ты с этой проблемой столкнулся и она тебе дико мешает)

 

Нет, event.listen как я его использовал подходит только для одного игрока. Пока один перемещаю платформу другой не может. Так то он мне не мешает. Еще не сталкивался с проблемойю



#6 Оффлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • Сообщений: 1 458
  • Уровень сигнала: 0,22%
  • В игре: 1 час. 54 мин.
  • ГородCity17

Награды

                             

Отправлено 09 Июль 2016 - 22:45

Нет, event.listen как я его использовал подходит только для одного игрока. Пока один перемещаю платформу другой не может. Так то он мне не мешает. Еще не сталкивался с проблемойю

Лень мне вникать в код, в общем вот проблема:

-- физика(нет) не работает. Если у шарика у < 1 то меняет направление несколько раз = не работает

Вот причина которая подходит по описанию к проблеме:

В твоём коде есть event.listen, но нет event.ignore. (ужасная ошибка, исправь немедленно) Значит при каждом запуске проге, будет всё больше и больше раз выполнтся функция.



#7 Оффлайн   Zer0Galaxy

Zer0Galaxy
  • Гуру
  • Сообщений: 1 230
  • Уровень сигнала: 0%
  • В игре: 0 час. 0 мин.

Награды

   5                              

Отправлено 11 Июль 2016 - 10:53

Я бы не использовал event.listen, а использовал event.pull. По событию "key_down" платформа начинает движение, а по "key_up" останавливается. Не нужно два десятка раз жмакать на клавишу да и с ignore не будет проблем.

Собственно перемещение платформы осуществлять по таймеру. Можно через os.sleep, но тогда нужно использовать многопоточность, что бы движение одной платформы не влияло на другую.


Сообщение отредактировал Zer0Galaxy: 11 Июль 2016 - 10:54


#8 Оффлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • Сообщений: 1 458
  • Уровень сигнала: 0,22%
  • В игре: 1 час. 54 мин.
  • ГородCity17

Награды

                             

Отправлено 11 Июль 2016 - 12:38

Я бы не использовал event.listen, а использовал event.pull. По событию "key_down" платформа начинает движение, а по "key_up" останавливается. Не нужно два десятка раз жмакать на клавишу да и с ignore не будет проблем.

Собственно перемещение платформы осуществлять по таймеру. Можно через os.sleep, но тогда нужно использовать многопоточность, что бы движение одной платформы не влияло на другую.

С event.listen можно запросто певдомногопоточность замутить. Чтобы несколько игроков могли управлять одновременно. Вон же змейка у меня как то работает на большое количество игроков с помощью event.listen. Единственная при этом проблема, краши и выходы без event.ignore. При тесте особо тяжко, приходится комп перезагружать в случае ошибок.

 

На счёт арканоида. Разбираться в коде лень, не такой уж он и красивый чтобы исправлять ошибки. Мне проще с нуля написать нормальный код в котором будет всё как надо. И названия переменных нормальные.


Сообщение отредактировал qwertyMAN: 11 Июль 2016 - 13:45


#9 Онлайн   NEO

NEO
  • Пользователи
  • Сообщений: 1 780
  • Уровень сигнала: 4,24%
  • В игре: 36 час. 25 мин.
  • ГородСолнце

Награды

   3                        

Отправлено 11 Июль 2016 - 13:36

С event.listen можно запросто певдомногопоточность замутить. Чтобы несколько игроков могли управлять одновременно. Вон же змейка у меня как то работает на большое количество игроков с помощью event.listen. Единственная при этом проблема, краши и выходы без event.ignore. При тесте особо тяжко, приходится комп перезагружать в случае ошибок.

 

Разбираться в коде лень, не такой уж он и красивый чтобы исправлять. Мне проще с нуля написать нормальный.

А в pcall нельзя добавить?



#10 Оффлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • Сообщений: 1 458
  • Уровень сигнала: 0,22%
  • В игре: 1 час. 54 мин.
  • ГородCity17

Награды

                             

Отправлено 11 Июль 2016 - 13:44

А в pcall нельзя добавить?

Проблема именно во время тестов. Я часто проги тестирую и каждый раз через Ctrl + C завершать прогу и потом перезагружать комп долго. А вот когда готовая уже прога то там ошибок не должно быть и всё норм работает. Это проблема именно тестирования проги.



#11 Онлайн   NEO

NEO
  • Пользователи
  • Сообщений: 1 780
  • Уровень сигнала: 4,24%
  • В игре: 36 час. 25 мин.
  • ГородСолнце

Награды

   3                        

Отправлено 11 Июль 2016 - 13:55

Проблема именно во время тестов. Я часто проги тестирую и каждый раз через Ctrl + C завершать прогу и потом перезагружать комп долго. А вот когда готовая уже прога то там ошибок не должно быть и всё норм работает. Это проблема именно тестирования проги.

Я с такими проблемами боролся. переопредели event.shouldInterrupt() если true, тогда ignore сделай для всех функции.


Сообщение отредактировал NEO: 11 Июль 2016 - 13:56

  • qwertyMAN это нравится

#12 Оффлайн   TraerTaer

TraerTaer
  • Автор темы
  • Пользователи
  • Сообщений: 94
  • Уровень сигнала: 0,11%
  • В игре: 0 час. 57 мин.

Награды

              

Отправлено 11 Июль 2016 - 18:38

Тестовый вариант арканойда на одного http://pastebin.com/Pg8edkzJ . Хромой больной, но рабочий код с играбельной игрушкой.



#13 Оффлайн   qwertyMAN

qwertyMAN
  • Пользователи
  • Сообщений: 1 458
  • Уровень сигнала: 0,22%
  • В игре: 1 час. 54 мин.
  • ГородCity17

Награды

                             

Отправлено 11 Июль 2016 - 19:21

Тестовый вариант арканойда на одного http://pastebin.com/Pg8edkzJ . Хромой больной, но рабочий код с играбельной игрушкой.

sB_9tsg42B4.jpg


  • TraerTaer и Kartze это нравится

#14 Оффлайн   TraerTaer

TraerTaer
  • Автор темы
  • Пользователи
  • Сообщений: 94
  • Уровень сигнала: 0,11%
  • В игре: 0 час. 57 мин.

Награды

              

Отправлено 11 Июль 2016 - 19:37

sB_9tsg42B4.jpg

Ну пока тестовый вариант. Может кто посоветует что... Про евент игнор уже понял.






Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных