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


Точки


Мы уже дали определение точке. Она представляет собой позицию на плоскости, которую можно описать парой координат X и Y. Давайте напишем маленькую программу на Си, рисующую точки на экране. Листинг 4.1 показывает такую программу.

Листинг 4.1. Программа, рисующая точки (POINTY.C).

#include <stdio.h>

#include <graph.h>

void main(void)

{

int х, у, index, color;

// перевести компьютер в графический режим

_setvideomode(_VRES16COLOR); // режим 640х480, 16 цветов

// нарисовать 10000 точек на экране, расположенных случайным образом

for(index = 0; index<10000; index++)

{

// получить случайные координаты и цвет

х = rand()%640;

у

= rand()%480;

color = rand()%16;

_setcolor(color); // установить цвет для рисования точки

_setpixel(х,у);    // нарисовать точку

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

// ждать нажатия клавиши

while(!kbhit()){}

// восстановить текстовый режим

_setvideоmоde(_DEFAULTMODE) ;

} // конец функции main

Теперь разберемся, что делает эта программа:

 Компьютер переводится в режим VGA с помощью вызова функции Си  _setvideomode ( VRES16COLOR).  Это функция из графической библиотеки Microsoft. После этого программа входит в главный цикл. В структуре

FOR каждый раз случайным образом генерируются три числа: одно для цвета и два других для координат (х,у) позиции точки, которую мы хотим нарисовать:

§          Затем мы используем библиотечную функцию _setpixel(х,у), чтобы нарисовать точку на экране. Программа делает это 10000 раз, а потом останавливается;

§          Затем программа ждет нажатия любой клавиши, после чего происходит выход в DOS.

Если вы запустите программу несколько раз, то сможете заметить, что точки все время оказываются в одних и тех же местах. Как это получается? Дело в том, что мы пользуемся функцией rand (), которая не является в полном смысле генератором случайных чисел. Она возвращает так называемые псевдослучай­ные числа. Чтобы избежать этого, вам надо всякий раз при запуске устанавли­вать

генератор случайных чисел с разными начальными значениями. Вставьте в начало программы функцию srand(int) — и все будет в порядке,




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



Книжный магазин