2 способ. Передать управление кораблю.

То есть, стать не "кошкой", а "мышкой". Пусть, например, подлодка тоже движется только с другой скоростью, и стреляет через определенные промежутки, а Вы с помощью клавиш (вправо и влево) замедляете или ускоряете движение корабля...

3 способ. Сделать игру для двоих...

Рис.46. Форма игры для двоих

Суть игры:

При запуске игры на правой панели появляется меню выбора режимов игры:

Игра на двоих,

Игра подлодкой против компьютера корабля,

Игра кораблем против компьютера подлодки. Далее можно просмотреть управление, чтобы скрыть управление надо нажать на кнопку скрыть.

Затем выбрав режим игры нажать кнопку игра.

После этого надо потопить противника.

Количество жизней:

На верхней панели отображаются количество попаданий.

3 попадания в подлодку или 10 попаданий в корабль и кто-то тонет.

Задание 8. Создать игру «Ипподром»

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

Мы создадим компьютерный вариант скачек. Свой ипподром, но не лошадиный, а морской. И назовем соответственно: Морской ипподром.

Итак, что из себя представляет игра? На игровом поле находится 5 фишек (аналоги лошадей). По команде фишки начинают двигаться по прямой на определенное количество клеток. Побеждает та, которая придет к финишу первой.

Вот и все. При разработке подобных программ разработчики используют массивы и циклы. Попытаемся обойтись без них.

Предварительная подготовка:

НЕ нашли? Не то? Что вы ищете?

1.  Скачайте рисунки к игре

2.  Поместите рисунки в папку Hippodrome.

Расставляем компоненты.

3.  Откройте Delphi.

4.  Сохраните свой проект в папке Hippodrome- ту, где находятся картинки.

5.  На форму поместите компонент Image и, в его свойство Picture, загрузите рисунок fonippod. jpg.

6.  Свойству Stretch (растяжка) присвойте значение True (чтобы рисунок подгонялся под размеры компонента).

7.  На рисунок поместите пять кнопок BitBtn (страница Additional) - это наши лодки.

8.  В свойство Gryph каждой кнопки поместите изображение соответствующего корабля.

pic1

Рис.47. Форма игры

9.  На форму поместите компонент Panel. А на нее следующие компоненты:

a.  Элемент RadioGroup

b.  5 элементов RadioButton

c.  Кнопка «Старт»- элемент Button

d.  Элемент GroupBox

e.  5 элементов Label

f.  Элемент Label6

g.  Таймер

На этом оформление программы пока закончено. Приступаем к программированию.

Что будет делать программа? При нажатии на кнопку Старт, лодки начинают двигаться слева направо. Та, которая первая достигнет отметки 600 пикселов, будет победителем.

Управляет движением лодок таймер. Его и начнем программировать.

10.  Сделайте двойной щелчок по таймеру. Откроется процедура обработки события:

procedure TForm1.Timer1Timer(Sender: TObject);

begin

end;

11.  Между begin и end пишем код:

randomize; - запускаем процедуру генераций счетчика случайных чисел;

bitbtn1.Left:= bitbtn1.Left+random(10); - перемещаем кнопку на случайное количество точек вправо в диапазоне от 0 до 10.

bitbtn2.Left:= bitbtn2.Left+random(10);- аналогично и со всеми кнопками.

bitbtn3.Left:= bitbtn3.Left+random(10);

bitbtn4.Left:= bitbtn4.Left+random(10);

bitbtn5.Left:= bitbtn5.Left+random(10);

Эти операторы дадут нам видимость движения, а случайный выбор - видимость соревнования.

12.  Интервал срабатывания таймера поставьте равный 50.

13.  Запустите программу, посмотрите, что получилось. Кнопки скачут не останавливаясь? Правильно. Нужно придумать, как их остановить.

14.  Вернитесь в режим проектирования.

Было бы очень просто написать: if bitbtn1.Left> 600 then Timer1.Tnabled:=false.

И все. Но! Как узнать, какая лодка пришла к финишу первой, а какая последней?

Воспользуемся свойством Tag, который есть у всех компонентов, следовательно, у BitBtn тоже. Это свойство Delphi не нужно, сделано оно специально для программистов. Хранить в нем можно любое целое число.

По умолчанию, это свойство равно 0 для всех компонентов. Мы же будем хранить в этом свойстве место, занятое лодкой.

15.  Еще раз двойной щелчок по таймеру. Добавьте следующие строки:

if bitbtn1.Left> 600 then

if bitbtn1.Tag=0 then

begin

n:=n+1;

bitbtn1.Tag:=n;

label1.Caption:='Желтая - '+IntToStr (bitbtn1.Tag)+' место';

