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


Создание звездного неба с использованием целых чисел - часть 2


#include <fcntl.h>

#include <memory.h>

#tinclude <malloc.h>

#include <math.h>

#include <string.h>

#include <graph.h>

#include "grapics.h" // включаем нашу графическую библиотеку

// прототипы /////////////////////////////////////

void Create_Scale_Data_X(int scale, int far *row) ;

void Create_Scale_Data_Y(int scale, int *row);

void Build_Scale_Table(void);

void Scale_Sprite(sprite_ptr sprite,int scale);

void Clear_Double_Buffer(void);

void Timer(int clicks);

void Init_Stars(void) ;

void Move_Stars(void);

void Draw_Stars(void) ;

// ОПРЕДЕЛЕНИЯ /////////////////////////////////////////////

#define NUM_STARS      50       // количество звезд на небе

#define MAX_SCALE      200      // максимальный размер спрайта

#define SPRITE_X_SIZE  80       // размеры текстуры спрайта

#define SPRITE_y_SIZE  48

// СТРУКТУРЫ /////////////////////////////////////////////// // это звезда

typedef struct star_typ

{

int x,y;        // позиция звезды

int xv,yv;      // скорость звезды

int xa,ya;      // ускорение звезды

int color;      // цвет звезды

int clock;      // число "тиков", которое звезда существует

int acc_time;   // количество "тиков" до ускорения звезды

int acc_count;  // счетчик ускорения

} star, *star_ptr;

// ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ ///////////////////////////////////

unsigned int far *clock = (unsigned int far *)0х0000046CL;

// указатель на внутренний таймер 18.2 "тик"/с

sprite object;

// обобщенный спрайт, который содержит кадры корабля

pcx_picture text_cells;                // файл PCX с кадрами корабля

int *scale_table_y[MAX_SCALE+l] ;

// таблица предварительно рассчитанных коэффициентов масштабирования

int far *scale_table_x[MAX_SCALE+l];

// таблица предварительно рассчитанных коэффициентов масштабирования

star star_field[NUM_STARSj;            // звездное небо

// ФУНКЦИИ //////////////////////////////

void Timer(int clicks)

{ // эта функция использует внутренний таймер с частотой 18.2 "тик"/с




Начало  Назад  Вперед