Как претворить в жизнь идею компьютерной игры? Приходилось ли вам, играя в свою любимую игру, мечтать о том, как можно было бы ее улучшить? Задумывались ли вы в





НазваниеКак претворить в жизнь идею компьютерной игры? Приходилось ли вам, играя в свою любимую игру, мечтать о том, как можно было бы ее улучшить? Задумывались ли вы в
страница3/46
Дата публикации03.08.2014
Размер6.69 Mb.
ТипДокументы
100-bal.ru > Информатика > Документы
1   2   3   4   5   6   7   8   9   ...   46

ОСНОВЫ РАБОТЫ С УСТРОЙСТВАМИ ВВОДА

В настоящее время компьютеры еще не научились читать наши мысли, а раз так, то для того, чтобы хоть как-то общаться с ними и «объяснять» им, что же мы от них хотим, нам приходится «разговаривать» с ними через механические интерфейсы. В понятие интерфейс входят клавиатура, джойстик и мышь. Для работы с этими устройствами мы будем придерживаться стандартной тактики - использовать BIOS, прерывания и ассемблер. Эта глава состоит из следующих частей:

  • Взаимодействие с пользователем в видеоиграх;

  • Джойстик и работа с ним;

  • Работа с клавиатурой;

  • Управление мышью.

Взаимодействие с пользователем в видеоиграх

Компьютерные игры не были бы так азартны, если бы мы не могли влиять на разворачивающиеся в них события. Основная идея видеоигры состоит в возможности, взаимодействия с «виртуальным миром» в реальном масштабе времени. Когда видеоигры только появились, они имели совершенно убогий интерфейс - многие из них управлялись только парой клавиш.

Но время шло и появлялись новые устройства ввода. Фирма Atari и некоторые другие начали выпускать игры, управляемые джойстиками и более хитрыми устройствами типа «пилотского штурвала». Сегодня для ПК создано множество устройств - плод кропотливых теоретических и практических инженерных разработок.

Как создатели видеоигр, мы должны уделять пристальное внимание работе с устройствами ввода. Люди, играющие в наши игры, должны иметь удобный и надежный интерфейс для изучения созданного нами мира. Если же взаимодействие с системой неудобно и сложно, не поможет ни красивая музыка, ни видеоэффекты — людей не привлечет игра, которой они не смогут управлять. Надо сказать, что сейчас очень удачное время для тех, кто собирается заняться видеоигорным бизнесом. Сегодня мы можем выделить среди пользователей ПК несколько больших групп. Например:

  • Большинство имеет компьютеры 386 и 486;

  • У большинства есть, как минимум, VGA-карты и многие располагают звуковыми картами;

  • Наконец, благодаря президенту Microsoft Билу Гейтсу и большой популярности оболочки Windows, практически у всех есть мыши.

Можно задать вопрос: «А имеет ли предполагаемый игрок джойстик?» Ответ будет менее определенным: «кто-то имеет, а кто-то — нет». Многие все же предпочитают клавиатуру. Неважно, какое из устройств используется, мы должны добиться, чтобы его применение было для игрока почти интуитивным. Не в нашей власти выбирать, какое из устройств должно поддерживаться игрой. Мы обязаны научиться работать с любым из них. В данном случае мы должны стать рабами тех, для кого пишем игры, хотя наша философия и привычки (в выборе устройств ввода) могут сильно отличаться от привычек наших игроков.

Теперь без лишних слов начнем с джойстика.

Джойстик

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

Наша задача состоит в преобразовании этого аналогового сигнала (его величины) в более приемлемый вид, а именно, в цифровое значение. Все мы, конечно, знаем про АЦП, и если бы ПК создавали сегодня, то он непременно стоял бы в каждой карте порта джойстика.

Но в конце 70-х, начале 80-х годов, когда ПК только разрабатывались, все АЦП были очень дороги. Тогда инженеры создали специальный АЦП только для контроллера джойстика. Для того времени это было просто гениальным решением, но сегодня заставляет ломать голову над программированием джойстика каждого программиста,

Как работает джойстик

