IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

3 страниц V  1 2 3 >  
 Ответить  Открыть новую тему 
> Футбольный менеджер comes back, Теперь на Delphi
cooler
сообщение 18.03.2008 20:11
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 178
Пол: Мужской

Репутация: -  0  +


Продолжаю написание игры футбольный менеджер.
Теперь на Delphi.
Т.к почти еще ничего не знаю надеюсь на вашу помощь.
Для начала: как сделать выбор 1 пункта из нескольких?
(при выборе в зависимости от пункта переменной присваивается значение)
Это могут быть "радио"- кнопки или выбор из списка.
Не могу разобраться как связать фому с unit'ом.

Набросайте пожалуйста как сделать так: см.рис


Вобщем пока проблемы интерфейса.
Ещё:
Как, например, задать background ?

Если есть можно дать ссылку на материал, где это описано.


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
cooler
сообщение 19.03.2008 21:49
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 178
Пол: Мужской

Репутация: -  0  +


Поразбирался. Понял ,что задал глупые вопросы...
У меня несколько ListBox'ов.
В одном- запасные,во втором - вратарь,в третьем защита...
Сделал так: выделяю в одном игрока, во втором, нажимаю кнопку и они заменяются.
Как сделать чтобы больше 2х не выделялось игроков?

И как связать эти ListBox'ы с массивом моих игроков?
Чтобы массивы менялись вместе со списками.
Неужели каждый раз переприсваивать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
cooler
сообщение 20.03.2008 14:12
Сообщение #3


Бывалый
***

Группа: Пользователи
Сообщений: 178
Пол: Мужской

Репутация: -  0  +


А как выводить значения переменных или текст что-то типа writeln?

Неужели трудно ответить. Я же не пишу: "Сделайте- ка мне игру"
Просто элементарные вопросы,а мне в помощь

Может тему нужно перенести в написание игр???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 20.03.2008 21:08
Сообщение #4


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Не трудно smile.gif)
По порядку... С первой порцией, насколько я поняла, уже разобрался.
Цитата
У меня несколько ListBox'ов.

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

что автоматически решает вопрос с
Цитата
Как сделать чтобы больше 2х не выделялось игроков?


Цитата
И как связать эти ListBox'ы с массивом моих игроков?
Чтобы массивы менялись вместе со списками.
Неужели каждый раз переприсваивать?

Если честно, не совсем поняла происходящее...
Кто в массиве? Кто в списках?

Цитата
А как выводить значения переменных или текст что-то типа writeln?

Сначала надо кинуть компонент, КУДА будешь выводить текст.
Например, Label
А потом написать:
Label1.Caption:='текст';


Либо, если это типа сообщения о неправильном действии, можно так:
ShowMessage('текст');


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
cooler
сообщение 20.03.2008 21:39
Сообщение #5


Бывалый
***

Группа: Пользователи
Сообщений: 178
Пол: Мужской

Репутация: -  0  +


Насчет ComboBox:
Понимаешь в чем дело,
У меня (на рис.) Слева запасные, а справа разделенный по группам основной состав.
Я сделал так: выделяешь одного и второго, нажимаешь заменить и они меняются.
Все бы хорошо, да только может выделиться больше двух, т.к разделены на группы
по позициям.
Про массив:
Я в listbox элементы из массива игроков записываю. А как после изменения сохранить состав?

Может есть другие варианты??


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 21.03.2008 20:39
Сообщение #6


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


теперь стало понятнее )))
можно сделать так: несколько радиобаттонов (типа "заменить вратаря", "заменить кто-там-еще-бывает") и в зависимости от них - доступность выбора в листбоксе.
то есть (сорри, проверить наличие свойств не могу - делфи не установлена, пишу по памяти) типа такого:
ListBox1.Enable:=RadioButton1.Checked;


а вообще - лучше всего будет, если прикрепишь проект в архиве (без ехе-шника) - разговор будет предметным.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
cooler
сообщение 25.03.2008 20:45
Сообщение #7


Бывалый
***

Группа: Пользователи
Сообщений: 178
Пол: Мужской

Репутация: -  0  +


Проект выложил, если это уже можно называть проектом.

Как сделать чтобы какая-нибудь процедура выполнялась сразу после открытия формы?
(А то я сейчас все к кнопкам привязываю)

Потом, как обновлять значения radiobutton.checked ? Цикл сделать?
Пока какое поле с самого начало выбрано, то и доступно.

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




P.S. Не в тему:
Парадокс. Хотел сделать, чтобы одна форма грузилась, нажимаешь
кнопку, она закрывается, открывается другая. В новом проекте
сделал ч/з св-во visible - работает. Вставляю эту вещь в свой
проект - грузятся обе формы.


Прикрепленные файлы
Прикрепленный файл  worked.rar ( 6.49 килобайт ) Кол-во скачиваний: 272
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 6.04.2008 21:37
Сообщение #8


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Цитата
Как сделать чтобы какая-нибудь процедура выполнялась сразу после открытия формы?
(А то я сейчас все к кнопкам привязываю)

привесить на открытие формы ))
сам на свой вопрос ответил
единственное - я не очень поняла, речь о создании формы ("первом" открытии) или открытии после сворачивания? от этого зависит, какое событие выбрать.

Цитата
Потом, как обновлять значения radiobutton.checked ? Цикл сделать?

Что значит "обновлять"? Если пользователь изменил, менять доступность листбоксов?
Опять же - на обработчик события...

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

именно несколько форм?
можно бросить компонент под рисунок (paintbox или image) и через несколько секунд делать его невидимым, например.

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

через методы close/show не пробовал?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
striker
сообщение 15.04.2008 20:06
Сообщение #9


Пионер
**

Группа: Пользователи
Сообщений: 86
Пол: Мужской

Репутация: -  0  +


Я такую же прогу делал года 2 назад, но все было проще гораздо.

Сообщение отредактировано: striker - 15.04.2008 20:08
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
cooler
сообщение 15.04.2008 20:11
Сообщение #10


Бывалый
***

Группа: Пользователи
Сообщений: 178
Пол: Мужской

Репутация: -  0  +


Всё, большое спасибо с тем что было по-тихоньку разобрался

massev: array[1..5] of string = ('забил гол',
'травма','желтая карточка','замена','красная карточка')


procedure TSimForm.Button2Click(Sender: TObject);
var i,r1,r11,r2,r22,usl,g1,g2:byte;
r:byte;
a:array[1..16] of integer;

begin
Listbox2.Items.Clear;
r:=whatteam;
Label1.Caption:=rus_team[1]+' - '+rus_team[2];
Label2.Caption:=Floattostr(0)+' : '+Floattostr(0);
for i:=1 to 10 do
begin
team.init2('spartak');
randomize;
r1:=random(11);
randomize;
r11:=random(11);
randomize;
r2:=random(5);
randomize;
r22:=random(5);
if (r1=0) or (r1=1) then r1:=7;
if r11=0 then exit;
if r2=0 then r2:=5;
if r22=0 then exit;
if r2=1 then
begin
g1:=g1+1;
Label2.Caption:=Floattostr(g1)+' : '+Floattostr(g2);
end;
Listbox2.Items.add('>>>'+squad[r1]^.name+' '+massev[r2]);
randomize;
usl:=random(2);
if usl=1 then
Listbox2.Items.add(' '+squad2[r11]^.name+' '+massev[r22]);
if r22=1 then
begin
g2:=g2+1;
Label2.Caption:=Floattostr(g1)+' : '+Floattostr(g2);
end;
end;

end;


В этой процедуре я конечно нагородил...
Идея такая: пока случайно выбираются события матча из массива massev и выводятся в Листбокс.
Нужно сделать чтобы события в него выводились с некоторой задержкой,
и чтобы матч можно было остановить, что-то сделать с составом и возобновить, не теряя
предыдущих событий. Если пользователь сделал замену игрока, соответственно выводим
сообщение об этом в Листбокс.


P.S Как лучше выводить таблицу?

Да, обновленная версия, если нужно:

Сообщение отредактировано: cooler - 15.04.2008 20:16


Прикрепленные файлы
Прикрепленный файл  15.04.rar ( 18.23 килобайт ) Кол-во скачиваний: 259
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
cooler
сообщение 16.04.2008 11:10
Сообщение #11


Бывалый
***

Группа: Пользователи
Сообщений: 178
Пол: Мужской

Репутация: -  0  +


Сорри за такой код в процедуре.
Сейчас сам сел спустя 2 недели, половину не понял.
Подскажите идейку как реализовать выше перечисленное.
Нужно таймер, наверное, поставить и останавливать его, потом запускать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Better Kind
сообщение 16.04.2008 14:50
Сообщение #12


Пионер
**

Группа: Пользователи
Сообщений: 52
Пол: Мужской
Реальное имя: Александр

Репутация: -  1  +


Гораздо проще реализовать записями.


--------------------
With best regards, Better Kind
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
cooler
сообщение 16.04.2008 16:07
Сообщение #13


Бывалый
***

Группа: Пользователи
Сообщений: 178
Пол: Мужской

Репутация: -  0  +


А подробнее? smile.gif
Приведи примерчик
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
cooler
сообщение 4.05.2008 19:16
Сообщение #14


Бывалый
***

Группа: Пользователи
Сообщений: 178
Пол: Мужской

Репутация: -  0  +


Помогите пожалуйста реализовать след. вещь.
У меня симулируется в текстовом режиме матч.
(выводятся события матча из строкового массива в listbox)

Нужно чтобы они выводились с определенной задержкой. (sleep наверное не туда ставлю)
Пользователь должен нажать на кнопку команда, где между массивами игроков
(запасных и основных) он произведет замены.
НУЖНо чтобы после того как он вернется к матчу он продолжился, т.е
опять с задержкой выводились события матча, и в этот же listbox вывелись
те элементы массивов, которые поменял пользователь.

Т.е, например Иванов->Петров

Здесь наверное событийная обработка. Как её реализовать?
Т.к у меня происходят изменения в команде сложно, то можно в примере
просто 2 массива реализовать, а их потом под своё адаптирую.

Прикладываю "легкую" и оч.демо версию.
Чтобы симулировать матч - кнопка "след. игра"
Код
  
massev: array[1..5] of string = ('забил гол',
      'травма','желтая карточка','замена','красная карточка');


procedure TSimForm.Button2Click(Sender: TObject);
var i,sobytie:byte;


begin
Listbox2.Items.Clear;
for i:=1 to 7 do
begin
  sobytie:=random(5);
  if sobytie=0 then sobytie:=1;
  Listbox2.Items.Add(massev[sobytie]);
  sleep(100);
end;
end;


Если я опять загнул и ничего не понять - пишитеsmile.gif


Эскизы прикрепленных изображений
Прикрепленное изображение

Прикрепленные файлы
Прикрепленный файл  to_forum.rar ( 14.55 килобайт ) Кол-во скачиваний: 252
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
cooler
сообщение 5.05.2008 15:06
Сообщение #15


Бывалый
***

Группа: Пользователи
Сообщений: 178
Пол: Мужской

Репутация: -  0  +


Пожалуйста, помогите. Как это сделать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
cooler
сообщение 6.05.2008 19:14
Сообщение #16


Бывалый
***

Группа: Пользователи
Сообщений: 178
Пол: Мужской

Репутация: -  0  +


Почему?...Почему никто ничего не пишет.
Напишите хоть почему не пишите
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 6.05.2008 21:29
Сообщение #17


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


ты хочешь передавать управление?
то есть идет матч - пользователь, не останавливая его, меняет игроков - и матч продолжается?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
cooler
сообщение 6.05.2008 21:45
Сообщение #18


Бывалый
***

Группа: Пользователи
Сообщений: 178
Пол: Мужской

Репутация: -  0  +


Идет матч, пользователь нажимает на кнопку "пауза" /"стоп"(в матче), матч останавливается,
он заменяет игроков и возобновляет.
Хотя можно не останавливая, только матч будет идти не долго и пока пользователь прокопается в заменах
игра кончитсяsmile.gif

Мне хоть как-нибудь пока

P.S
Спасибо за отклик
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 7.05.2008 0:22
Сообщение #19


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


я бы тогда сделала так примерно:
var massev: array[1..5] of string;

//обработчик срабатывания таймера
procedure TForm1.Timer1Timer(Sender: TObject);
var sobytie:byte;
begin
sobytie:=random(4)+1;
Listbox2.Items.Add(massev[sobytie]);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
massev[1]:='гол';
massev[2]:='желтая карточка';
//и так далее
Timer1.Enabled:=false; //это можно в свойствах компонента Timer1
Timer1.Interval:=2000; //это тоже. задержка между событиями в игре
end;

//новая игра
procedure TForm1.Button1Click(Sender: TObject);
begin
Listbox2.Items.Clear;
Timer1.Enabled:=true;
end;

//кнопка стоп
procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled:=false;
end;


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
cooler
сообщение 8.05.2008 16:14
Сообщение #20


Бывалый
***

Группа: Пользователи
Сообщений: 178
Пол: Мужской

Репутация: -  0  +


Спасибо.
Я почти также уже сделалsad.gif
Сам догадался.
У меня дальше будут вопросы - обращусь.
Спасибо большое
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

3 страниц V  1 2 3 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 1.11.2024 3:59
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"