Школа создателей компьютерных игр

BannerDrive.ru
[Главная] [С чего начать?] [Дистанционное обучение] [Статьи] [Обучалки] [Книги] [Софт] [Форум] [Ссылки] [О сайте]

Структуры



Подпишитесь на рассылку "Создание компьютерных игр"

Рассылки Subscribe.Ru
Создание компьютерных игр

Рассылка выходит раз в месяц.


Понравился сайт? Узнайте, как помочь сайту.


Рекомендуемые книги


Андре Ламот.
Программирование трехмерных игр для Windows. Советы профессионала по трехмерной графике и растеризации


Андре Ламот.
Программирование игр для Windows. Советы профессионала


Проголосуйте за сайт в рейтинге GameTop!
(нажмите на кнопку рейтинга)

GameTop - рейтинг игровых ресурсов. Портал Rolemancer (www.rolemancer.ru)

Не забывайте, что результаты рейтинга обновляются раз в неделю. Пожалуйста, голосуйте почаще!


Статистика посещаемости

Rambler's Top100

Массивы | Все обучалки раздела | Строки

Описание

Объясняется, что такое структуры, и как их использовать для группировки переменных. Также показывается, как можно определять собственные типы данных.

Программа создает различными способами простые структуры и демонстрирует работу с ними.

Скачать обучалку (Visual C++ 6)

Работа программы

Исходный код


//
//            - "Talk to me like I'm a 3 year old!" Programming Lessons -  
//                                                                         
//            $Author:            Ben Humphrey      digiben@gametutorials.com 
//                                                                            
//            $Program:            Structures                                 
//                                                                            
//            $Description:      Using structures in a simple, clear way.     
//                                                                            
//            $Date:                  7/10/00                                 
//                                                                            
// Перевод © 2004 Евгений Казеко
// www.gamecoder.kazeko.com
// evgeniy@kazeko.com

#include <stdio.h>      // Стандартный заголовочный файл для printf(), итд..

/*      Это структура typedef. Она определяет тип. Тип, который мы определяем, будет называться "MONEY".
      "_MONEY" это то, что компилятор определит как структуру. Подстановка typedef перед структурой, это
      все равно что использование #define. 
      Представьте, что структура это ящик с инструментами, которыми являются переменные структуры, такие
      как "Dollar" и "Cents". Вы бы предпочли держать все инструменты в руках? Конечно же нет. То же самое
      и со структурами. Мы используем структуры для хранения переменных. В данной программе нам не очень
      нужны структуры, но я хочу показать использование структур на простом примере.
      Большинство используют структуры только для передачи информации в функции.

      Итак, ниже мы определяем имя структуры "_MONEY". Знак "_" использовать необязательно, но большинство
      людей используют его. Нужно чтобы это имя отличалось от имени внизу typedef.
*/

 
typedef struct _MONEY {      
      int            Dollars;     
      double      Cents;      
} MONEY;           

/*      Мы создали структуру "_MONEY". Нам нужна переменная для хранения количества долларов,
       поэтому мы используем целочисленную переменную. Нам также нужна переменная для центов, 
       поэтому используем тип с плавающей запятой.
       И в конце задаем имя структуры. Теперь "MONEY" означает "struct _MONEY".
*/

// Создадим две одинаковые структуры, чтобы показать различия

struct TEMP {      // Это обычная структура без typedef.
      int            Dollars;                                    
      double      Cents;           
};                       // Так как мы не используем имя (как в структуре typedef),
                         // мы просто ставим точку с запятой.

void main()
{
      MONEY Change;               // Создадим переменную типа "MONEY". Назовем ее "Change".
      struct TEMP Change2;   // Видите разницу? Если не использовать typedef, перед именем
                                     // переменной нужно использовать "struct".
                                     // Вот почему большинство используют typedef.
                                    
      Change.Cents = 0.02;       
      // Запишем первой структуре 2 цента. Используем "." для доступа к переменным в структуре.
      
      Change.Dollars = 2;           
      // Запишем 2 доллара. Если у вас visual studio 6, когда вы ставите точку после структуры, появляется список,
      // который показывает все переменные структуры.

      // Теперь в первой структуре 2 доллара и 2 цента, верно?

      Change2.Cents = 0.04;          
      // Запишем во вторую структуру 4 цента. Не забывайте, мы используем точку для доступа к переменным.

      Change2.Dollars = 4;      
      // Запишем 4 доллара.

      // Напечатаем эти структуры.
      
      printf("The change comes out to %d dollars and %.2f cents.\n", Change.Dollars, Change.Cents);
      printf("The change comes out to %d dollars and %.2f cents.\n", Change2.Dollars, Change2.Cents);

      /*      Вы заметили, что я использую ".2" в "%.2f"? Это позволяет выводить только 2 знака после запятой,
            благодаря чему не будет напечатано "0.02000000". Если вы забыли, то %d используется для вывода 
            целых чисел, %f для чисел с плавающей запятой, %s для строк. Есть и другие значения.
            На месте этих знаков печатаются переменные, по порядку следования в функции printf, как например 
            на месте %d печатается Change.Dollars, а на месте %.2f - Change.Cents.      */

}

// Примечание

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

      Например, если у нас структура данных об игроке, мы захотим вести их учет :
      Health, Mana, Armor, Weapons, Inventory, Stats и т.д.

      И что если мы захотим передать все это в функцию? Если у нас не было бы структуры, 
      это выглядело бы вот так:

      void InitPlayer(int Health, int Mana, ARMOR Armor, WEAPON Weapons, INV Inv, etc..);

      Кто захочет все это набирать каждый раз? Нужно будет помнить имена всех переменных.

      Если использовать структуру, например PLAYER, таким образом:


 typedef struct _PLAYER {
 {
            int Health;
            int Mana;
            ARMOR Armor
            WEAPON Weapon;
            INV Inv;
            etc...;
 } PLAYER;

      то мы можем написать:

      void InitPlayer(PLAYER Player);

      Теперь нам нужно передавать только струкруру игрока, которую мы создадим в начале игры.
      PLAYER Player;

      Также, структура может содержать в себе другие структуры, например ARMOR, WEAPON, INV, и т.д.  

*/

// © 2001 GameTutorials
// Перевод © 2004 Евгений Казеко
// www.gamecoder.kazeko.com
// evgeniy@kazeko.com

Скачать обучалку (Visual C++ 6)

Массивы | Все обучалки раздела | Строки

[Главная] [С чего начать?] [Дистанционное обучение] [Статьи] [Обучалки] [Книги] [Софт] [Форум] [Ссылки] [О сайте]

Copyright © 2003-2005 Евгений Казеко. Все права защищены. E-mail: evgeniy@kazeko.com

Разработка проекта потолков позволяет назначить на потолки цены. Лучший дизайн у нас. , Позитивные replica диски и шины отправим в Самару. , Ремонт в квартире.Резка межкомнатных проемов в монолилных домах , ремонт компьютеров бибирево , Вить, хватит уже жабу ростить. В люкспроме токарные работы по металлу даром.