Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Листинг 13.1. Программа Терминатор (TERM.С)





// ВКЛЮЧАЕМЫЕ ФАЙЛЫ ///////////////////////////////

#include <stdio.h>

#include <graph.h>

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

// указатель на переменную BIOS, содержащую текущее

// значение системного таймера. Это значение изменяется

// с частотой 18.2 раза в секунду

usigned int far *clock = (unsigned int far *)0x0000046C;

// функции /////////////////////////////////////////////////

void Timer(int clicks)

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

// задержки. Необходимое время задержки задается в "тиках"

// интервалах в 1/18.2 сек. Переменная, содержащая 32-битовое

// текущее значение системного таймера, расположена

// по адресу 0000:046Ch

unsigned int now;

// получить текущее время

now = *clock;

// Ничего не делать до тех пор, пока значение таймера не

// увеличится на требуемое количество "тиков".

// Примечание: один "тик" соответствует примерно 55мс.

while(abs(*clock - now) < clicks){}

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

// ОСНОВНАЯ ПРОГРАММА ////////////////////////////////////

void main(void)

{

int рх=1б0,ру=100, // стартовая позиция игрока

ex=0,ey=0; // стартовая позиция врага

done=0; //флаг окончания работы программы

_setvideomode(_MRES256COLOR);

printf(" Terminator - Q to Quit");

//сновной игровой цикл

whilе(!done)

{

// удалить точки

_setcolor(0);

_setpixel(px,py);

_setpixel(ex,ey);

// передвинуть игрока

if (kbhit())

{

// куда движется игрок?

switch(getch())

{

case 'u': // вверх

{

py-=2;

} break;

case 'n': // вниз

{

py+=2;

} break;

case 'j': // вправо

{

px+=2;

} break;

case 'h': // влево

{

px-=2;

} break;

case 'q':

{

done=1;

}break;

} // конец оператора switch

} // конец обработки нажатия клавиши

// переместить врага

// начало работы "мозга"

if (рх>ех) ех++;

if (рх<ех) ех--;

if (рy>еу) еу++;

if (рy<еу) еу--;

// конец работы "мозга"

// нарисовать точки

_setcolor(9);

_setpixel(px,py);

_setcolor(12);

_setpixel(ex,ey);

// немного подождать

Timer(2);

} // конец основного игрового цикла while

_setvideoroode(_DEFAULTMODE);

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

Листинг 13.1 показывает как просто сконструировать набор действий, кажущихся на вид разумными. Но на самом деле, прежде чем мы получим полноценный искусственный интеллект, эти строки программы должны претерпеть массу усовершенствований.

Уклонение

Пока мы еще не ушли слишком далеко в наших рассуждениях, продолжим нашу Дискуссию разговором о явлении прямо противоположном преследованию — об уклонении. Чтобы сконструировать создание, уклоняющееся от игрока, нам нужно сделать в точности противоположное предыдущим действиям. Алгоритм 13.2 в общих чертах показывает это.

Date: 2015-09-18; view: 439; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию