[H-L-L.ru]

Форма входа

Меню сайта

Categories
Программы с GUI [8]
Создание программ с графическим интерфейсом пользователя

Главная » Статьи » C++ Builder 6 - GUI » Программы с GUI

Создание игры
  Настало время и самим немного развлечься :) В этой статье я расскажу, как создать не сложную игру. Суть её в следующем: для запуска вам нужно нажать любую кнопку, она начнет вибрировать, при последующем нажатии на нею она перестанет вибрировать и начнет двигаться другая кнопка. Наверняка вы в такое играли. Теперь попробуйте сделать это своими руками.
  Запускаем C++ Builder и сохраняем проект. Размещаем компоненты на форме 10 кнопок типа Button и компоненты ActionList и MainMenu с вкладки Standart (разместить можно по любому):



Добавим пункты в меню дважды щелкнув по нему и переименовываем кнопки:





Прописываем код для пункта меню "Выход":

void __fastcall TForm1::N1Click(TObject *Sender)
{
 Close();
}


Теперь дважды щелкаем по компоненту ActionList появится окно:



  В поле Actions щелкаем правой кнопкой и в появившемся контекстном меню выбираем New Action. И повторяем это ещё раз, так как нам надо два
Action.



  Не закрываем это в окно. В конструктор формы прописываем следующий код:

__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
//Присваиваем элементам массива наши кнопки
Buttons[1]=Button1;
Buttons[2]=Button2;
Buttons[3]=Button3;
Buttons[4]=Button4;
Buttons[5]=Button5;
Buttons[6]=Button6;
Buttons[7]=Button7;
Buttons[8]=Button8;
Buttons[9]=Button9;
Buttons[0]=Button10;
}


Перед ним дописываем следующий код:

TButton *Buttons[10];// массив из десяти кнопок
//вспомогательные переменные
unsigned short bt;
bool flag;


Так же подключаем библиотеку:

#include <cstdio.h>//нужна для работы  рандомайзера

В окне ActionList выбираем Action1 и на вкладке Object Inspector выбираем событие onUpdate, прописываем следующий код:

void __fastcall TForm1::ActionList1Update(TBasicAction *Action,
      bool &Handled)
{
if(flag){
  Buttons[bt]->Top=(Buttons[bt]->Top)+5;
  Buttons[bt]->Top=(Buttons[bt]->Top)-5;
}
}


Теперь дважды щелкаем по Action1 и пишем:

void __fastcall TForm1::Action1Execute(TObject *Sender)
{
flag=1;
if(flag){
  Buttons[bt]->Top=(Buttons[bt]->Top)+5;
  Buttons[bt]->Top=(Buttons[bt]->Top)-5;
}
if(Button1->Focused())
  bt=1;
if(Button2->Focused())
  bt=2;
if(Button3->Focused())
  bt=3;
if(Button4->Focused())
  bt=4;
if(Button5->Focused())
  bt=5;
if(Button6->Focused())
  bt=6;
if(Button7->Focused())
  bt=7;
if(Button8->Focused())
  bt=8;
if(Button9->Focused())
  bt=9;
if(Button10->Focused())
  bt=0;
for(int i=0;i<10;i++){
  Buttons[i]->OnClick=Action2Execute;
//  Buttons[i]->Action=Action2;
  }
}

А для Action2:

void __fastcall TForm1::Action2Execute(TObject *Sender)
{
//  Buttons[bt]->Caption=random(256);
  bt=random(10);
}

Теперь для пункта меню "Рестарт" пишем:

void __fastcall TForm1::N2Click(TObject *Sender)
{
flag=0;
bt=random(10);
for (int i=0;i<10;i++){
  Buttons[i]->Caption=IntToStr(i);
  Buttons[i]->OnClick=Action1Execute;
  }       
}

  Теперь выделяем все кнопки и в Object Inspector для свойства Action выбираем Action1 (После этого придется переписать свойства Caption заново).



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

Можете скачать готовую программу здесь.


Источник: игра C++ Builder ActionList

Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Полная версия сайта