end;

16.  Разберитесь с этим куском кода, здесь должно быть все понятно. Далее аналогично:

if bitbtn2.Left> 600 then

if bitbtn2.Tag=0 then

begin

n:=n+1;

bitbtn2.Tag:=n;

label2.Caption:='Розовая - '+IntToStr (bitbtn2.Tag)+' место';

end;

if bitbtn3.Left> 600 then

if bitbtn3.Tag=0 then

begin

n:=n+1;

bitbtn3.Tag:=n;

label3.Caption:='Фиолетовая - '+IntToStr (bitbtn3.Tag)+' место';

end;

if bitbtn4.Left> 600 then

if bitbtn4.Tag=0 then

begin

n:=n+1;

bitbtn4.Tag:=n;

label4.Caption:='Красная - '+IntToStr (bitbtn4.Tag)+' место';

end;

if bitbtn5.Left> 600 then

if bitbtn5.Tag=0 then

begin

n:=n+1;

bitbtn5.Tag:=n;

label5.Caption:='Голубая - '+IntToStr (bitbtn5.Tag)+' место';

end;

17.  Определяем победителя по формуле:

if n>4 then

begin

timer1.Enabled:=false;

groupBox1.visible:=true;

if (radioButton1.Checked) and (bitbtn1.Tag=1) then label6.Caption:='Вы победили!';

if (radioButton2.Checked) and (bitbtn2.Tag=1) then label6.Caption:='Вы победили!';

if (radioButton3.Checked) and (bitbtn3.Tag=1) then label6.Caption:='Вы победили!';

if (radioButton4.Checked) and (bitbtn4.Tag=1) then label6.Caption:='Вы победили!';

if (radioButton5.Checked) and (bitbtn5.Tag=1) then label6.Caption:='Вы победили!';

end

else label6.Caption:='Вы проиграли...';

18.  Не забудьте зарегистрировать переменную n, как тип Integer.

implementation

var n:integer;

{$R *.DFM}

19.  Проверьте, работают ли кнопки так, как надо. Выскакивает ли надпись 'Вы победили!', если угадан победитель. Появляются ли места, занятые участниками гонки?

Мне не нравится то, что гонка начинается как только произошла загрузка формы. Это не есть хорошо. Поэтому вначале игры таймер должен быть отключен.

20.  В инспекторе объектов Таймера выберите свойство Enabled:= False.

21.  А в обработчик события кнопки Старт прописываем:

procedure TForm1.Button1Click(Sender: TObject);

begin

timer1.Enabled:=true;

end;

22.  Далее все просто. Или, как говорят математики, тривиально. Наводим красоту, кое-что до поры до времени прячем, кое-что отключаем. И игра готова.

Самостоятельно: Добейтесь того, чтобы игра выглядела как на рисунке

pic2

Рис.48. Форма игры

Тотализатор.

Цель: переоборудовать игру для игры на деньги.

Идея: Дать возможность делать ставки. Тотализатор будет работать следующим образом:

