Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.20;
Скачать: CL | DM;

Вниз

Здраствуйте, Мастера!Проблема есть глобальная, с игрой...   Найти похожие ветки 

 
Avenger ©   (2006-05-29 19:28) [0]

Проблема в замене 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.


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


 
RzCoDer ©   (2006-05-30 12:02) [1]

скажи по русски чего надо сделать то?


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

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


 
Avenger ©   (2006-05-30 18:36) [3]

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


 
RzCoDer ©   (2006-05-30 19:15) [4]

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


 
Avenger ©   (2006-05-31 16:40) [5]

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


 
RzCoDer ©   (2006-05-31 18:37) [6]

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


 
Avenger ©   (2006-06-04 08:44) [7]

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

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


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

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 17:22) [9]

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


 
RzCoDer ©   (2006-06-04 17:56) [10]

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


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

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

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

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

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

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

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


 
Avenger ©   (2006-06-05 17:18) [12]

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


 
Servelat ©   (2006-06-05 21:19) [13]

Не

> Повторяю

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


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


ROFL

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

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

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


 
Darthman ©   (2006-06-06 14:48) [14]

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


 
Avenger ©   (2006-06-06 16:45) [15]

> Servelat

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

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


 
Darthman ©   (2006-06-06 23:30) [16]

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


 
Servelat ©   (2006-06-07 02:27) [17]


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

no comments


 
Avenger ©   (2006-06-07 07:11) [18]


> Darthman


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

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


 
Servelat ©   (2006-06-07 18:21) [19]

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

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

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-16 06:04) [20]


> Servelat

СПАСИБО!!


 
antonn ©   (2006-06-16 07:04) [21]

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

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



Страницы: 1 вся ветка

Текущий архив: 2007.05.20;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.042 c
15-1176560673
vasIZmax
2007-04-14 18:24
2007.05.20
Читальня... или просмотрщики


2-1178205311
Человек
2007-05-03 19:15
2007.05.20
Поиск


6-1163697453
Yegorchic
2006-11-16 20:17
2007.05.20
IdHTTPServer и картинка


2-1178119436
I-New
2007-05-02 19:23
2007.05.20
Открыть папку explorer ом из Delphi


15-1176918999
Kolan
2007-04-18 21:56
2007.05.20
Поменять ли видюху 6600 на 7100?