|
Разделы:
Lifehack12
Данетки95
Игры139
Игры на бумаге17
Книги14
Конкурсы8
Логические задачи346
Люди3
Новости6
Познавательно33
Почемучки14
Притчи4
Работа сайта10
Разное10
Сделай сам10
С праздником16
Страшно жить10
Творчество41
Тесты14
Фото4
Хобби2
Юмор105
Игры → Colobot - для тех кто только познаёт программирование
10 марта 2009 | Добавил: Myst 5
Помню школьные времена, когда учили pascal, учили программированию, алгоритмам. Много всего было интересного. Да, несомненно, многое даётся самообучением, причём настойчивым. Но у многих часто возникает вопрос, с чего начать? Ведь книжки читать не интересно? Есть интересный способ.
Игра называется Colobot (скачать, установки не требуется, просто распаковать в отдельную папку). Всё просто, пишите программы для роботов, в идеальном случае на миссию один запуск программы. Роботы могут ездить, летать, что-то подбирать, строить здания, обороняться и воевать (+ некоторые специфичные действия для некоторых ботов). Язык программирования СИ подобный. Есть обучающая часть, всё полностью русифицировано. Обучающие упражнения, и миссии. Может затянуть :)
Новичкам colobot рекомендую, по себе скажу, частенько в СЕО без азов программирования сложно. Да и бывают случаи, когда без собственно разработанного софта вообще сложно.
Хотите регулярно получать новые задачи и познавательные топики? Подпишитесь на рассылку
|
Случайное:
Обсуждения:
не публикуется → Инспектор Варнике
Руслан → Слова, оканчивающиеся на “зо”.
ололошин → Незадачливый рыбак
lisicanasta → Инквизиция в наши дни
Ogra → И все же, они вертятся?
SM → Последовательность
Nastya → Бесконечная игра
SpAwN# → Самая трудная игра в мире
Карта сайта:
|
10 марта 2009 в 13:34
Спасибо!
12 марта 2009 в 16:23
На игру подсел, играю вторые сутки не отрываясь. Но пока проходил миссии програмы не писал, только слегка корректировал те что давали. А когда стал проходить упражнения, часто стал встречать ошибку: Слишком много параметров, при этом выделяется первая строчка. Вот пример последней програмки, где появляется эта ошибка:
extern void object::Двигаться()
{
object item;
jet(0.2);
while (position.z20)
motor(1,1);
while (distance(position, item.position)>20)
{
wait(0,1)
}
motor(0,0)
aim(-20);
turn(direction(item.position));
fire(1);
}
}
С Си я вообще не знаком, объясните ещё пожалуйста что значит самая первая строчка. Каждое слово и значение. Спасибо.
13 марта 2009 в 15:52
Tantros
Инструкция extern определяет function(функцию), которая служит основной программой для робота
Object item-ты ввёл item, как переменную(вместо неё может быть: x, y, cat, qwerty и др.)
jet(0.2)-ты поднимаешься вверх на джетпаке со скоростью 0.2 (отрицательные значения опускают джетпак)
while(position.z20)-циклический повтор
motor(1,1)-включает мотор бота(левый двигатель;правый двигатель). Значения идут от -1 до 1.
while (distance(position, item.position)>20)
{
wait(0,1)
}-если дистанция до переменной item>20, то ждать 0,1 сек, пока значение не изменится
motor(0,0)-ты уверен, может надо было эту функцию добавить в фигурные скобки для while?
aim(-20)-прицел наклонён вниз на 20
turn(direction(item.position))-повернуться к переменной item
fire(1)-стрелять на протяжении 1сек.
Вывод: видимо, тебе надо было, чтобы бот взлетел, полетал над одинаковом расстояние над землёй и перебил кого-то. Если нужна подсказка по программированию, нажми в игре F2 :)
13 марта 2009 в 17:22
Я неточно сформулировал вопрос, имел в виду слово и значение в самой первой строке. я не в слепую копировал программку и знал что от робота хочу. Помощь в игре достаточно подробна для всех команд, переменных и категорий, КРОМЕ того что пишется в самой первой строке. я не нашёл там значение и слова extern. а ещё интересует синтаксис первой строки. Если extern объявляет функцию, то что значит void и object? Ведь эти слова определяют тип переменных? Два двоеточия видимо разделитель, затем идёт название функции, а потом что значат скобочки? раз они стоят, значит, видимо, можно указывать какие-то параметры? :)
Ну и интересует что может значить сама ошибка: "Слишком много параметров"
13 марта 2009 в 17:49
Короче, это значит, что код выполняется для всего блока "Двигаться". На более высоких уровнях нужно будет писать несколько команд и чтобы не запутаться используется такая схема. А фигурный скобки значат, что команды выполняются для всего блока.
чесн говоря, у меня такого никогда не выпадало. Посмотри Solution(4) и сравни :lol:
P.S. Говорят, что у нас до сих пор есть в далёких сибирских деревушках старообрядцы, использующие ассамблер :)
16 марта 2009 в 20:21
Tantros, Ошибка слишком много параметров возникает, если в функции перечислено для использования больше параметров, чем это возможно. В игре есть баг: эта ошибка вместо нужной строки выделяет заголовок. В вашем примере ошибку вызвала строка
Wait(0,1) вместо Wait(0.1). Числа с дробной частью записываются через точку, частая ошибка, тоже на этом постоянно горю. ;)
extern - указатель на возможность вызова описанной подпрограммы "извне", т.е. из главного цикла.
void - указатель "пустого" класса, т.е. данная функция возвращает значине класса "ничего", таким образом, не возвращает ничего. Это логика Си, с ней придется смириться.
Myst 5, По поводу Асма: многие люди используют ассемблер, поскольку например для программирования микропроцессорных систем на низком уровне ничего лучше нету. Я постоянно имею с ним дело по учебе (Кафедра промышленной электроники ЭФФ ТПУ).
3 октября 2009 в 03:30
Интересная игрушка. Существенный недостаток - ограничение количества строк программы. Увлекает процесс обучения роботов, порой хочется автоматизировать не самих роботов, а написание и внедрение в них программ =).
Когда в свободной игре роботы добывали титан/аккумуляторы, дошло до того, что цикл уперся в ограничение (не появится новый, пока не уничтожишь существующий объект).
Разумеется, в игре невозможно предусмотреть все случайности, как и в жизни, поэтому довольно часто происходят сбои в программах при разных начальных условиях (в частности, это касается рельефа местности), нельзя составить универсальный алгоритм. =(