В начале игры у Вас есть 1000 долларов. ВЫ можете ставить любую сумму, не бо`льшую, той, что у Вас есть, на любую лошадь (то есть лодку). Если Ваша лодка приходит первой, то сумма, поставленная на лодку, увеличивается в два раза. Если ваша лодка приходит второй, то Вам возвращаются деньги, если же лодка приходит 3, 4 или 5-ой, то Ваши деньги пропадают.

Необходимо также предусмотреть, чтобы была возможность делать ставки на любое количество лодок.

1.  Откройте Delphi и загрузите проект игры

В любом тотализаторе есть возможность поставить не на одну, а на несколько лошадей. У нас эта возможность тоже должна быть. Однако кнопки RadioButton позволяют ставить только на одну лошадь (то есть лодку). Значит, долой их.

2.  Удалите все пять радиокнопок.

3.  Вместо них поставьте 5 CheckBox-ов. Они находятся на панели Standart.

4.  Поставьте на форму компонент GroupBox2. А в него поместите 5 компонентов Edit.

После данных манипуляций фрагмент данной формы должен быть похожий на следующий:

pic1

Рис.49. Фрагмент формы приложения

5.  Свойства Text всех компонентов Edit я изменил на ----------, а сами свойство Enabled:= False, чтобы отключить их, при начале игры.

6.  Программируем работу флажка (CheckBox1):

procedure TForm1.CheckBox1Click(Sender: TObject);

begin

If (sender as TCheckBox=CheckBox1) then

begin

If checkbox1.checked=false then //если флажок отключен, то

begin

Edit1.enabled:=false; // отключаем edit1

Edit1.Color:=clBtnFace;

Edit1.Text:='----------------';

end;

If checkbox1.checked=true then //если флажок включен, то

begin

Edit1.enabled:=true; // включаем Edit1.

Edit1.Color:=clWhite;

Edit1.Text:='';

end;

end;

7.  Аналогично создайте обработчики событий для всех остальных флажков.

Так как в Edit мы будем вводить только цифры, то пишем обработчик события, чтобы это устранить.

8.  Выберите элемент Edit1 и щелкните в Инспекторе объектов по закладке Events.

9.  В событии OnKeyPress (при нажатии) введите:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

if not ((key>='0') and (key<='9') or (key=#8)) - все кнопки, кроме цифр и Backspase

игнорируются.

then key:=chr(0);

end;

Далее, всё остальное Вам известно. Проявляйте творчество. Посмотрите, как сделана моя программа.

pic2

Рис.50. Форма приложения

Задание 9. Создать игру «21»

Игры, подобные данной, претендуют на звание интеллектуальных. На данном этапе в соревнование с человеком должна вступить машина. Работу компьютера должны прописать мы сами.

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

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Основные порталы (построено редакторами)

Домашний очаг

ДомДачаСадоводствоДетиАктивность ребенкаИгрыКрасотаЖенщины(Беременность)СемьяХобби
Здоровье: • АнатомияБолезниВредные привычкиДиагностикаНародная медицинаПервая помощьПитаниеФармацевтика
История: СССРИстория РоссииРоссийская Империя
Окружающий мир: Животный мирДомашние животныеНасекомыеРастенияПриродаКатаклизмыКосмосКлиматСтихийные бедствия

Справочная информация

ДокументыЗаконыИзвещенияУтверждения документовДоговораЗапросы предложенийТехнические заданияПланы развитияДокументоведениеАналитикаМероприятияКонкурсыИтогиАдминистрации городовПриказыКонтрактыВыполнение работПротоколы рассмотрения заявокАукционыПроектыПротоколыБюджетные организации
МуниципалитетыРайоныОбразованияПрограммы
Отчеты: • по упоминаниямДокументная базаЦенные бумаги
Положения: • Финансовые документы
Постановления: • Рубрикатор по темамФинансыгорода Российской Федерациирегионыпо точным датам
Регламенты
Термины: • Научная терминологияФинансоваяЭкономическая
Время: • Даты2015 год2016 год
Документы в финансовой сферев инвестиционнойФинансовые документы - программы

Техника

АвиацияАвтоВычислительная техникаОборудование(Электрооборудование)РадиоТехнологии(Аудио-видео)(Компьютеры)

Общество

БезопасностьГражданские права и свободыИскусство(Музыка)Культура(Этика)Мировые именаПолитика(Геополитика)(Идеологические конфликты)ВластьЗаговоры и переворотыГражданская позицияМиграцияРелигии и верования(Конфессии)ХристианствоМифологияРазвлеченияМасс МедиаСпорт (Боевые искусства)ТранспортТуризм
Войны и конфликты: АрмияВоенная техникаЗвания и награды

Образование и наука

Наука: Контрольные работыНаучно-технический прогрессПедагогикаРабочие программыФакультетыМетодические рекомендацииШколаПрофессиональное образованиеМотивация учащихся
Предметы: БиологияГеографияГеологияИсторияЛитератураЛитературные жанрыЛитературные героиМатематикаМедицинаМузыкаПравоЖилищное правоЗемельное правоУголовное правоКодексыПсихология (Логика) • Русский языкСоциологияФизикаФилологияФилософияХимияЮриспруденция

Мир

Регионы: АзияАмерикаАфрикаЕвропаПрибалтикаЕвропейская политикаОкеанияГорода мира
Россия: • МоскваКавказ
Регионы РоссииПрограммы регионовЭкономика

Бизнес и финансы

Бизнес: • БанкиБогатство и благосостояниеКоррупция(Преступность)МаркетингМенеджментИнвестицииЦенные бумаги: • УправлениеОткрытые акционерные обществаПроектыДокументыЦенные бумаги - контрольЦенные бумаги - оценкиОблигацииДолгиВалютаНедвижимость(Аренда)ПрофессииРаботаТорговляУслугиФинансыСтрахованиеБюджетФинансовые услугиКредитыКомпанииГосударственные предприятияЭкономикаМакроэкономикаМикроэкономикаНалогиАудит
Промышленность: • МеталлургияНефтьСельское хозяйствоЭнергетика
СтроительствоАрхитектураИнтерьерПолы и перекрытияПроцесс строительстваСтроительные материалыТеплоизоляцияЭкстерьерОрганизация и управление производством