Язык Си с нуля - Урок 17 - консольный арканоид LIVE (часть2)

preview_player
Показать описание
Это видео для тех, кто еще ни разу не программировал, но прошел предыдущие 16 уроков.

В этом видео мы: (часть 2)
+ добавим шарик
+ сделаем физику шарика
+ поиграем в игру и научимся создавать уровни

Все видео про арканоид:
► урок 17 - Пишем игру арканоид (часть 2) - Вы его смотрите =)

Уроки по теме:

Язык Си с нуля - данный видеокурс предназначен для тех, кто еще ни разу не программировал. Здесь я максимально понятно пошагово обьясняю основы программирования на языке Си. Если хотите научиться программировать на языке Си - пройдите весь курс. Помимо объяснения материала я даю домашку. А после каждых нескольких уроков мы вместе пишем забавные игры!)
Рекомендации по теме
Комментарии
Автор

Почему, когда в initBall вставляю moveBall, пишет ошибку индетификатор не найден

hyqshgm
Автор

Чтож. Всё что я понял это то что мне нужно учить геометрию.

ДмитрийГендаринко
Автор

Привет, уважаемый автор. До этого было почти все понятно. Но тут не очень понятна логика метода avtoMoveBall(). В нем используется еще и рекурсия. А до этого вы о ней не говорили. Спасибо

ДимаГрищук-дд
Автор

Почему когда в moveBall заменяю тип переменных "x" и "y" с int на float, поле перестает отображаться?

АлексейКиселев-жб
Автор

Здравствуйте! 3:00 как мы в процедуре initBall вызываем процедуру moveBall, если она описана позже, чем initBall? и как мы можем ставить индексы ball.ix и ball.iy для mas в процедуре putBall, если мы им присвоили значения в процедуре moveBall, которая описана позже?

timursyrma
Автор

Как могут быть клетки А и В равны, если они на рисунке чисто визуально не равны❓ Так как у них координаты Х и Y разные. видно же на рисунке

weekendshow
Автор

У меня Visual Studio 2017, функция round работает не корректно. Вместо нее использовал lround. Также initBall перенести после moveBall. P.S-> Может быть, кому-то поможет!

UPD: Оказывается, я не подключил библиотеку "math.h"(Хотя Антон в видео ее и не подключал на Code::Blocks) :D, но интересный факт : функция lround, в отличии от round, - работает без заданной библиотеки.

history
Автор

Здравствуйте! Подскажите, почему на таймкоде 4:05, при исправлении int на float, программа начинает выполняться "впустую", будто в ней нет ни одной строчки кода?

artarzhakhouski
Автор

почему угол ball.alfa = -1. Объясните пож-та механику полета шарика и связь с cos и sin

weekendshow
Автор

спасибо получилось !,
убрал hit_max_cnt сделал вместо него подсчет жизней и при < 0 превьюшка good game и конец игры, думаю так по интереснее будет

ИгорьПанькин-ъл
Автор

Антон привет.А есть где нибудь готовый код, даже без Дз, что то не работает но самому найти очень трудно?

kgkkkgyujhg
Автор

Всё получилось, спасибо большое!
Только не могу понять, откуда у нас есть место для отображения "hit" и "max"?
То есть мы рисуем построчно массив, и вдруг на 3-ей и 4-ой строчке пишем hit и max, который вне массива (вроде). Как буто как так не должно работать.

shohzodlord
Автор

отличный пример... только одно маленькое но... это пинг-понг с препятствиями у нас получился. а не арканоид. для арканоида надо ещё разрушаемые плашки в задачу добавлять :) но всё равно хорошее видео

AkashiyaMokaV
Автор

Нашел глюк, который использовал в оригинальной игре - если ракеткой НАЕЗЖАТЬ на мяч, когда он на одной линии, то можно вытолкнуть мяч за пределы поля, так как код подумает, что надо поменять траекторию два раза, ведь ракетка едет дальше и условие проверяется повторно, то есть мяч отскакивает вверх, ракетка двигается и мяч еще раз на нее попадает и отскакивает вниз, за пределы, а это уже глюк системы массива и программа виснет. Пока писал - придумал ракетку поднять ВЫШЕ, чтобы в этом случае была возможность проверки ДАЖЕ после того как ракетка дважды оттокнула мяч.

БеткаАдын
Автор

Ввёл код в autoMoveBall и программа стала зависать. Отключил вызов процедуры самой себя и программа перестала зависать, но шарик после пуска остаётся на месте. Процесс что называется застопорился, код перепроверял несколько раз, всё правильно, а не работает.

DimitriuSun
Автор

Всё хорошо, только мой шарик движется не по прямой линии, а прыгает влево-вправо, как по ступенькам. Что поменять в коде?

kohuboopohe
Автор

Здравствуйте, написал код, всё работает, начал приступать к ДЗ, столкнулся с такой проблемой:
Когда добавляю "стены" на "поле" как показано в видеоуроке, они отображаются как положено, но вот "шарик" пролетает сквозь них! подскажите пожалуйста кто-нибудь, в чём может быть причина ?
Код идентичен, за исключением того что все функции и структуры вынес в заголовочный файл.

ПавелВизирякин
Автор

А если здесь синус окажется отрицательным?
В итоге надо ведь положительное число получить для того чтоб вставить его в элемент массива.

namename
Автор

6:40
Приведу пример в углах, а не в радианах:
Допустим bl.alfa ==90
(360-90)+180==450
А 450 это те же 90 Градусов. 450-360==90
В чём прикол?
Данный способ инвертирует направление движения по окружности, но чем это помогает?

namename
Автор

Может это ball.alfa лучше назвать ball.radian?
Косинус или синус угла возвращает уже функция cos(), sin()

namename