Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Создание компьютерных игр


Информационный Канал Subscribe.Ru

Cоздание компьютерных игр.
Рассылка Евгения Казеко.
Выпускается еженедельно по средам.

Внимание! Сообщение об ошибке.

--------------------------------------------------------------

Уважаемые читатели! Я крайне опечален. Вновь в html выпуск рассылки (выпуск 7) вкралась досадная ошибка. На этот раз мне сообщили об этом сразу несколько человек, за что всем им большое спасибо. Очень удачно, что я имею возможность оперативно отреагировать и исправить ошибку.

Я проверил - в текстовой версии, а также в html версии архива Subscribe.ru этой ошибки не возникает. Ошибка возникает, как правило у пользователей The Bat при отображении html письма с выпуском.

Вновь приношу извинения за возможные неудобства. Исправленный текст вы найдете ниже.

А сейчас я воспользуюсь случаем (внеочередной выпуск) и проведу небольшой разбор почты. Некоторые читатели пишут, что моя рассылка слишком проста, что мне следует, как я это понимаю, бросить "этих чайников" на полпути и начать писать "для серьезных людей". Господа серьезные люди - для вас создано столько хороших ресурсов и книг, почему бы ими не воспользоваться? Я слишком хорошо помню свои "чайниковские" времена и возню с "серьезными материалами", когда смотришь в книгу, а видишь, сами знаете что... Поэтому я пишу выпуски максимально просто, вместе с тем стараюсь быть максимально информативным. Поверьте, приходит очень значительный отклик от тех, кого принято называть "чайниками". Эти люди довольны рассылкой. Меня это, конечно же, очень радует, ведь моя цель - добиться того, чтобы как можно больше людей с нулевыми знаниями имели возможность воплотить в жизнь свою мечту - стать создателем игр. Я хорошо знаю, как она прекрасна... и как недостижима, если некому оказать помощь в начале пути.

Поэтому, тех, кто уже обладает некоторыми знаниями, я прошу потерпеть. Доберемся мы и до Windows api, и до графики (DirectX или OpenGL), и до всего остального. К тому же, повторенье - мать ученья, не стоит забывать об этом.

Вот текст программы для выпуска 7:

-----------------------------------------



// Выбор и повторение

// Начинаем как всегда с подключения стандартного заголовочного файла.
#include <stdio.h>


// Создаем функцию main. Без нее программу на С не написать.
void main()
{

 /* Описываем характеристики наших персонажей, а также
  предметы оружейного магазина.
 */

 char name[25];   // Имя персонажа

 int player_class = 0;  // Класс игрока
 // Для описания класса игрока мы будем использовать числа.
 // Число 1 будет означать воина, 2 - мага, 3 - вора.
 // Пока что запишем в переменную число 0.


 int health, gold, attack, defence, magic; // Характеристики персонажа


 // Теперь мы готовы приступить непосредственно к программе.



 // Запрашиваем ввод имени. Это мы делаем только один раз
 // сразу же после запуска программы.

 printf("Enter player's name: ");

 scanf("%s", &name);

 printf("\n");



 /* Далее мы выбираем класс персонажа, для чего мы будем использовать
  структуру выбора if. И уже здесь важно предусмотреть возможность
  ошибочного выбора. Можно конечно в таком случае написать
  "программа выполнила недопустимую операцию и будет закрыта", но
  лучше вместо этого дать игроку шанс повторить ввод. Для этого
  мы будем, как вы уже догадались, использовать структуру
  повторения или цикл while. А заодно познакомимся и с вложением.

  Итак, для того, чтобы игрок мог ошибаться с вводом, нам
  необходимо ВЛОЖИТЬ наши структуры следования и выбора в
  структуру повторения - цикл while. Ниже мы сделаем это, но
  сперва я расскажу как работает этот цикл.

  Так же как и для оператора if, сперва записывается условие.
  Пока это условие будет истинно, будет повторяться то, что
  указано между фигурными скобками (в том числе и вложенные
  структуры выбора). Когда условие становится ложным, происходит
  выход из цикла, и программа продолжается.

  Звучит достаточно сложно, но на самом деле все просто.
  Сейчас мы убедимся в этом.

 */


 /* Начало цикла while (см.ниже).
  Что означает такое условие? Мы используем логический оператор ИЛИ (||).
  И наше условие читается так: выполнять цикл, пока значение класса
  меньше 1 ИЛИ больше 3. Как только введенное число попадет в диапазон
  1 - 3, произойдет выход из цикла. Для того, чтобы не возникло ошибки
  и цикл выполнился хотя бы раз, в самом начале мы присвоили
  переменной player_class значение 0.
 */

 while ( (player_class < 1) || (player_class > 3) )
 {

  printf("Choose your class (1 - warrior, 2 - mage, 3 - thief): ");

  scanf("%d", &player_class);  // Считываем число с клавиатуры.


  /* Вот и структура выбора - оператор if.
   Только на этот раз он в сокращенной форме (без else).
   В случае, если условие истинно (player_class равно 1),
   то действия в фигурных скобках выполняются.
   Если же условие ложно (player_class не равно 1), то
   данный оператор пропускается, и программа выполняется дальше.
   И не забывайте, что условие равенства записывается как "==",
   а = означает оператор присваивания. Если их перепутать, то
   это приведет к ошибке.
  */

  // Персонажам разных классов мы присваиваем разные характеристики.

  // Если персонаж - воин.
  if (player_class == 1)
  {
   health = 40;
   gold = 20;
   attack = 3;
   defence = 3;
   magic = 1;
  }


  // Если персонаж - маг
  if (player_class == 2)
  {
   health = 20;
   gold = 20;
   attack = 1;
   defence = 2;
   magic = 3;
  }

  // Если персонаж - вор
  if (player_class == 3)
  {
   health = 20;
   gold = 40;
   attack = 2;
   defence = 2;
   magic = 2;
  }

  /* Конечно, все это можно было гораздо изящнее сделать с помощью
   структуры выбора switch, но ее мы рассмотрим позже.
   Напоследок необходимо вывести в случае надобности сообщение
   об ошибке. */

  if ((player_class < 1) || (player_class > 3))
   printf("Wrong class. Please choose again.\n\n" );

 } // конец цикла while



 /* Вот мы и выбрали класс. Выведем информацию об игроке.
  А для того, чтобы вывести класс игрока в текстовом
  виде, мы используем структуру выбора switch.
  Она работает как несколько последовательных операторов
  if, однако выглядит намного проще.
 */


 printf("\n");

 printf("Name: %s\n", name);


 switch(player_class) // Мы указали, значение какой переменной нужно проверять.
 {
  case 1:     // Если значение player_class равно 1
   printf("Class: Warrior\n");
   break;    // Остановиться и выйти из switch

  case 2:     // Если значение player_class равно 2
   printf("Class: Mage\n");
   break;    // Остановиться и выйти из switch

  case 3:     // Если значение player_class равно 3
   printf("Class: Thief\n");
   break;    // Остановиться и выйти из switch

  default:    // Если значение player_class ни 1, ни 2, ни 3

   break;
 }


 /*   А теперь подробнее про switch. Этот оператор проверяет, равна ли
  переменная после слова switch нескольким значениям, которые
  мы указываем после слов case с двоеточием. Это очень похоже
  на использование последовательности if, как мы делали выше.
  Обратите внимание, что для частей оператора switch (т.е. для
  вариантов значений - case) мы не используем фигурных скобок.
  Оператор break нужен для выхода из структуры switch, иначе
  все равно будут проверяться все условия до конца. Ключевое
  слово default нужно для того случая, если значение
  проверяемой переменной не соответствует ни одному из
  вариантов. Например, сюда можно было бы ввести сообщение
  об ошибке. Я этого не делаю, так как в этом месте
  программы значение player_class гарантированно равно 1, 2 или 3.

 */

 printf("Health: %d\n", health);
 printf("Gold: %d\n", gold);
 printf("Attack: %d\n", attack);
 printf("Defence: %d\n", defence);
 printf("Magic: %d\n", magic);


} // Конец программы.


-----------------------------------------

До свидания! Поздравляю всех с 1 мая!

--------------------------------------------------------------

Архив рассылки вы найдете по адресам http://subscribe.ru/catalog/comp.games.gamecoder и http://www.gamecoder.nm.ru/subscribe.htm.

Евгений Казеко.
kazeko@list.ru
www.gamecoder.nm.ru
-----------------------------
Рассылка "Создание компьютерных игр", выпуск 7.
Выпускается еженедельно по средам.



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное