Курсы создания компьютерных игр на C/C++ ( Часть 2 )

Для самых-самых начинающих программистов :] Часть 1 - http://pikabu.ru/story/_3430226
Курсы создания компьютерных игр на C/C++ ( Часть 2 ) Для самых-самых начинающих программистов :]  Часть 1 - <a href="http://pikabu.ru/story/kursyi_sozdaniya_kompyuternyikh_igr_na_cc__chast_1__3430226">http://pikabu.ru/story/_3430226</a>
Вы смотрите срез комментариев. Показать все
Автор поста оценил этот комментарий

Автор молодец! Не нашел как на этом ресурсе написать в личку (подскажите кто знает) Подписался. Совершенно не понимал программирования хотя и пытался разобраться. Сподвигла отличная и лёгкая манера изложения.  Установил среду и стал проходить все уроки. Пожалуйста не бросайте это дело! 
Теперь по существу что сподвигло написать. Прошёл урок №2. Случайно ввёл вместо цифры, буквенное значение и получил спамящую строчку (см. скрин). Можете это указать в уроке или как то предупредить начинающих об этом и рассказать почему появляется такой цикл ?
http://c2n.me/3jUkwwd

раскрыть ветку (21)
3
Автор поста оценил этот комментарий

Ввод буквы вместо числа вызывает ошибку и последующий ввод блокируется. Для того, чтобы этого избежать можно сразу проверять возникновение ошибки в scanf вот таким образом:
http://www.everfall.com/paste/id.php?7ecb0vfpsieq=
fflush(stdin) - разблокирует консольный ввод, continue - пропустит эту итерацию цикла, ну и еще напишем в консоль про ошибку :)

раскрыть ветку (14)
Автор поста оценил этот комментарий

Да, возможно по этому поводу возникало какое то предупреждение во время отладки ?


Warning 2 warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. d:\my_c++\game1_test\game1_test\main.cpp 22 1 game1_test


Или это относится не к этому ?

раскрыть ветку (13)
Автор поста оценил этот комментарий

В использовании scanf вместо scanf_s нет ничего плохого. Но разница (помимо явного указания размера буфера) в том, что первая - входит в стандарт, а вторая - это специфика компилятора от Microsoft. Т.е. этот код вы сможете скомпилировать только в студии, а GCC, CLang и другие ничего не знают про scanf_s.

Автор поста оценил этот комментарий

Нет, просто компилятор говорит, что в ваших библиотеках есть более новая версия функции scanf, которая называется scanf_s и рекомендует использовать ее вместо scanf :) Можете смело использовать. :)

раскрыть ветку (11)
Автор поста оценил этот комментарий

откуда такие ошибки могут быть? всё необходимое вроде же подключено

Иллюстрация к комментарию
раскрыть ветку (10)
Автор поста оценил этот комментарий
Скинь код куда-нибудь - посмотрю :)
раскрыть ветку (9)
Автор поста оценил этот комментарий
да чет сломалась вся структура в switch-case при добавлении symbolBox, психанул и всё потёр

то нормально cout << печатал всю жизнь, а сейчас не нравится ему хер пойми что

Автор поста оценил этот комментарий
в общем, дело было в библиотеке stdafx.h

требует её, потому что создал console application вместо empty project.

а если эту библиотеку подключать - отключаются все функции (time cout и т.д.)

раскрыть ветку (7)
Автор поста оценил этот комментарий

Это заголовочный файл т.н. прекомпилированного заголовка. Предназначен он для ускорения процесса компиляции тем, что какие-то основные хэдеры (которые инклудятся в stdafx.h) перекомпилируются лишь по необходимости. Пользя от этого заметна будет лишь в крупных проектах.

Отключить можно в настройках проекта (скрин) и добавив вместо stdafx.h инклуды нужных хэдеров (ctime для time() и time_t, iostream для cin/cout и т.п).

Иллюстрация к комментарию
раскрыть ветку (6)
Автор поста оценил этот комментарий
ммм... большое спасибо!
раскрыть ветку (5)
Автор поста оценил этот комментарий

Обращайтесь)

раскрыть ветку (4)
Автор поста оценил этот комментарий
Спасибо ))) Можно я тогда сразу воспользуюсь предложением?

Смотрю как организовывается qsort(), передача указателей на функции в другие функции.

1. Я правильно понимаю, что подобно массивам, имя функции без скобочек с аргументами является указателем на точку входа этой функции? (как имя массива без индекса является указателем на начало массива.

2. я правильно понимаю строчку *(int*) a  :

приведение указателя a к указателю на int-значения?

просто если не смотреть на код и меня бы спросили, как написать приведение указателя к int-указателю, я бы написал (int*) *a, а тут звёздочка перед приведением ставится

раскрыть ветку (3)
Автор поста оценил этот комментарий

Автор, сделал все как у вас. Но запускаю ехе-шник и в конце надо нажать не "любую клавишу" а только Enter. Если жать пробел то курсор просто сдвигается по строчке ниже и всё.

раскрыть ветку (5)
Автор поста оценил этот комментарий
Да, это моя ошибка в уроке :) В этой задаче пока нужно жать Enter :)
В уроке 3 я рассказываю как сделать "любую клавишу" :)
Автор поста оценил этот комментарий

Автор, третья проблема:

забрал ехе-шник с папки Release но на ноутбуке програмка не идёт. Ругается что нет какой то DLL... хотя все остальное на ноуте работает нормально 

раскрыть ветку (3)
Автор поста оценил этот комментарий

Вероятнее всего на ноутбуке нет нужных библиотек.
Попробуйте скачать их отсюда
https://www.microsoft.com/ru-ru/download/details.aspx?id=407...

Файл vcredist_x86.exe.


Еще один вариант - это если на ноутбуке более старая ОС, например XP. Тогда можно попробовать изменить настройки сборки проекта на более старые. Правой кнопкой по проекту в Solution Explorer в студии, Properties, выбрать Release конфигурацию и найти в Configuration Properties/General пункт Platform Toolset. Поставить более старый, например 2010:

Иллюстрация к комментарию
раскрыть ветку (2)
Автор поста оценил этот комментарий

Если что-то из этого помогло - скажите пожалуйста что именно :) Возможно стоит будет создать пост с самими распространенными проблемами :)

раскрыть ветку (1)
Автор поста оценил этот комментарий

Спасибо. Не проверял. Но схоронил оба метода на вооружение. 

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку