Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.06.2010, 22:58   #1
ordoss
Пользователь
 
Регистрация: 03.01.2010
Сообщений: 41
По умолчанию [C++] Тенис

Хотел написать теннис, но для начала решил реализовать простое вертикальное отбивание шарика от платформы и стенки.
Создал два обьекта TShape ball(10x10) и platform(10x100) на области 200х400:


Код:
while(ball->Top != 190)
	{
	if (ball->Top == 170 && ball->Left + 10 <= platform->Left + 100 && ball->Left >= platform->Left)
		while (ball->Top != 0)
			ball->Top -= 10;
	if (ball->Top == 0)
		while (ball->Top != 170 || ball->Top != 190)
			ball->Top += 10;
	}
Программа успешно компилируется, но окно програмы не появляется, в чем проблема?

Последний раз редактировалось ordoss; 21.06.2010 в 11:01.
ordoss вне форума Ответить с цитированием
Старый 20.06.2010, 23:32   #2
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Ну так явно присылать надо было не обработку коллизий, а создание окна, правда ведь? Код в студию
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 20.06.2010, 23:42   #3
ordoss
Пользователь
 
Регистрация: 03.01.2010
Сообщений: 41
По умолчанию

Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
	while(ball->Top != 190)
	{
	if (ball->Top == 170 && ball->Left + 10 <= platform->Left + 100 && ball->Left >= platform->Left)
		while (ball->Top != 0)
			ball->Top -= 10;
	if (ball->Top == 0)
		while (ball->Top != 170 || ball->Top != 190)
			ball->Top += 10;
	}

}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{
	if (GetAsyncKeyState(VK_LEFT) && platform->Left > 0)
		platform->Left -= 10;
	if (GetAsyncKeyState(VK_RIGHT) && platform->Left < Form1->ClientWidth - 100)
		platform->Left += 10;
}
//---------------------------------------------------------------------------
ordoss вне форума Ответить с цитированием
Старый 21.06.2010, 10:17   #4
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

В конструктор пихать цикл? Еще бы оно появилось!
Создайте на форме таймер и пихайте цикл в него, а конструктор уж оставьте пустым.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 21.06.2010, 11:02   #5
ordoss
Пользователь
 
Регистрация: 03.01.2010
Сообщений: 41
По умолчанию

Гром, да, спасибо. Теперь отбивание работает.
Но появился другой вопрос, как мне динамически создавать на форме обьекты TShape?
ordoss вне форума Ответить с цитированием
Старый 21.06.2010, 11:15   #6
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Код:
TShape* MyShape = new TShape;
Не знаю, что за класс, обычно VCL'вским компонентам надо еще указывать свойство Parent - другой компонент, на котором они располагаются.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 21.06.2010, 11:49   #7
ordoss
Пользователь
 
Регистрация: 03.01.2010
Сообщений: 41
По умолчанию

Цитата:
[BCC32 Error] Unit1.cpp(34): E2285 Could not find a match for 'TShape::TShape()'
не работает
ordoss вне форума Ответить с цитированием
Старый 21.06.2010, 18:40   #8
ordoss
Пользователь
 
Регистрация: 03.01.2010
Сообщений: 41
По умолчанию

все, разобрался
ordoss вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Игра "Тенис" Orodret Gamedev - cоздание игр: Unity, OpenGL, DirectX 8 22.04.2009 22:13