Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.075 c
3-1172784728
weer
2007-03-02 00:32
2007.05.20
Как вставить картинку из базы в Access в Delphi


4-1166388905
Шоломицкий С. А.
2006-12-17 23:55
2007.05.20
Подать питание. COM или USB


3-1172840031
AlexLines
2007-03-02 15:53
2007.05.20
Поиск и скорость поиска


2-1177586261
allucard
2007-04-26 15:17
2007.05.20
Как напечатать форму, не открывая её полностью?


15-1177008581
Prohodil Mimo
2007-04-19 22:49
2007.05.20
Как написать наследника от TForm?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский