Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Здраствуйте, Мастера!Проблема есть глобальная, с игрой... [Delphi, Windows]


Страницы:   1 2

Avenger ©   (2006-05-29 19:28:00) 

Проблема в замене label на image, т.к. я делаю карты на Делфях и сначала обозначения карт на labele написал...
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Label1: TLabel;
   Label2: TLabel;
   Label3: TLabel;
   Button1: TButton;
   Button2: TButton;
   Button3: TButton;
   Edit1: TEdit;
   Label5: TLabel;
   Label6: TLabel;
   Label7: TLabel;
   Label8: TLabel;
   Label9: TLabel;
   Label10: TLabel;
   Label12: TLabel;
   Button4: TButton;
   Label4: TLabel;
   Label11: TLabel;
   procedure Button2Click(Sender: TObject);
   procedure Button1Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure Button3Click(Sender: TObject);
   procedure Button4Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 sshet,i :integer;
 cards :array[0..8] of integer;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
 form2.ShowModal;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 if (sshet>16)and(label1.Caption<>'')and(label2.Caption<>'')and(label3.Caption<>'') then exit;

{     *****generim o4ki*****      }
 i:=random(36);
 case i of
   0..3:i:=6;
   4..7:i:=7;
   8..11:i:=8;
   12..15:i:=9;
   16..19:i:=10;
     {       Kartinki :)))))))     }
   20..23:i:=11;
   24..27:i:=12;
   28..31:i:=13;
   32..35:i:=14;
 end;

 cards[i-6]:=cards[i-6]+1;

 if label1.Caption='' then
 begin
   label1.Caption:=inttostr(i);
 end
 else

 if label2.Caption='' then
 begin
   label2.Caption:=inttostr(i);
 end
 else

 if label3.Caption='' then
 begin
   label3.Caption:=inttostr(i);
 end;

 if (i>10) and (i<14) then
   i:=10;

 sshet:=sshet+i;
 if i=14 then sshet:=sshet+1;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 randomize;
 sshet:=0;
 for i:=0 to 3 do cards[i]:=0;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 label6.Caption:=inttostr(strtoint(label6.caption)+2*strtoint(edit1.Text));
 Edit1.Text:='0';

 label1.Caption:='';
 label2.Caption:='';
 label3.Caption:='';

 sshet:=0;

 for i:=0 to 8 do cards[i]:=0;
end;

procedure TForm1.Button4Click(Sender: TObject);
var
 j,sshet1:integer;
label goto1;

begin
if button4.Caption='ещё сыграть' then
begin
 button4.Caption:='раскрыться';

 button1.Enabled:=true;
 button2.Enabled:=true;
 button3.Enabled:=true;

 label1.Caption:='';
 label2.Caption:='';
 label3.Caption:='';

 label9.Caption:='';
 label12.Caption:='';
 label10.Caption:='';

 sshet1:=0;
 sshet:=0;

 exit;
end;

 sshet1:=0;

for j:=0 to 2 do
begin
 if (sshet1>=15) then break;
   i:=random(36);

goto1:
 case i of
   0..3:i:=6;
   4..7:i:=7;
   8..11:i:=8;
   12..15:i:=9;
   16..19:i:=10;
   20..23:i:=11;
   24..27:i:=12;
   28..31:i:=13;
   32..35:i:=14;
 end;
 if cards[i-6]>=4 then goto goto1;

 if label9.Caption='' then
 begin
   label9.Caption:=inttostr(i);
 end
 else

 if label12.Caption='' then
 begin
   label12.Caption:=inttostr(i);
 end
 else

 if label10.Caption='' then
 begin
   label10.Caption:=inttostr(i);
 end;

 if (i<14) and (i>10) then i:=10;

 sshet1:=sshet1+i;
 if i=14 then sshet1:=sshet1+1;
end;
 label4.Caption:=inttostr(sshet1);
 label11.Caption:=inttostr(sshet);

{   ******analiz******    }
 button4.Caption:='ещё сыграть';
 button1.Enabled:=false;
 button2.Enabled:=false;
 button3.Enabled:=false;

 for i:=0 to 8 do cards[i]:=0;

 if ((sshet>sshet1)and(sshet<=21)) or ((sshet1>sshet)and(sshet1<=21)) then
 begin
   showmessage('юзер выйграл);

   form1.Label5.Caption:=inttostr(strtoint(form1.Label5.Caption)+2*strtoint(form1.Edit1.text));
   form1.edit1.Text:='0';
 end
 else
 begin
   showmessage('компутер проиграл');

   form1.Label6.Caption:=inttostr(strtoint(form1.Label6.Caption)+2*strtoint(form1.Edit1.text));
   form1.edit1.Text:='0';
 end;
 if sshet=0 then

 showmessage ('вы проиграли всё');
end;
 
   end.


Заранее огромное спасибо...


antonn   (2006-06-16 07:04:00) [1]

Servelat ©   (07.06.06 18:21) [19]
(на http://code.darthman.com- не ходи, тебе еще рано... имхо :)

ага, я понял, ты действуешь "от противного"?
:)


Avenger   (2006-06-16 06:04:00) [2]


> Servelat

СПАСИБО!!


Servelat   (2006-06-07 18:21:00) [3]

Не знаю как там они, а я уже обалдел.

Все-таки напишу пару советов, хотя вряд ли помогут:

1) давать переменным/компонентам/функциям осмысленные имена. button1 - это зашибись, только будь твоя программа хотя бы в 10 раз длиннее - ты сам бы уже нифига в ней не понял (особенно не работая над ней пару неделек, а потом вернувшиськ работе)
2) игровую логику через сравнение Caption'ов делать глупо. Сделай по человечески - выдели состояния игры, храни его в переменной что ли... Посмотри исходник какой-нибудь на www.delphigfx.mastak.ru / www.mirgames.ru (на http://code.darthman.com- не ходи, тебе еще рано... имхо :) )
3) Посмотри в сторону DelphiX - для твоего сейчашнего уровня - как раз. http://www.gamedev.ru/articles/?sect=11


Avenger   (2006-06-07 07:11:00) [4]


> Darthman


> Помоему ты еще немного мал и просто этого непонимаешь :)
> Работа как раз чтобы не работать. А дом чтобы отдыхать от
> этого ;)
> <Цитата>

а возможно вы правы, но задача моя накрутить код так, чтоб они все обалдели!


Servelat   (2006-06-07 02:27:00) [5]


> автоматический выход из проги если все деньги проиграны,
> зделал, чтоб комп мухлевал

no comments


Darthman   (2006-06-06 23:30:00) [6]

Avenger:
//помоемуе работа для того чтоб работать, а дом, чтоб гамать,
Помоему ты еще немного мал и просто этого непонимаешь :) Работа как раз чтобы не работать. А дом чтобы отдыхать от этого ;)


Avenger   (2006-06-06 16:45:00) [7]

> Servelat

> Слушай, а пользователь может reset нажать, ты еще в автозагрузку
> пропишись. :)
> Черт, а ведь он может с дискетки загрузится и удалить твою
> прогу из автозагрузки, не, ты еще предварительно все его
> файлы зашифруй и не расшифровывай пока не кончит играть.
> .. :))
>
> Ты сам в такую игру играть стал бы? Руки отрывать таким
> инноваторам, мало ли мне в аську кто стучится, или начальник
> пришел а я играю на работе, а тут ищи как выйти из кривой
> проги.
>
> ЗЫ Не удивительно, что не защитил, я б такое тоже не принял.
>

помоемуе работа для того чтоб работать, а дом, чтоб гамать, к тому же автоматический выход из проги если все деньги проиграны, зделал, чтоб комп мухлевал!Отано как!!


Darthman   (2006-06-06 14:48:00) [8]

//как заблокировать нажатие клавиш Cnrl Alt Delete
Никак. Это системные клавиши. Ты их не заблокируешь также как не заблокируешь кнопку питания или ресет на корпусе компьютера. Смирись.


Servelat   (2006-06-05 21:19:00) [9]

Не

> Повторяю

А "сообщаю", раньше нигде такого небыло сказано. Хотя то, что ты её не защитил признаком глобальности ИМХО не является. Вот всемирное потепление - глобальная проблема, она почти всех людей затрагивает, а твоя программа... :)


> А в карточной игре ет надо для реализма вроде, мало кто
> из-за карточного стола выходит, пока всё не проиграет


ROFL

Слушай, а пользователь может reset нажать, ты еще в автозагрузку пропишись. :)
Черт, а ведь он может с дискетки загрузится и удалить твою прогу из автозагрузки, не, ты еще предварительно все его файлы зашифруй и не расшифровывай пока не кончит играть... :))

Ты сам в такую игру играть стал бы? Руки отрывать таким инноваторам, мало ли мне в аську кто стучится, или начальник пришел а я играю на работе, а тут ищи как выйти из кривой проги.

ЗЫ Не удивительно, что не защитил, я б такое тоже не принял.


Avenger   (2006-06-05 17:18:00) [10]

Повторяю. НЕ ЗАЩИТИЛ, значит глобальная...логично...
А в карточной игре ет надо для реализма вроде, мало кто из-за карточного стола выходит, пока всё не проиграет...от так от!


Servelat   (2006-06-04 18:38:00) [11]

Я тут вообще говоря проездом, но так сказать для повышения образованности:

>  как заблокировать нажатие клавиш Cnrl Alt Delete

зачем это нужно в карточной игре :D ?

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

По сабжу:
Сходить на gfx.mastak, посмотреть, понять что все было не так и жизнь не удалась, дальше или переписывать, или забить.

ЗЫ Проблема какая-то не глобальная =) " Проблема есть глобальная"


RzCoDer   (2006-06-04 17:56:00) [12]

Хз, может возможно отслеживать появление окна диспечера и, либо тут же его закрывать, либо ставить visible := false, либо выносить далеко за пределы рабочего стола...


Avenger   (2006-06-04 17:22:00) [13]

Понятно...спасибо огромное!


Cash   (2006-06-04 09:00:00) [14]

Avenger ©   (31.05.06 16:40) [5]:
Этого вроде нельзя сделать.
А вот забивал я на это с легкостью. Ставил просто блок на A+F4, A+Tab,
C+Esc, и при попытке скрытия программы ставил ее в Stay On Top. Так
A+C+D забивалась. Просто окошко диспетчера скрывалось за моим. :)

Вот яркий пример такой работы.
http://webfile.ru/974581- запускать осторожно, это обманка. для выхода на
клаве набрать 1985, если не выходит, то топтать клаву и набрать еще раз. :)


> Поясните пожалста, что код плохой?

Выравнивание кода страдает, он трудно читается.


Avenger   (2006-06-04 08:44:00) [15]

//...дяя кошмар а не код

Поясните пожалста, что код плохой?


RzCoDer   (2006-05-31 18:37:00) [16]

=) вырвать из клавиатуры


Avenger   (2006-05-31 16:40:00) [17]

Извените, забыл спросить: как заблокировать нажатие клавиш Cnrl Alt Delete...Что бы из проги вообще выйти было нельзя...


RzCoDer   (2006-05-30 19:15:00) [18]

ну так TImage на форму


Avenger   (2006-05-30 18:36:00) [19]

до ума довести, картинки вместо  labelov набодяжить игра, то карточная и ето не круто будет если она без картинок просуществует...


Jester_Skovorodker   (2006-05-30 13:31:00) [20]

...дяя кошмар а не код


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо