Форум: "Игры";
Текущий архив: 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