Теперь поговорим более подробно о том, как работает джойстик:

  • Каждая ось джойстика имеет связанный с ней потенциометр. Когда рукоятка отклоняется по оси Х или Y, то сопротивление соответствующего потенциометра изменяется;

  • Потенциометр, используется вместе с конденсатором для создания цепи нагрузки;

  • Как мы знаем из курса элементарной электроники, если подать напряжение на цепь, состоящую из последовательно включенного сопротивления и конденсатора, то время зарядки конденсатора будет пропорционально величине сопротивления и напряжения;

  • Напряжение снимается с конденсатора и сравнивается с эталонным. Когда напряжение достигает порогового значения, система выставляет флаг;

  • Время, занимаемое этим процессом, пропорционально сопротивлению, которое в свою очередь зависит от позиции ручки джойстика. Таким образом, мы можем определить положение джойстика.

К сожалению, во всем этом есть одна проблема: мы измеряем время реакции системы, но в данном случае измерение означает счет. И чем быстрее ПК, тем быстрее он считает. Таким образом, более быстродействующие ПК, будут отличаться от медленных по получаемым результатам.

Именно поэтому прежде чем начать играть в игру нам приходится поиграть в калибровку джойстика. Программа должна запомнить параметры джойстика для данного ПК.

Кнопки джойстика

Кнопки джойстика - это обычные переключатели (кстати, вам крупно повезло, ведь это легко могли быть зарядные, ионообменные управляемые магнитным полем подушечки). Для того чтобы узнать состояние переключателя, нам надо прочитать значение из определенного порта.

Есть джойстики с множеством кнопок, например, Trustmaster. Несмотря ни на что, его работа ничем не отличается от других джойстиков, а состояние лишних кнопок можно прочитать через другие порты ввода/вывода. Эти порты обычно указываются производителем в соответствующей документации. Обычно, порт 201h — это то окно, через которое можно общаться с джойстиком. Как показано на рисунке 3.2, этот порт связан и с джойстиком А, и с джойстиком В.

Мы узнаем назначение битов 0-3 чуть позже — в разделе «Чтение позиции джойстика». Биты 4-7 предназначены для чтения кнопок джойстика. Когда одна из кнопок нажата, то соответствующий бит порта 201h изменяется. Есть только одна маленькая деталь: значения битов всегда инвертированы. Это значит, что если вы, например, жмете кнопку 1 на джойстике А, то бит 0 изменит значение с \ на 0. Но в общем, это не особенно принципиально.

Листинг 3.1 содержит программный код чтения кнопки.
Листинг 3.1. Чтение кнопок джойстика.

#define JOYPORT 0х201 // порт джойстика = 201h

#define BUTTON_1_A 0х10 // джойстик А, кнопка 1

#define BUTTON_1_B 0х20 // джойстик А, кнопка 2

#define BUTTON_2_A 0х40 // джойстик В, кнопка 1

#define BUTTON_2_B 0х80 // джойстик В, кнопка 2

#define JOYSTICK_1_X 0х01 // джойстик А, ось ,Х

#define JOYSTICK_1_Y 0х02 // джойстик А, ось Y

#define JOYSTICK_2_X 0х04 // джойстик В, ось Х

#define JOYSTICK_2_Y 0х08 // джойстик В, ось Y

#define JOY_1_CAL 1 // эта команда калибрует джойстик А

#define JOY_2_CAL 2 // эта команда калибрует джойстик В

unsigned char Buttons(unsigned char button)

(

// эта функция читает статус кнопок джойстика

// сбрасываем содержимое порта 201h

outp (JOYPORT, 0);

// инвертируем прочитанное из порта значение и комбинируем

// его с маской

return (~inp( JOYPORT) & button) ;

}

unsigned char Buttons_Bios (unsigned char button)

{ // чтение кнопок через обращение к BIOS

union _REGS inregs, outregs;

inregs.h.ah == 0х84; // функция джойстика 84h

inregs.x.dx = 0х00; // подфункция 0h - чтение кнопок

// вызов BIOS

_int86 (0х15, &inregs, &outr.egs);

// инвертируем полученное значение и комбинируем его с маской

return(~outregs.h.al) & button);

}

Теперь посмотрим на детали Листинга 3.1.

  • Функция Buttons() и Buttons_Bios() возвращают одинаковый результат. Buttons() посылает 0 в порт джойстика (это делается для того, чтобы инициировать порт) и затем читает данные;

  • Как только данные получены, мы маскируем младшие четыре бита и инвертируем четыре старших;

  • Этот листинг включает также определение констант (#define), что делает интерфейс более удобным;

  • Buttons_Bios() для чтения джойстика использует BIOS. Как только выполняется вызов, результат помещается в регистр AL. В принципе, для таких простых вещей, как кнопки, я использую прямой доступ к портам. Я уже говорил, что использование функций BIOS более медлительно. Правда, по отношению к джойстику это, может быть, и не самый плохой подход. Если вы хотите читать с помощью BIOS - читайте.

Чтение позиции джойстика

Чтение позиции джойстика — весьма утомительная, но вполне выполнимая задача. Все, что нам надо сделать, это послать джойстику простую команду. Это делается записью значения 0 в порт 201h. Затем мы ждем, когда установится нужный нам бит (0-3) порта джойстика. Во время ожидания мы должны включить счетчик. Когда нужный бит установлен, то число, которое мы насчи­таем, и есть позиция джойстика. Листинг 3.2 показывает код, который все это делает.

Листинг 3.2. Чтение позиции джойстика.

unsigned int Joystick{unsigned char stick)

{

asm {

cli ;запретить прерывания

mov ah,byte ptr stick ;замаскировать АН,

;чтобы выбрать джойстик

хоr аl,аl ;обнулить AL

xor cx,cx ;обнулить СХ

mov dx,JOYPORT ;используем DX для ввода и вывода

out dx,al

discharge:

in al,dx ;читаем данные из порта

test al,ah ;изменился ли бит запроса?

loopne discharge ;если нет, повторяем чтение

sti ;разрешить прерывания

хог ах, ах ;обнулить АХ

sub ах,сх, ;теперь АХ содержит позицию джойстика

} // конец ассемблерного блока

// возвращаемое значение содержится в АХ

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

(Кстати, встроенный ассемблер мне все больше и больше нравится.) Программа достаточно проста: при запуске программа обнуляет регистры АХ и СХ;

  • Затем программа опрашивает порт джойстика;

  • Далее подсчитывается количество циклов в ожидании, пока установится нужный бит;

  • Подсчет выполняется в регистре СХ с помощью инструкции LOOPXX (в данном случае используется команда LOOPNE);

  • Инструкция TEST определяет установку бита;

  • Когда нужный бит установлен, программа выходит из цикла. Результат передается вызывающей программе, в регистре АХ.

С этим вроде все. Позже я покажу демонстрационную программу, в которой применяются все функции джойстика. Благодаря обращению к BIOS она обладает лучшей совместимостью, легче переносима и умеет производить само­калибровку. Я думаю, что и вы будете пользоваться ею.

Калибровка джойстика

Теперь разберемся с калибровкой джойстика. Как я уже говорил ранее, резуль­тат, который мы получим от чтения джойстика в цикле, будет разным на разных ПК. На одних компьютерах значения по оси Х окажется в пределах от 0 до 255, на других - от 0 до 10000.

Таким образом, нам надо нормализовать эти данные или масштабировать их. Стандартным приемом в данных случаях может служить калибровка джой­стика самим игроком в setup'e игры. Во время этой процедуры игрок двигает джойстиком, а программа считывает и запоминает данные калибровки где-ни­будь на диске для дальнейшего использования.

Для того чтобы проанализировать джойстик, программа должна:

  • Найти значения максимального и минимального отклонения по осям Х и Y;

  • Сохранить эту информацию;

  • Использовать полученные данные для выяснения, на какой угол игрок отклонил ручку джойстика.

Например, джойстик был откалиброван и мы обнаружим, что ось Х имеет значения от 0 до 255. Затем, если значение джойстика, например, по координате Х окажется равным 128, то можно с уверенностью сказать, что рукоятка находится в среднем положении (кстати, в процессе калибровки средняя пози­ция также запоминается).

Осталась одна маленькая деталь, о которой стоит сказать — это детекти­рование джойстика (то есть проверка его наличия). Обычная техника детекти­рования такая: в цикле опрашивается порт джойстика в течение определенного времени. Но надо сказать, что с помощью функций BIOS это можно сделать более надежно. Если после вызова функции значения по всем координатам равны 0, то никакого джойстика нет.

Я думаю, что мы уже сказали о джойстиках все. Теперь напишем небольшую программку, в, которой используем функции из Листингов 3.1 и 3.2. При старте она просит игрока:

  • Подвигать джойстиком;

  • Установить джойстик в среднее положение;

  • Понажимать на кнопки.

Затем, программа сохраняет результаты процедуры калибровки в глобальных переменных.

Листинг 3.3. Программа работы с джойстиком (JOY.C).

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

#include

#include

#include

#include

#include

#include

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

#define JOYPORT 0х201 // порт джойстика - 201h

#define BUTTON_1_A 0х10 // джойстик А, кнопка 1

#define BUTTON_1 В 0х20 // джойстик А, кнопка 2

#define BUTTON_2_A 0х40 // джойстик В, кнопка 1

#define BUTTON_2_B 0х80 // джойстик В, кнопка 2

#define JOYSTICK_1_X 0х01 // джойстик А, ось Х

#define JOYSTICK_1_Y 0х02 // джойстик А, ось Y

#define JOYSTICK_2_X 0х04 // джойстик В, ось Х

#define JOYSTICK_2_Y 0х08 // джойстик В, ось Y

#define JOY_1_CAL 1 // команда калибровки джойстика А

#define JOY_2_CAL 2 // команда калибровки джойстика В

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

unsigned int

joy_1_max_x, // глобальные переменные для сохранения

joy_1_max_y, // калибровочных значений

joy_1_min_x,

joy_l_min_y,

joy_1_cx, joy_1_cy,

joy_2_max_x, joy_2_max_y,

joy_2_min_x, joy_2_min_y,

joy_2_cx, joy_2_cy;

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

unsigned char Buttons(unsigned char button)

{

// функция читает статус кнопок джойстика

outp(JOYPORT,0); // получаем запрос на получение статуса кнопок

// инвертируем полученное значение и комбинируем его с маской

return (~inp(JOYPORT) & button);

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

unsigned int Joystick(unsigned char stick)

{

// Функция читает положение счетчика на основании количества

// циклов, прошедших между сбросом и установкой бита в порту

// джойстика. Встроенный ассемблер - прекрасная вещь!

_asm{

cli ; запрещаем прерывания

mov ah, byte ptr stick ; в регистр АН заносим маску

; для выбора джойстика

хоr аl,аl ; обнуляем AL

хоr сх,сх ; обнуляем СХ

mov dx,JOYPORT ; в DX помещаем номер порта джойстика

out dx,al ; обнуляем содержимое порта

discharge:

in al,dx ; читаем данные из порта

test al,ah ; установился ли бит?

loopne discharge ; если нет - повторяем чтение

sti ; разрешаем прерывания

хог ах,ах ; обнуляем АХ

sub ах,сх ; теперь АХ содержит искомое значение

} // конец ассемблерного блока

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

//////////////////////////////////////////////////////

unsigned int Joystick_Bios(unsigned char stick)

(

// версия функции чтения состояния джойстика

// работающая через BIOS

union _REGS inregs, outregs;

inregs.h.ah = 0х84; // нам нужна функция 84h

inregs.x.dx = 0х01;

// подфункция 01h - чтение состояния джойстика

_int86(0х15,&inregs, &outregs); // вызываем BIOS

// возвращаем требуемое значение

switch(stick)

{

case JOYSTICK_1_X:

{

return(outregs.x.ax);

} break;

case JOYSTICK1_Y:

{

return(outregs. x. bx} ;

} break;

case JOYSTICK_2_X:

{

return(outregs.x.ex);

} break;

case JOYSTICK_2_Y:

{

return(outregs.x.dx) ;

} break;

default:break;

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

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

///////////////////////////////////////////////////////

unsigned char Buttons_Bios(unsigned char button)

{

// версия функции для чтения статуса кнопок джойстика,

// работающая через BIOS

union _REGS inregs, outregs;

inregs.h.ah = 0х84; // обращение к джойстику - функция 84h

inregs.x.dx = 0х00; // подфункция 0 - чтение статуса кнопок

_int86 (0х15, &inregs, &outregs);

// инвертируем результат и комбинируем с переданной маской

return((~outregs.h.al) & button);

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

void Joystick_Calibrate(int stick)

{

// функция выполняет калибровку джойстика путем нахождения

// минимального и максимального значений по осям Х и У. Затем

// полученные значения сохраняются в глобальных переменных.

unsigned int x_new,у_new; // позиция джойстика

if (stick==JOY_1_CAL) {

printf("\nCalibrating Joystick #1: Swirl stick, then release it and press FIRE");

// придаем переменным заведомо невозможные значения

joy_1_max_x=0;

joy_1_max_y=0;

joy_1_min_x=10000;

joy_1_min_y=10000;

// пользователь должен покрутить джойстик, поставить его в среднее

// положение и затем нажать любую кнопку

while(!Buttons(BUTTON_1_A | BUTTON_1_B))

{

// читаем новые значения потенциометра и пытаемся улучшить

// калибровку

x_new = Joystick_Bios(JOYSTICK_1_X);

y_new = Joystick_Bios(JOYSTICK_1_Y};

// обрабатываем ось X

if (x_new >= joy_1_max x) joy_1_max x = x_new;

if (x_new <= joy_1_min_x) joy_1_min_x = x_new;

// обрабатываем ось Y

if (y_new >= joy_1_max_y) joy_1_max_y = y_new;

if (y_new <= joy_1_ min y) joy_1_min у = у_new;

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

// получаем значения потенциометра, соответствующие нейтральному

// положению

joy_1_cx = x_new;
joy_l_cy = y_new;

} // конец калибровки джойстика А

else

if (stick==JOY_2_CAL)

{

printf("\nCalibrating Joystick #2: Swirl stick, then release it and pres's FIRE");

// придаем переменным заведомо невозможные значения

joy_2_max x=0;

joy_2_max_y=0;

joy_2_min_x=10000;

joy_2_min_y=10000;

// пользователь должен покрутить джойстик, поставить его в

// нейтральное положение и нажать любую кнопку

while(!Buttons(BUTTON_2_A | BUTTON_2_B))

{

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

x_new = Joystick (JOYSTICK_2_X) ;

y_new = Joystick(JOYSTICK_2_Y);

// обрабатываем ось Х

if (x_new >= joy_2_max_x)

joy_2_max x = x_new;

else if (x_new <= joy_2_min_x)

joy_2_min_x = x_new;

// обрабатываем ось Y

if (y_new >=joy_2_max_y)

joy_2_max_y = y_new;

else if (y_new <= joy_2_min_y)

joy_2_min_y = y_new;

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

// читаем значения, соответствующие нейтральному положению

joy_2_cx = x_new;

joy_2_су = y_new;

} // конец калибровки джойстика В

printf ("\nCalibration Complete... hit any key to continue.");

getch();

} // конец функции калибровки джойстика

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

void main(void) (

// калибруем джойстик

Joystick_Calibrate(JOY_1_CAL) ;

_clearscreen(_GCLEARSCREEN);

// даем пользователю поиграть с джойстиком

while(!kbhit())

{

_settextposition(2,0);

printf("Joystick 1 = [%u,%u] ", Joystick__Bios(JOYSTICK_1_X), Joystick_Bios(JOYSTICK_1_Y));

if (Buttons_Bios(BUTTON_1_A))

printf("\nButton 1 pressed ");

else if (Buttons_Bios(BUTTON_1_B))

printf("\nButton 2 pressed ");

else

printf("\nNo Button Pressed ") ;

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

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

printf("\nmax x=%u/ max y=%u,min x=%u,min y=%u, cx=%u, cy=%u", joy_1_max_x, joy_1_max_y, joy_1_min_x, joy_1_min_y, joy_1_cx, joy_1_cy) ;

// кое-что будем добавлять позже

} // конец функции main
Если вы введете программу с Листинга 3.3, то увидите, как джойстик А изменяет свои значения в процессе работы с ним.

Клавиатура

Клавиатура - это наиболее сложное устройство ввода, которое есть в ПК. Она даже имеет свою собственную микросхему - контроллер ввода. Я провел много бессонных ночей, вчитываясь в листинги BIOS и пытаясь понять тайны, скрытые в работе с клавиатурой.

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

Для наших целей (для написания видеоигр) мы должны научиться хорошо работать с клавиатурой. Для этого вовсе не стоит разбираться с прерываниями, регистрами и портами. Мы будем использовать функции языка Си и BIOS для работы с очередью клавиатуры. Говоря о Си, я не имею в виду функции типа getch () и scanf (). Речь пойдет, скорее, о функциях типа _bios_keyboard ().

Примечание

Давайте приостановимся и немного подумаем, Общее правило для авторов игр - никогда не использовать BIOS. Верно? Хорошо, на самом деле BIOS вполне можно использовать для файловых операций и для выделения памяти. В общем, обращения к BIOS вполне допустимы в функциях, некритичных по времени. Попытка исполь­зовать его для работы с джойстиком или клавиатурой не будет для нас смертельна (в отличие от попыток организовать через BIOS вывод графики). Как я уже говорил, современные компьютеры достаточно быстры, чтобы нам не приходилось оптимизировать каждую запятую в тексте программы или писать ее целиком на ассемблере.

BIOS поддерживает несколько функций, которые мы будем использовать и которые приведены в таблице 3-1.

Таблица 3.1. Клавиатурные функции BIOS.

Bios INT 16h
1   2   3   4   5   6   7   8   9   ...   46

Похожие:

Как претворить в жизнь идею компьютерной игры? Приходилось ли вам, играя в свою любимую игру, мечтать о том, как можно было бы ее улучшить? Задумывались ли вы в icon«Поиск и обработка экономической информации»
Сегодня, мы не можем представить свою жизнь без компьютера. Но ведь так было не всегда. В своем реферате я хочу рассказать о компьютерной...
Как претворить в жизнь идею компьютерной игры? Приходилось ли вам, играя в свою любимую игру, мечтать о том, как можно было бы ее улучшить? Задумывались ли вы в iconС 19 сентября 2011 г время понедельник вторник
Это внекармический подарок Вселенной, оставленный нам учителями и учительницами древности, которые уже достигли всех целей, о которых...
Как претворить в жизнь идею компьютерной игры? Приходилось ли вам, играя в свою любимую игру, мечтать о том, как можно было бы ее улучшить? Задумывались ли вы в iconПрограмма по формированию навыков безопасного поведения на дорогах...
Жизнь – это не то, что происходит с нами, а то, что мы можем сделать с ней. Можно плыть по течению, затерявшись в толпе, а можно...
Как претворить в жизнь идею компьютерной игры? Приходилось ли вам, играя в свою любимую игру, мечтать о том, как можно было бы ее улучшить? Задумывались ли вы в iconТема урока: Кожа надёжная защита организма (3 класс). Цели
Приходилось ли вам болеть? Чем больной человек отличается от здорового? Встречаясь с людьми, мы говорим: “Здравствуйте”, а задумывались...
Как претворить в жизнь идею компьютерной игры? Приходилось ли вам, играя в свою любимую игру, мечтать о том, как можно было бы ее улучшить? Задумывались ли вы в iconВы хотите избавиться от вредных привычек, улучшить свою жизнь и почувствовать...
Чего бы вы ни хотели — победы над вашими самыми мрачными страхами и фобиями или притока новых жизненных сил, — эта книга, написанная...
Как претворить в жизнь идею компьютерной игры? Приходилось ли вам, играя в свою любимую игру, мечтать о том, как можно было бы ее улучшить? Задумывались ли вы в iconИсследовательская работа по теме: «Мобильный телефон. Друг или враг?»
С его помощью можно узнать который час, записать необходимую информацию, сократить время ожидания, играя в игру. Встроенная камера...
Как претворить в жизнь идею компьютерной игры? Приходилось ли вам, играя в свою любимую игру, мечтать о том, как можно было бы ее улучшить? Задумывались ли вы в iconИгорь Куклинов Современная притча в притчах о том, как улучшить свое...
Все было плохо. Третий месяц в институте не выдавали зарплату. И без того мизерный оклад, да еще и не платят. Сергей в задумчивости...
Как претворить в жизнь идею компьютерной игры? Приходилось ли вам, играя в свою любимую игру, мечтать о том, как можно было бы ее улучшить? Задумывались ли вы в iconСам Себе Доктор. Лечебная пирамида
...
Как претворить в жизнь идею компьютерной игры? Приходилось ли вам, играя в свою любимую игру, мечтать о том, как можно было бы ее улучшить? Задумывались ли вы в iconПонятно, вертикальный прыжок – так расскажите мне как его улучшить?!
Я улучшила свой вертикальный прыжок на 19 дюймов (47 сантиметров), а теперь собираюсь рассказать, как этого достичь Вам самим
Как претворить в жизнь идею компьютерной игры? Приходилось ли вам, играя в свою любимую игру, мечтать о том, как можно было бы ее улучшить? Задумывались ли вы в iconФедоровский Данил Константинович юф нгу (2010)
«Три превращения духа называю я вам: как дух становится верблюдом, львом верблюд и, наконец, ребенком становится лев» [1]. Многие...
Как претворить в жизнь идею компьютерной игры? Приходилось ли вам, играя в свою любимую игру, мечтать о том, как можно было бы ее улучшить? Задумывались ли вы в iconПрограмма по формированию навыков безопасного поведения на дорогах...
Он руководит своим маленьким кукольным миром, копируя то, как делают это взрослые. Но каждый ребёнок играет по – своему: кому – то...
Как претворить в жизнь идею компьютерной игры? Приходилось ли вам, играя в свою любимую игру, мечтать о том, как можно было бы ее улучшить? Задумывались ли вы в iconПрограмма по формированию навыков безопасного поведения на дорогах...
Игры должны иметь практическую направленность, так как при изучении биологии важно знать не только строение растений и где их можно...
Как претворить в жизнь идею компьютерной игры? Приходилось ли вам, играя в свою любимую игру, мечтать о том, как можно было бы ее улучшить? Задумывались ли вы в iconРазработка урока на тему «Как правильно мечтать?»
Разработка урока на тему «Как правильно мечтать?» по повести Ф. М. Достоевского «Белые ночи»
Как претворить в жизнь идею компьютерной игры? Приходилось ли вам, играя в свою любимую игру, мечтать о том, как можно было бы ее улучшить? Задумывались ли вы в iconУчитель биологии моу сош №1 г. Тобольска Интерактивное обучение как...
Можно подобрать игры, которые способны поддерживать нужную атмосферу на уроке, изменить настрой и активность обучающихся в классе....
Как претворить в жизнь идею компьютерной игры? Приходилось ли вам, играя в свою любимую игру, мечтать о том, как можно было бы ее улучшить? Задумывались ли вы в iconРеферат на тему: “Ветроэнергетика. Перспективы использования в Республике Беларусь”
Историю человеческого общества (в том числе и нашей Беларуси) можно рассматривать по-разному. Например, как историю жизни и поступков...
Как претворить в жизнь идею компьютерной игры? Приходилось ли вам, играя в свою любимую игру, мечтать о том, как можно было бы ее улучшить? Задумывались ли вы в iconЗадумывались ли вы о том, что у нашего здоровья немало добрых и верных друзей?
Дорогие ребята! Согласитесь, приятно чувствовать себя здоровым, бодрым и веселым! Ведь как говорили древние греки: «В здоровом теле...


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск