Результаты поиска
| |
Александр5 | Дата: Четверг, 09 Мая 2013, 17:19 | Сообщение # 1 | Тема: Мои вопросы по обучению на Delphi XE и помощь к созданию игр |
частый гость
Сейчас нет на сайте
| Решил попробывать писать код в Fire monkey
одно хорошо красивый стиль
а вот почему код не работает
Код
procedure TForm1.FormCreate(Sender: TObject); var SR1,SR2,SR3 : TSearchRec; begin IniFilesLibx:=TIniFile.Create(ApplicationPath(2)+'LibxEdit.ini'); if FindFirst(ApplicationPath(2)+'LibxEditFiles\Lang\rus.data', faAnyFile, SR1) = 0 then begin repeat NL1.Visible:=True; until FindNext(SR1) <> 0; end;
if FindFirst(ApplicationPath(2)+'LibxEditFiles\Lang\rus.data', faAnyFile, SR1) <> 0 then begin repeat ShowMessage('Русский перевод необходим для запуска убедитесь что русский язык есть Ошибка 0 не найден файл rus.data'); Application.Terminate; until FindNext(SR1) <> 0; end; if FindFirst(ApplicationPath(2)+'LibxEditFiles\Lang\eng.data', faAnyFile, SR2) = 0 then begin repeat NL2.Enabled:=True; until FindNext(SR2) <> 0; end; if FindFirst(ApplicationPath(2)+'LibxEditFiles\Lang\eng.data', faAnyFile, SR2) <> 0 then begin repeat NL2.Enabled:=False; until FindNext(SR2) <> 0; end; FindClose(SR1); FindClose(SR2); end;
Вот это не работает NL2.Enabled:=False;
NL1.Visible:=True;
Компонент MenuBar
Пишу код на XE3 в библиотеки Fire Monkey Metropolis UI Application
И еще просьба сказать как запускать в других ОС эти проги я слышал что можно там только это и пишут про XE3Добавлено (26.04.2013, 09:29) --------------------------------------------- С этим разобрался но вот как програмно иконку сменить в Firemonkey если в Application нету Icon Добавлено (27.04.2013, 09:50) --------------------------------------------- Скажите пожалуйста и срочно как вызвать диалог выбора папки в FireMonkey или есть может у кого компонент для FireMonkey буду очень благодарен Добавлено (30.04.2013, 13:27) --------------------------------------------- В XE3 нашел компонент FastScript
Скажите что за скриптовой движок и как на нем работать Добавлено (06.05.2013, 11:39) ---------------------------------------------
Код
unit Unit1;
interface
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus, Vcl.ExtDlgs,Vcl.imaging.PngImage;
type TForm1 = class(TForm) MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; N5: TMenuItem; N6: TMenuItem; N7: TMenuItem; N8: TMenuItem; N9: TMenuItem; N10: TMenuItem; N11: TMenuItem; N12: TMenuItem; N13: TMenuItem; OpenPictureDialog1: TOpenPictureDialog; procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure N1Click(Sender: TObject); procedure N3Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; Type PRList=^RList; RList=Record Inf:String; Link:PRList; End; TGameRead=class(TThread) // класс для таймера игры private protected procedure Execute;override; // Запуск procedure Tic; // Один тик программы end; var Form1: TForm1; ActivMenu:Boolean; ActivByte:Byte; {Png Image Maps Save} Buffer,Flur:TPngImage; LEFT1,TOP1,WIDTH1,HEIGHT1:Array[0..100] of Integer; GameRead:TGameRead; implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin Buffer:=TPngimage.Create; Flur:=TPngImage.Create; GameRead:=TGameRead.Create(False); GameRead.Priority:=TpHighest; end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key = 122)And(ActivMenu = true)and(ActivByte = 0) then begin ActivByte:=1; ActivMenu:=False; Form1.Menu:=Nil; end; if (Key = 122)And(ActivMenu = true)and(ActivByte = 1) then begin ActivByte:=0; ActivMenu:=False; Form1.Menu:=Form1.MainMenu1; end; end;
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = 122 then begin ActivMenu:=True; end; end;
procedure TForm1.N1Click(Sender: TObject); begin Application.Terminate; end;
procedure TForm1.N3Click(Sender: TObject); begin if OpenPictureDialog1.Execute then begin
Flur.LoadFromFile(OpenPictureDialog1.FileName); Left1[0]:=0; Top1[0]:=0; Width1[0]:=Flur.Width; Height1[0]:=Flur.Height; N3.Enabled:=False; end; end;
{ TGameRead }
procedure TGameRead.Execute; begin repeat synchronize(Tic); until Terminated
end;
procedure TGameRead.Tic; begin BitBlt(Buffer.Canvas.Handle,LEFT1[0],TOP1[0],LEFT1[0]+WIDTH1[0],TOP1[0]+HEIGHT1[0],Flur.Canvas.Handle,0,0,SRCCOPY); BitBlt(Form1.Canvas.Handle,LEFT1[0],TOP1[0],LEFT1[0]+WIDTH1[0],TOP1[0]+HEIGHT1[0],Buffer.Canvas.Handle,0,0,SRCCOPY); end;
end.
Слушайте в чем ошибка почему картинки не выводится пишу в XE3
Если нажать f4 то вот ошибка
Добавлено (06.05.2013, 14:39) --------------------------------------------- есть вообще другой путь вывода графики на форму в определенных координатами
если делать так Form1.Canvas.Draw(X1,Y1,Flur); а потом стирать канву этот способ не подойдет
Это быдла код а не код мне нужно выводить спрайты PNG на форму в определенных координатах тогда и передвигать спрайты можно будет может посоветуете движок но чтобы на XE3 работало пожалуйста ответте лучше конечно как это сделать самому Добавлено (09.05.2013, 17:19) --------------------------------------------- Как в DXImageList добавить сразу много изображений библиотека DelphiX
|
|
| |
Александр5 | Дата: Суббота, 27 Апреля 2013, 15:55 | Сообщение # 2 | Тема: Вопросы по XE3 библиотеки FireMonkey и компонентов для FMX |
частый гость
Сейчас нет на сайте
| Скажите пожалуйста как в FireMonkey вызвать диалог выбора диретории или дайте компонент для FMX
|
|
| |
Александр5 | Дата: Воскресенье, 14 Апреля 2013, 17:03 | Сообщение # 3 | Тема: Мои вопросы по обучению на Delphi XE и помощь к созданию игр |
частый гость
Сейчас нет на сайте
| Вроде бы правильно. Попробуй скомпилировать и загрузить из программы. Пробуй, экспериментируй, читай мануалы...
Если бы знать какДобавлено (12.04.2013, 13:27) --------------------------------------------- Скажите какой запрещенный цвет шрифта выбрать которым бы нельзя было пользоваться может clBtnFace
просто если цвет шрифта будет такой же как цвет прозрачности то текст не будет видно. Я использую 2 формы и TransparentColor Добавлено (14.04.2013, 17:03) --------------------------------------------- Скажите как сделать поиск файла по всему диску именно файла
|
|
| |
Александр5 | Дата: Понедельник, 08 Апреля 2013, 16:06 | Сообщение # 4 | Тема: Мои вопросы по обучению на Delphi XE и помощь к созданию игр |
частый гость
Сейчас нет на сайте
| Можно сохранять не всю канву, а только тот участок, который будет перекрыт картинкой - так экономичнее по памяти.
как это сделать и потом вернуть как а отрисовку я уже сделал
И еще 1 вопрос вот код там есть запись
Код unit Unit1; {$R Bitmaps_Png\Images.res} interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Menus, AppEvnts, TeeProcs, TeEngine, Chart,UN_Type,UN_DrawGrid,IniFiles;
type TForm1 = class(TForm) Create_Maps_btn: TButton; Mini_Map_scrl1: TScrollBox; Maps1: TImage; MX_lbl: TLabel; MY_lbl: TLabel; MX1Y1X2Y2_lbl: TLabel; Memo1: TMemo; PopupMenu1: TPopupMenu; N1: TMenuItem; PopupMenu2: TPopupMenu; N2: TMenuItem; N3: TMenuItem; Button1: TButton; Edit1: TEdit; Edit2: TEdit; Button2: TButton; Memo2: TListBox; N4: TMenuItem; Panel1: TPanel; Image1: TImage; Panel2: TPanel; Image2: TImage; Timer1: TTimer; OpenDialog1: TOpenDialog; procedure Create_Maps_btnClick(Sender: TObject); procedure Maps1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure N1Click(Sender: TObject); procedure Maps1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button2Click(Sender: TObject); procedure Image1Click(Sender: TObject); procedure Image2Click(Sender: TObject); procedure N2Click(Sender: TObject);
private { Private declarations } procedure MouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
// îáðàáîòêà ïðîêðóòêè êîëåñà âíèç procedure MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
// îáðàáîòêà ïðîêðóòêè êîëåñà ââåðõ procedure MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); public { Public declarations } end; type TKBoolean = (Create_Map,Delete_Map); Type TMboolean = (MDOWN,MUP); type TSetka = (SCreate,SClear); function FMaps(X:Integer;Y:Integer):Boolean; var Form1: TForm1; i,o,p:Integer;//Ïåðåìåííûå äëÿ ðàáîòû ñ ÿ÷åéêàìè(Ñîçäàíèå ôàéëà) cs,str1,lki:string;//Äëÿ êîíñîëÿ KX,KY,JX,JY:Integer;//Ðàáîòà ñ ÿ÷åéêàìè(Îòðèñîâêà) lk:Word;{Ïåðåìåííàÿ êîòîðàÿ áóäåò õðàíèòü êîä êàðòèíêè} files,files1:TextFile;//Ïåðåìåííàÿ ôàéëâ äëÿ ñîçäàíèå ôàéëà êàðòû krt:Double;{Ïåðåìåííàÿ äëÿ ðàáîòû ñ êîëåñèêîì! Òîæå ñàìîå} krg:Integer; fs:TSearchRec;//Çàãðóçêàê êàðòèíîê ïðè ñîçäàíèè ôîðìû list:TStringList;//Äëÿ õðàíåíèÿ èìåí êàðòèíîê MBoolean:TMboolean;//Ñîáñòâåííûé òèï Type TMboolean = (MDOWN,MUP); äëÿ îïðåäåëèíÿÿ â êàêîì íàïðàâëåíèè êðóòèòüñÿ êîëåñèêà KBoolean:TKBoolean;//Ñîáñòâåííûé òèï type TKBoolean = (Create_Map,Delete_Map); äëÿ îïðåäåëåíèÿ ðèñîâàòü òàéë â îáëîñòè êàðòû èëè óäàëÿòü Setka:TSetka;//Ñîáñòâåííûé òèï type TSetka = (SCreate,SClear); â áóäóùåì áóäåò èñïîëüçîâàòüñÿ äëÿ îïðåäåëåíèÿ áóäåò ëè ïîêàçûâàòüñÿ ñåòêà èëè íåò i1,i2:Integer;//Ðàáîòà äëÿ ñîçäàíèè îáëàñòè êàðòû BIT_White:TBitmap;//Ïåðåìåííàÿ êîòîðàÿ áóäåò õðàíèòü ïåðâîíà÷àëüíóþ êàðòèíêó â îáëîñòè êàðòû MK1,MK2,MK3,MK4,MK5,MK6:Integer;//èñïîëüçóåòñÿ äëÿ ñîõðàíåíèÿ êàðòû è çàãðóçêè ilkin:Integer;//Èñïîëüçóåòñÿ äëÿ îïðåäåëåíèÿ ñêîëüêî êàðò âñåãî íàõîäèòñÿ â ïàïêå Load_Maps:TBITMAP; IKLI1,IKLI2:Integer;//Ïåðåìåííàÿ äëÿ îïðåäåëåíèÿ Êîîëè÷åñòâî ÿ÷ååê inil: TIniFile; implementation
{$R *.DFM} function FMaps(X:Integer;Y:Integer):Boolean; begin KX:= X div 50; KY:= Y div 50; Form1.MX1Y1X2Y2_lbl.Caption:='X = '+inttostr(KX)+':'+ 'Y = ' + inttostr(KY); Maps_Cells[KX,KY].MPath:=list.Strings[Trunc(krt)]; Maps_Cells[KX,KY].X:=KX; Maps_Cells[KX,KY].Y:=KX; FMaps:=True; end; procedure TForm1.Create_Maps_btnClick(Sender: TObject); begin i := StrToInt(InputBox('Ââåäèòå ÷èñëî ÿ÷ååê','Ââîä ÷èñëà ÿ÷ååê','32')); if i >= 10 then begin o:=i*50; Form1.Maps1.AutoSize:=False; Form1.Mini_Map_scrl1.Visible:=True; Form1.Maps1.Height:=o; Form1.Maps1.Width:=o; Form1.Maps1.Canvas.Pen.Color:=clRed; Form1.Maps1.Canvas.pen.Width:=0; SetLength(Maps_Cells, (Form1.Maps1.Height div 50), (Form1.Maps1.Width div 50)); for i1:=0 to i do for i2:=0 to i do begin Form1.Maps1.Canvas.Rectangle(i1*50,i2*50,i1*50+50,i2*50+50); end; end else begin AllocConsole; cs:='\\Èçâèíèòå ÷èñëî äîëæíî áûòü áîëüøå 10. Ââåäèòå ÷èñëî ÿ÷ååê'; CharToOEM (PChar(cs), PChar(cs)); Writeln(cs); readln; repeat lki:='Èçâèíèòå. Íî äëÿ çàêðûòèÿ êîíñîëüíîãî ïðèëîæåíèÿ íóæíî ââåñòè Close'; CharToOEM (PChar(lki), PChar(lki)); Writeln(lki); readln(str1); until AnsiUpperCase(str1) = 'CLOSE'; FreeConsole; end; end;
procedure TForm1.Maps1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Form1.MX_lbl.Caption:=IntToStr(X); Form1.MY_lbl.Caption:=IntToStr(Y); end;
procedure TForm1.N1Click(Sender: TObject); begin Memo1.Lines.SaveToFile(ExtractFilePath(Application.ExeName)+'Èíôîðìàöèÿ.txt'); end;
procedure TForm1.Maps1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin If Button = mbleft then begin If KBoolean = Create_Map then begin If FMaps(X,Y) = True then begin Maps1.Canvas.Draw(KX*50,KY*50,Image1.Picture.Bitmap); Memo2.Items.Add('Êàðòèíêà ñ ÿ÷åéêàìè X = '+INTTOSTR(KX)+' , Y = '+INTTOSTR(KY)+' , Çàïèñàëàñü óñïåøíî. Èìÿ êàðòèíêè = '+list.strings[Trunc(krt)]); end; end; If KBoolean = Delete_Map then begin If FMaps(X,Y) = True then begin Maps1.Canvas.Draw(KX*50,KY*50,BIT_White); Memo2.Items.Add('Êàðòèíêà ñ ÿ÷åéêàìè X = '+INTTOSTR(KX)+' , Y = '+INTTOSTR(KY)+' , Çàïèñàëàñü óñïåøíî. Èìÿ êàðòèíêè = '+list.strings[Trunc(krt)]); end; end; end; end;
procedure TForm1.FormCreate(Sender: TObject); begin list:=TStringList.Create; if FindFirst(ExtractFilePath(Application.ExeName)+'Bitmaps_Png\'+'*.bmp',faAnyFile-faDirectory-faVolumeID, fs)=0 then begin repeat inc(krg); list.Add(fs.Name); until FindNext(fs)<>0; findclose(fs); end; if FindFirst(ExtractFilePath(Application.ExeName)+'Maps\'+'*.binMap',faAnyFile-faDirectory-faVolumeID, fs)=0 then begin repeat inc(ilkin); until FindNext(fs)<>0; findclose(fs); Button1.Enabled:=True; end; Form1.OnMouseWheel:=MouseWheel; Form1.OnMouseWheelDown:=MouseWheelDown; Form1.OnMouseWheelUp:=MouseWheelUp; Form1.AutoSize:=True; krt:=0; Edit1.text:='Ñòîèò'; Form1.Edit2.Text:=list.Strings[Trunc(krt)]+' : '+inttostr(Trunc(krt)); BIT_White:=TBitmap.Create; end;
procedure TForm1.MouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); begin if KBoolean = Create_Map then begin If MBoolean = MDOWN then begin If krt > 0 then begin krt := krt - 0.5; end; Form1.Edit1.Text:='Êðóòèòñÿ Ââíèç'; end; If MBoolean = MUP then begin if krt < krg -1 then begin krt := krt + 0.5; end; Form1.Edit1.Text:='Êðóòèòñÿ Ââåðõ'; end; Form1.Image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'Bitmaps_Png\'+list.Strings[Trunc(krt)]); Form1.Edit2.Text:=list.Strings[Trunc(krt)]+' : '+inttostr(Trunc(krt)); end; end; procedure TForm1.MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin if KBoolean = Create_Map then begin MBoolean:=MDOWN; end; end;
procedure TForm1.MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin if KBoolean = Create_Map then begin MBoolean:=MUP; end; end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Form1.OnMouseWheel:=nil; Form1.OnMouseWheelDown:=nil; Form1.OnMouseWheelUp:=nil; Application.Terminate; end;
procedure TForm1.Button2Click(Sender: TObject); begin Form1.OnMouseWheel:=nil; Form1.OnMouseWheelDown:=nil; Form1.OnMouseWheelUp:=nil; BIT_White.free; inil.Free; Application.Terminate; end;
procedure TForm1.Image1Click(Sender: TObject); begin Panel1.BorderStyle:=bsSingle; Panel2.BorderStyle:=bsNone; KBoolean:=Create_Map; end;
procedure TForm1.Image2Click(Sender: TObject); begin Panel2.BorderStyle:=bsSingle; Panel1.BorderStyle:=bsNone; KBoolean:=Delete_Map; end;
procedure TForm1.N2Click(Sender: TObject); var strini:string; begin ilkin:=ilkin+1; strini:=InputBox('Ââîä èìåíè êàðòû.','Ââåäèòå èìÿ êàðòû','Drionko'); AssignFile(files,ExtractFilePath(Application.ExeName)+'Maps\'+inttostr(ilkin)+strini+'.binMap'); rewrite(files); Append(files); for MK1 := 0 to (Maps1.Height div 50 - 1) do for MK2 := 0 to (Maps1.Width div 50 - 1) do begin Writeln(files,Maps_Cells[MK1,MK2].MPath); Writeln(files,Maps_Cells[MK1,MK2].X); Writeln(files,Maps_Cells[MK1,MK2].Y); end; IKLI1:=MK1; IKLI2:=MK2; inil:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'Maps\'+inttostr(ilkin)+'Maps.ini'); inil.WriteInteger('Ïåðåìåííàÿ Ìàêñ ÿ÷ååê','1',IKLI1); inil.WriteInteger('Ïåðåìåííàÿ Ìàêñ ÿ÷ååê','2',IKLI2); Memo2.Items.Add('Ìàêñèìàëüíîå ÷èñëî ÿ÷ååê X = '+inttostr(IKLI1)+' , Y = '+inttostr(IKLI2)); closefile(files); end;
end.
Нужно сделать загрузку по томуже типу как сделана запись только
загрузку нужно делать используя OpenDialog1
в Ini файлах будет храниться максимальное число ячеек начиная с 1 но в загрузки будет начинаться с 0 так что нужно будет отнимать 1
можете ответить мне на этих 2 вопроса
Добавлено (20.03.2013, 13:17) --------------------------------------------- Ктонибудь скажите где находятся функции VarArrayGet и VarArrayPut
при установки паскаль скриптна Delphi 5 вот тут ошибки
function _VarArrayGet(var S : Variant; I : Integer) : Variant; begin result := VarArrayGet(S, [I]); end;
procedure _VarArraySet(const c : Variant; I : Integer; var s : Variant); begin VarArrayPut(s, c, [i]); end;
Вот ошибки
[Error] uPSRuntime.pas(9251): Undeclared identifier: 'VarArrayGet' [Error] uPSRuntime.pas(9256): Undeclared identifier: 'VarArrayPut' [Fatal Error] uPSComponent.pas(6): Could not compile used unit 'uPSRuntime.pas'
Помогите пожалуйста
Добавлено (28.03.2013, 10:14) --------------------------------------------- Прошу вас помогите мне разобраться что должно быть в файле персонажа кроме жизней патронов оружия имя картинки имя персонажа
Добавлено (08.04.2013, 14:29) --------------------------------------------- Раскажите мне про Длл и можно ли там хранить рекорды с переменнами а также может ли длл содержать форму. Также скажите можно ли поменять расширение у Dll
Добавлено (08.04.2013, 16:06) --------------------------------------------- XE3(VCLDelphi) Код library Project2;
{ Important note about DLL memory management: ShareMem must be the first unit in your library's USES clause AND your project's (select Project-View Source) USES clause if your DLL exports any procedures or functions that pass strings as parameters or function results. This applies to all strings passed to and from your DLL--even those that are nested in records and classes. ShareMem is the interface unit to the BORLNDMM.DLL shared memory manager, which must be deployed along with your DLL. To avoid using BORLNDMM.DLL, pass string information using PChar or ShortString parameters. }
uses System.SysUtils, System.Classes; {$R *.res} Type TPurpose1 = (CAS, NTM, CASNTM); type TDataPingPongGames=record LefelsGamesPingPong:Integer; NamePlayer,NameEnemy:String[20]; Purpose1:TPurpose1; WBOACDAB:Boolean; WBOACDABInt:Integer; TextLefelsColor:String[15]; XCircle,YCircle:integer; End;
Function CreateLefels(AddNamePlayer:String;AddNameEnemy:String;AddPurpose:TPurpose1; AddLefelsGamesPingPong:Integer;Path:String;AddWBOACDAB:Boolean;AddWBOACDABInt:Integer; AddTextLefelsColor:String):Boolean; var DataPingPongGames:TDataPingPongGames; FileDataPingPongGames:File of TDataPingPongGames; begin DataPingPongGames.NamePlayer:=AddNamePlayer; DataPingPongGames.NameEnemy:=AddNameEnemy; DataPingPongGames.LefelsGamesPingPong:=AddLefelsGamesPingPong; DataPingPongGames.Purpose1:=AddPurpose; DataPingPongGames.WBOACDAB:=AddWBOACDAB; DataPingPongGames.WBOACDABInt:=AddWBOACDABInt; DataPingPongGames.TextLefelsColor:=AddTextLefelsColor; assignfile(FileDataPingPongGames,Path); rewrite(FileDataPingPongGames); write(FileDataPingPongGames,DataPingPongGames); closefile(FileDataPingPongGames); end;
Function LoadLefels(Path:String):Boolean; var DataPingPongGames:TDataPingPongGames; FileDataPingPongGames:File of TDataPingPongGames; begin assignfile(FileDataPingPongGames,Path); {$i-} reset(FileDataPingPongGames); {$i+} read(FileDataPingPongGames,DataPingPongGames); closefile(FileDataPingPongGames); end;
Function SaveLefels(Path:String;SaveXCircle:Integer;SaveYCircle:Integer):Boolean; var DataPingPongGames:TDataPingPongGames; FileDataPingPongGames:File of TDataPingPongGames; begin DataPingPongGames.XCircle:=SaveXCircle; DataPingPongGames.YCircle:=SaveYCircle; assignfile(FileDataPingPongGames,Path); rewrite(FileDataPingPongGames); write(FileDataPingPongGames,DataPingPongGames); closefile(FileDataPingPongGames); end; var DataPingPongGamesDll:TDataPingPongGames; exports CreateLefels,SaveLefels,LoadLefels,DataPingPongGamesDll; begin end.
Правильно ли я сделал длл с рекордом
Сообщение отредактировал Александр5 - Понедельник, 08 Апреля 2013, 16:15 |
|
| |
Александр5 | Дата: Воскресенье, 10 Марта 2013, 17:58 | Сообщение # 5 | Тема: Мои вопросы по обучению на Delphi XE и помощь к созданию игр |
частый гость
Сейчас нет на сайте
| Ну у меня да а у других компьютерах не только для себя пишу редактор карт к игре Добавлено (08.03.2013, 21:08) --------------------------------------------- должен быть другой способ вот весь код.
Код
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Menus, AppEvnts, TeeProcs, TeEngine, Chart,UN_Type,UN_DrawGrid;
type TForm1 = class(TForm) Create_Maps_btn: TButton; Mini_Map_scrl1: TScrollBox; Maps1: TImage; MX_lbl: TLabel; MY_lbl: TLabel; MX1Y1X2Y2_lbl: TLabel; Memo1: TMemo; PopupMenu1: TPopupMenu; N1: TMenuItem; PopupMenu2: TPopupMenu; N2: TMenuItem; N3: TMenuItem; Button1: TButton; Image1: TImage; Edit1: TEdit; Edit2: TEdit; Button2: TButton; procedure Create_Maps_btnClick(Sender: TObject); procedure Maps1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure N1Click(Sender: TObject); procedure Maps1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button2Click(Sender: TObject); procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
private { Private declarations } procedure MouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
// обработка прокрутки колеса вниз procedure MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
// обработка прокрутки колеса вверх procedure MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); public { Public declarations } end; Type TMboolean = (MDOWN,MUP); var Form1: TForm1; DStream:TDStream; i,o,p:Integer; IM1:Integer; IM2:Integer; cs,str1,lki:string; KX,KY,JX,JY:Integer; lk:Word;{Переменная которая будет хранить код картинки} files:TextFile; krt,krg:integer; Bmp_Image:array of string; fs:TSearchRec; list:TStringList; MBoolean:TMboolean; implementation
{$R *.DFM} procedure TForm1.Create_Maps_btnClick(Sender: TObject); begin i := StrToInt(InputBox('Введите число ячеек','Ввод числа ячеек','32')); if i >= 20 then begin DStream.InputStream:=TMemoryStream.Create; AssignFile(files,ExtractFilePath(Application.ExeName)+'Maps_Bin.bin'); ReWrite(files); CloseFile(files); o:=i*50; Form1.Maps1.Height:=o; Form1.Maps1.Width:=o; Form1.Mini_Map_scrl1.Visible:=True; SetLength(DStream.Maps_Cells,i,i); DStream.InputStream.Free; end else begin AllocConsole; cs:='\\Извините число должно быть больше 20. Введите число ячеек'; CharToOEM (PChar(cs), PChar(cs)); Writeln(cs); readln; repeat lki:='Извините. Но для закрытия консольного приложения нужно ввести Close'; CharToOEM (PChar(lki), PChar(lki)); Writeln(lki); readln(str1); until AnsiUpperCase(str1) = 'CLOSE'; FreeConsole; end; end;
procedure TForm1.Maps1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Form1.MX_lbl.Caption:=IntToStr(X); Form1.MY_lbl.Caption:=IntToStr(Y); end;
procedure TForm1.N1Click(Sender: TObject); begin Memo1.Lines.SaveToFile(ExtractFilePath(Application.ExeName)+'Информация.txt'); end;
procedure TForm1.Maps1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin KX:= X div 50; KY:= Y div 50; Form1.MX1Y1X2Y2_lbl.Caption:='X = '+inttostr(KX)+':'+ 'Y = ' + inttostr(KY); DStream.Maps_Cells[KX,KY]:=krt;
end;
procedure TForm1.FormCreate(Sender: TObject); begin list:=TStringList.Create; if FindFirst(ExtractFilePath(Application.ExeName)+'Bitmaps_Png\'+'*.bmp',faAnyFile-faDirectory-faVolumeID, fs)=0 then begin repeat inc(krg); list.Add(fs.Name); until FindNext(fs)<>0; findclose(fs); end; Form1.OnMouseWheel:=MouseWheel; Form1.OnMouseWheelDown:=MouseWheelDown; Form1.OnMouseWheelUp:=MouseWheelUp; Form1.AutoSize:=True; end;
procedure TForm1.MouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); begin If MBoolean = MDOWN then begin If krt > 0 then begin krt := krt - 1; end; Form1.Edit1.Text:='Ввниз'; end; If MBoolean = MUP then begin if krt < krg -1 then begin krt := krt + 1; end; Form1.Edit1.Text:='Вверх'; end; Form1.Image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'Bitmaps_Png\'+list.Strings[krt]); Form1.Edit2.Text:=list.Strings[krt]+' : '+inttostr(krt); end;
procedure TForm1.MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin MBoolean:=MDOWN; end;
procedure TForm1.MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin MBoolean:=MUP; end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Form1.OnMouseWheel:=nil; Form1.OnMouseWheelDown:=nil; Form1.OnMouseWheelUp:=nil; Application.Terminate; end;
procedure TForm1.Button2Click(Sender: TObject); begin Form1.OnMouseWheel:=nil; Form1.OnMouseWheelDown:=nil; Form1.OnMouseWheelUp:=nil; Application.Terminate; end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Create_Draw_Grid_Modal('Выберите картинку'); end;
end. Добавлено (10.03.2013, 17:58) --------------------------------------------- Как можно на имадже отрисовать картинку в орпеределенных координатах и стереть ее
|
|
| |
Александр5 | Дата: Пятница, 08 Марта 2013, 19:42 | Сообщение # 6 | Тема: Мои вопросы по обучению на Delphi XE и помощь к созданию игр |
частый гость
Сейчас нет на сайте
| А разве не WheelDelta не будет содержать число прокруток
Добавлено (07.03.2013, 00:18) --------------------------------------------- Скиньте мне паскаль скрипт на Delphi 5 и 7 Как установить Паскаль скрипт на Delphi 5 и 7Добавлено (08.03.2013, 19:42) --------------------------------------------- Скажите какую формулу мне использовать для прокрутки картинок.
Эта не подходит.
Код procedure TForm1.MouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); begin If MBoolean = MDOWN then begin If krt > 0 then begin krt := krt - 1; end; Form1.Edit1.Text:='Вверх'; end; If MBoolean = MUP then begin if krt < krg -1 then begin krt := krt + 1; end; Form1.Edit1.Text:='Ввниз'; end; Form1.Image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'Bitmaps_Png\'+list.Strings[krt]); Form1.Edit2.Text:=list.Strings[krt]+' : '+inttostr(krt); end;
procedure TForm1.MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin MBoolean:=MDOWN; end;
procedure TForm1.MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin MBoolean:=MUP; end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Form1.OnMouseWheel:=nil; Form1.OnMouseWheelDown:=nil; Form1.OnMouseWheelUp:=nil; Application.Terminate; end;
procedure TForm1.Button2Click(Sender: TObject); begin Form1.OnMouseWheel:=nil; Form1.OnMouseWheelDown:=nil; Form1.OnMouseWheelUp:=nil; Application.Terminate; end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Create_Draw_Grid_Modal('Выберите картинку'); end;
end.
Скажите пожалуйста
Сообщение отредактировал Александр5 - Четверг, 07 Марта 2013, 00:23 |
|
| |
Александр5 | Дата: Среда, 06 Марта 2013, 22:13 | Сообщение # 7 | Тема: Мои вопросы по обучению на Delphi XE и помощь к созданию игр |
частый гость
Сейчас нет на сайте
| Не уверен, но, скорей всего, проблема в колёсике мыши. У всех мышей разные колёсики, плюс разные настройки в системе, так что реальный щелчок колёсика при его вращении может вызывать сразу несколько событий MouseWheelUp/MouseWheelDown подряд.
И как это можно исправить
Смотря какие картинки ты загружаешь. Предположим, ты хочешь загрузить все картинки с расширением *.bmp в папке images. Тогда тебе нужно задать строку '*.bmp' фильтром поиска и путь к папке 'images', а затем вызывать FindFirst, загрузить картинку, вызывать FindNext и загружать картинку, пока картинки не кончатся.
но как сделать как загрузить в драв гридДобавлено (06.03.2013, 22:13) --------------------------------------------- Слушайте как можно в процедуре
procedure TForm1.MouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); begin Form1.Image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'Bitmaps_Png\'+list.Strings[krt]); Form1.Edit2.Text:=list.Strings[krt]+' : '+inttostr(krt); end;
в какую сторону крутиться колесика
|
|
| |
Александр5 | Дата: Среда, 06 Марта 2013, 19:23 | Сообщение # 8 | Тема: Мои вопросы по обучению на Delphi XE и помощь к созданию игр |
частый гость
Сейчас нет на сайте
| Ответ те на это пожалуйста
1)
Код unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Menus, AppEvnts, TeeProcs, TeEngine, Chart,UN_Type,UN_DrawGrid;
type TForm1 = class(TForm) Create_Maps_btn: TButton; Mini_Map_scrl1: TScrollBox; Maps1: TImage; MX_lbl: TLabel; MY_lbl: TLabel; MX1Y1X2Y2_lbl: TLabel; Memo1: TMemo; PopupMenu1: TPopupMenu; N1: TMenuItem; PopupMenu2: TPopupMenu; N2: TMenuItem; N3: TMenuItem; Button1: TButton; Image1: TImage; Edit1: TEdit; Edit2: TEdit; Button2: TButton; procedure Create_Maps_btnClick(Sender: TObject); procedure Maps1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure N1Click(Sender: TObject); procedure Maps1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button2Click(Sender: TObject); procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
private { Private declarations } procedure MouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
// îáðàáîòêà ïðîêðóòêè êîëåñà âíèç procedure MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
// îáðàáîòêà ïðîêðóòêè êîëåñà ââåðõ procedure MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); public { Public declarations } end; var Form1: TForm1; DStream:TDStream; i,o,p:Integer; IM1:Integer; IM2:Integer; cs,str1,lki:string; KX,KY,JX,JY:Integer; lk:Word;{Ïåðåìåííàÿ êîòîðàÿ áóäåò õðàíèòü êîä êàðòèíêè} files:TextFile; krt,krg:integer; Bmp_Image:array of string; fs:TSearchRec; list:TStringList; implementation
{$R *.DFM} procedure TForm1.Create_Maps_btnClick(Sender: TObject); begin i := StrToInt(InputBox('Ââåäèòå ÷èñëî ÿ÷ååê','Ââîä ÷èñëà ÿ÷ååê','32')); if i >= 20 then begin DStream.InputStream:=TMemoryStream.Create; AssignFile(files,ExtractFilePath(Application.ExeName)+'Maps_Bin.bin'); ReWrite(files); CloseFile(files); o:=i*50; Form1.Maps1.Height:=o; Form1.Maps1.Width:=o; Form1.Mini_Map_scrl1.Visible:=True; SetLength(DStream.Maps_Cells,i,i); DStream.InputStream.Free; end else begin AllocConsole; cs:='\\Èçâèíèòå ÷èñëî äîëæíî áûòü áîëüøå 20. Ââåäèòå ÷èñëî ÿ÷ååê'; CharToOEM (PChar(cs), PChar(cs)); Writeln(cs); readln; repeat lki:='Èçâèíèòå. Íî äëÿ çàêðûòèÿ êîíñîëüíîãî ïðèëîæåíèÿ íóæíî ââåñòè Close'; CharToOEM (PChar(lki), PChar(lki)); Writeln(lki); readln(str1); until AnsiUpperCase(str1) = 'CLOSE'; FreeConsole; end; end;
procedure TForm1.Maps1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Form1.MX_lbl.Caption:=IntToStr(X); Form1.MY_lbl.Caption:=IntToStr(Y); end;
procedure TForm1.N1Click(Sender: TObject); begin Memo1.Lines.SaveToFile(ExtractFilePath(Application.ExeName)+'Èíôîðìàöèÿ.txt'); end;
procedure TForm1.Maps1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin KX:= X div 50; KY:= Y div 50; Form1.MX1Y1X2Y2_lbl.Caption:='X = '+inttostr(KX)+':'+ 'Y = ' + inttostr(KY); end;
procedure TForm1.FormCreate(Sender: TObject); begin list:=TStringList.Create; if FindFirst(ExtractFilePath(Application.ExeName)+'Bitmaps_Png\'+'*.bmp',faAnyFile-faDirectory-faVolumeID, fs)=0 then begin repeat inc(krg); list.Add(fs.Name); until FindNext(fs)<>0; findclose(fs); end; Form1.OnMouseWheel:=MouseWheel; Form1.OnMouseWheelDown:=MouseWheelDown; Form1.OnMouseWheelUp:=MouseWheelUp; Form1.AutoSize:=True; end;
procedure TForm1.MouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); begin Form1.Image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+'Bitmaps_Png\'+list.Strings[krt]); Form1.Edit2.Text:=list.Strings[krt]+' : '+inttostr(krt); end;
procedure TForm1.MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin If krt > 0 then begin krt := krt - 1; end; Form1.Edit1.Text:='Ââíèç'; end;
procedure TForm1.MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin if krt < krg -1 then begin krt := krt + 1; end; Form1.Edit1.Text:='Ââåðõ'; end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Form1.OnMouseWheel:=nil; Form1.OnMouseWheelDown:=nil; Form1.OnMouseWheelUp:=nil; Application.Terminate; end;
procedure TForm1.Button2Click(Sender: TObject); begin Form1.OnMouseWheel:=nil; Form1.OnMouseWheelDown:=nil; Form1.OnMouseWheelUp:=nil; Application.Terminate; end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Create_Draw_Grid_Modal('Âûáåðèòå êàðòèíêó'); end;
end. procedure TForm1.MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin if krt < krg -1 then begin krt := krt + 1; end; Form1.Edit1.Text:='Ââåðõ'; end;
procedure TForm1.MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin If krt > 0 then begin krt := krt - 1; end; Form1.Edit1.Text:='Ââíèç'; end; Он почемута прибавляет 2 а не 1
2)
Как можно сделаить загрузку всех картинок в Draw grid используя Find first
функции FindFirst,FindNext,FindClose я знаю но незнаю как организовать загрузку картинок в DrawGrid
Сообщение отредактировал Александр5 - Среда, 06 Марта 2013, 19:24 |
|
| |
Александр5 | Дата: Суббота, 02 Марта 2013, 15:17 | Сообщение # 9 | Тема: Мои вопросы по обучению на Delphi XE и помощь к созданию игр |
частый гость
Сейчас нет на сайте
| TimKruz, Спасибо но Word не хранит картинок или ты предлагаешь чтобы ворд хранил код картинки например трава или еще что либо а Image:array of TBitmap хранил картики 1 тип = 1 картинка
правдо эфективно но тут вопрос зайдет о количестве картинок
map:array of array of word это массив который будет хранить тип картинки с заданными координатами
Image:array of TBitmap это сами картинки
Вопрос пойдет о том как на имадже показывать эти картики если учесть что не будет известно в каких координатах какая картинка
это прийдется делать определенный информационный масив и его запись для этого
Запись как ты говоришь сделать я не могу так как это карта а не набор картинок если карта будет состоятьиз усков картинок то сами карты будут состоять из файлов и их будет более 1000.
Как ты себе это представляешь?
Ну сделать редктор текст едит он будетпризводить загрузку и сохранения рекорда. В рекорде будут несколько 10 масивов string для текста.
несколько 10 потомучто хочу чтобы все по полочкам лежало
|
|
| |
Александр5 | Дата: Пятница, 01 Марта 2013, 23:37 | Сообщение # 10 | Тема: Мои вопросы по обучению на Delphi XE и помощь к созданию игр |
частый гость
Сейчас нет на сайте
| Нет я в текстовике это значит в текстовом файле но я тут подумал что лучше сделать рекордом рекорд будет содержать весь текст игры но сейчас занят редактором карт и никак не могу найти формулу для того чтобы узнать в какую ячейку засовывать картинку
Масив ячеек будет выглядить так
Maps_Games : array of Bitmap;
Или может предложете как лучше сделать массив карты с ячейками
1 файл = 1 карта
И еще мне нужно узнать что использовать для записи картинок
решил для записи переменных Integer, boolean, string, byte использовать рекорд но для картинок не подойдет нужен спицальная запись с памятью например TMemoryStream
|
|
| |
Александр5 | Дата: Пятница, 01 Марта 2013, 15:26 | Сообщение # 11 | Тема: Мои вопросы по обучению на Delphi XE и помощь к созданию игр |
частый гость
Сейчас нет на сайте
| Цитата (TimKruz ) Диск ты зря покупал, уж лучше оригинальный образ скачать
Почему зря вобщета я за него 300 рублей платил и там за исключением этого 10 языков я его из за бейсика брал както интерисовался но это интерприатор и игру нормальную там не написать
Цитата (TimKruz ) Данные у тебя килобайт весят, потому что ты используешь tbitmap, а там много информации хранится, да и сами битмапы много места занимают. Вообще, я уже говорил, что стандартными средствами не всегда удобно в файл писать, т.к., например, пустые строки и массивы будут забивать пространство в файле нулями.
А как делать но игру я даже незнаю пока я решил сделать объекты для редактора карт редактор объектов но как сделать запись чтобы был бинарный файл мне честно говоря хочется поскорее закончить с редактором объектов и перейти редактору карт а ушь потом начать писать игровой движок 1 версия расчитываю сделать простую без стилей только компоненты и код.
Цитата (TimKruz ) Делфи 7 полностью совместима с семёркой, виндоус предупреждение первый раз выводит, но Делфи работает отлично. Правда, ей нужны права администратора для работы с файлами в её папке.
А есть маленький образ и без вирусов ну скажем весом 100 мб но не достигающие 200 вобще 5 весит 64 мб образ диска
Добавлено (22.02.2013, 08:57) ---------------------------------------------
Добавлено (22.02.2013, 16:55) --------------------------------------------- Короче исправил код но даже рекорд по человечески не может записываться что еще можно использовать для бинарного файла чтобы сделать объекты для карты Код unit UN_OBject;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Buttons, ComCtrls, ExtDlgs,UN2_Object,FileCtrl;
type TForm1 = class(TForm) BitBtn1: TBitBtn; Panel1: TPanel; Image1: TImage; Panel2: TPanel; RadioGroup2: TRadioGroup; RadioGroup1: TRadioGroup; Timer1: TTimer; CheckBox1: TCheckBox; Label1: TLabel; TrackBar1: TTrackBar; Label2: TLabel; OBR: TEdit; Label3: TLabel; Label4: TLabel; OpenPictureDialog1: TOpenPictureDialog; Button1: TButton; CheckBox2: TCheckBox; Label5: TLabel; procedure TrackBar1Change(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; const OBR_YES:STRING='(Да)'; OBR_NO:STRING='(Нет)'; var Form1: TForm1; Object1:TObject_obj; FILE_Object:file of TObject_obj; il:integer; fs: TSearchRec; implementation
{$R *.DFM}
procedure TForm1.TrackBar1Change(Sender: TObject); begin Label1.Caption:=inttostr(TrackBar1.Position)+' %'; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin If RadioGroup1.ItemIndex=0then begin panel2.Enabled:=false; end; If RadioGroup1.ItemIndex=1then begin Panel2.Enabled:=true; end; If CheckBox1.Checked=true then begin Label2.Caption:=OBR_YES;end else begin Label2.Caption:=OBR_NO;end; If CheckBox2.Checked=true then begin Label5.Caption:=OBR_YES;end else begin Label5.Caption:=OBR_NO;end; end;
procedure TForm1.BitBtn1Click(Sender: TObject); begin If openpicturedialog1.Execute then begin image1.Picture.LoadFromFile(openpicturedialog1.FileName); end; end;
procedure TForm1.Button1Click(Sender: TObject); var r:word; begin Object1.Kartinka:=tbitmap.Create; Object1.Kartinka:=image1.Picture.Bitmap; Object1.Names:=OBR.Text; case Radiogroup1.ItemIndex of 0:begin Object1.typesPO:=false; end; 1:begin Object1.typesPO:=true; end; end; if Object1.typesPO=true then begin object1.tormoz_procent:=0; object1.BOOLEAN_OBJECT:=false; object1.TYPE_OBJECT:=0; object1.STOP_PERSONAZ:=false; end else begin object1.tormoz_procent:=trackbar1.Position; object1.BOOLEAN_OBJECT:=checkbox1.Checked; Object1.TYPE_OBJECT:=Radiogroup2.ItemIndex+1; object1.STOP_PERSONAZ:=checkbox2.Checked; end; assignfile(FILE_Object,extractfilepath(application.ExeName)+'TObject_A\TObject_'+OBR.Text+'_'+inttostr(il)+'.TOBJ'); rewrite(FILE_Object); write(FILE_Object,Object1); closefile(FILE_Object); end;
procedure TForm1.FormCreate(Sender: TObject); begin if FindFirst(extractfilepath(application.ExeName)+'\TObject_A\'+'*.TOBJ',faAnyFile - faDirectory - faVolumeID, fs) = 0 then begin repeat inc(il); until FindNext(fs) <> 0; findclose(fs); end; end;
end.
unit UN2_Object;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Buttons, ComCtrls, ExtDlgs; Type TObject_obj=record Kartinka:tbitmap; Names:string[20]; typesPO:BOOLEAN; tormoz_procent:integer; BOOLEAN_OBJECT:boolean; TYPE_OBJECT:BYTE; STOP_PERSONAZ:BOOLEAN; end; implementation
end.
Добавлено (22.02.2013, 17:30) --------------------------------------------- Я нашел как решиить проблему нашел пример и теперь я буду записывать класс
Добавлено (22.02.2013, 18:03) --------------------------------------------- Слушайти тут проблемка вот код записи строки мне нужно сделать запись не только строки Код procedure TMaterials.WriteString(Stream: TStream; Str: string); var I : Integer; begin I := Length(Str); Stream.Write(I, SizeOf(I)); Stream.Write(Str[1], I); end;
Как можно сделать еще на такие данные Integer,Byte,boolean,Word и т.п поможете
тоже самое и для чтения надо вот код чтения строки Код function TMaterials.ReadString(Stream: TStream): string; var I : Integer; begin Stream.Read(I, SizeOf(I)); SetLength(Result, I); Stream.Read(Result[1], I); end; Добавлено (25.02.2013, 10:59) --------------------------------------------- Как можно сделать мигание Модальной формы при попытки перейти на другие формы когда открыта модальная форма То есть как можно отловить это а с миганием формя я сам разберусь а вот как отловить переход на другие формы в модальной форме с помощью таймера Добавлено (01.03.2013, 15:26) --------------------------------------------- Скажите мне как можно в текстовике сделать поиск слова и как определить на какой строке это слово находится.
И еще как считывать определенную строчку а не подряд
Сообщение отредактировал Александр5 - Пятница, 22 Февраля 2013, 18:07 |
|
| |
Александр5 | Дата: Воскресенье, 24 Февраля 2013, 11:46 | Сообщение # 12 | Тема: Мои идеи для создание компьютерной игры Ancient Empires |
частый гость
Сейчас нет на сайте
| Глюк, Тут написано если Gml = C++ тогда i = lol очередная логическая задача но не могу перевести GML И LOL ХОТЯ НАЙДУ В ГУГЛЕ И ПОЙМУ ЗАДАЧУ Amri, Спасибо я займусь изучением теперь редко когда буду просить помощи так ак я понял чтопомощи не дождесся
Только просьба когда закончу разроботку игрового движка вы сделайти графику обновления модификации. И подправти мои идеи если они неправильные раскожите как сделать лучше
|
|
| |
Александр5 | Дата: Воскресенье, 24 Февраля 2013, 09:23 | Сообщение # 13 | Тема: Мои идеи для создание компьютерной игры Ancient Empires |
частый гость
Сейчас нет на сайте
| Я хочу сначала изучить Delphi хорошо потом перейти к C++ Для меня C++ без Delphi сложный язык
|
|
| |
Александр5 | Дата: Воскресенье, 24 Февраля 2013, 09:17 | Сообщение # 14 | Тема: Мои идеи для создание компьютерной игры Ancient Empires |
частый гость
Сейчас нет на сайте
| Глюк, Я работаю на delphi а не на C++ извини
|
|
| |
Александр5 | Дата: Воскресенье, 24 Февраля 2013, 09:09 | Сообщение # 15 | Тема: Мои идеи для создание компьютерной игры Ancient Empires |
частый гость
Сейчас нет на сайте
| Цитата (imperator12 ) Я уже не говорю о поддержки скриптов, знаний АПИ, 3Д математики и многое другое. Выучу найду но скрипты в моей игре не нужны а вообще у меня просьба может кто из вас знает где скачать апи для делфи книгуДобавлено (24.02.2013, 09:09) --------------------------------------------- Вот что я уже знаю
Функции Процедуры Типы Рекорды Длл но только как там писать функции процедуры и их регистрацию а также конечно подключения к проекту
Функция Финдфирст финднекст и финдклосе Функции работы с деректориями Диалоговые сообщения кстати сейчас создаю одно Ну и еще мелочи которые надо только посмотреть и с 1 взгляду пойму Классы я только начел работать так что буду разбираться с записью переменных которые находиться в классе отдельно 3Д не смогу изучить да и не собирался 3Д игры делать вообще только 2Д Что касается графики тонарисовать кое как на пэйнте смогу впрочем какая разница там картинки можно будет менять и переделывать они загружаться будут програмно и всеже ответте на идею как лучше загружать картинки все в переменную при загрузки игры или делать редакторы для их извлечения из файла
|
|
| |
Александр5 | Дата: Суббота, 23 Февраля 2013, 21:40 | Сообщение # 16 | Тема: Мои идеи для создание компьютерной игры Ancient Empires |
частый гость
Сейчас нет на сайте
| То есть ты даже не знаешь как написать конструктор-деструктор, и планируешь написать что то типа двига( Точнее что Это непонятно что напишут за тебя)? Иди учи уроки, а твои идеи никому не нужны и никто не будет писать тебе код за тебя. Ведь непонятно этот проЭкт игра, движок, мод или конструктор?
Знаю теперь.
В конструкторе пишется начальные значения,запуск процедур которые должны происходить при создании класса и т.п. В деструкторе уничтожение в основном или то что должно происходить при уничтожение класса
|
|
| |
Александр5 | Дата: Суббота, 23 Февраля 2013, 20:37 | Сообщение # 17 | Тема: Мои идеи для создание компьютерной игры Ancient Empires |
частый гость
Сейчас нет на сайте
| Хочу поделиться идеями по своей разработки игрового движка Ancient Empires по мотивам мобильной игры Ancient Empires 2
Мне надоело, что Мобильную игру Ancient Empires 2 Революция не дорабатывают. Мне хочется, чтобы она была, как игровой движок, где должна быть возможность добавлять свои кампании и миссии. Менять структуру персонажей. Менять текст всей игры, в том числе миссий, персонажей. А вот 1 идеи, которые я изменял и написал последние идеи. 1 идеи по разработки. Весь текст игры будет храниться в текстовых файлах. Рассчитываю сделать только русский язык, перевод будет поддерживаться. Нужно будет лишь только создать текстовой документ под именем, например ENG.Location.ael . 1) Рассчитывал сделать загрузку картинок в видеокарту, а от туда показывать, но этот способ гораздо сложнее и при таком способе придётся ждать пока файлы будут загружаться. 2) Рассчитывал сделать, чтобы карты составлялись из картинок, а все свойства хранились в файле миссии, но мы обсудили это с программистом вариант не подходит не по логике. 3) Тут наши мнения разошлись его идея построить игру на дБ файле. Легко но меня такая идея не устраивает лишь только из-за того что разрешения файла дБ не поменяешь или делфи 7 или рад не будет его распознавать. 4) Идея сделать редактор объектов, в котором будет 2 вещи. 1) Это картинка объекта, например здание дом и т.п. 2) Свойства если отключены то все свойства будут равны либо 0, либо false. 5) И сделать редактор карт, который будет всю составленную карту из объектов содержать в файле. 6) Файлы миссии будут состоять из файла, который будет хранить цели. 1 цель будет приставлена в виде байта(Byte) допустим, занять все здания = 0 и это 1 цель. 7) Персонаж будет текстовой файл данных, так как характеристики персонажа должно можно быть менять, изменять. 8) Картинки персонажа я пока не придумал, как они будут существовать, но еще придумаю. 9) Ну конечно функции, процедуры всего прочего. 10) После завершения 1 бета версии игры сделать инструкции по как делать модификации к игре. 11) Пока что все идеи
Думаю кто из вас поможет в разработки совместного игрового движка
Забыл сказать код сюда пишете
Вот в эту темку
Сообщение отредактировал Александр5 - Суббота, 23 Февраля 2013, 20:42 |
|
| |
Александр5 | Дата: Четверг, 21 Февраля 2013, 19:37 | Сообщение # 18 | Тема: Мои вопросы по обучению на Delphi XE и помощь к созданию игр |
частый гость
Сейчас нет на сайте
| Вообще, советую использовать Delphi 7 (как достаточно популярную до сих пор) или одну из RAD-студий, например, 2007 (последняя не юникодовская).
пасибо но делфи 7 у меня вирусная диск купил 150 нелицензионный падла мало того не совместима с виндой 7 так еще после установки 3 недели и винда литит. также код от 5 и 7 несовпадает а вобще желательно 7 но не нужна образ диска маленьким весом под виндовс 7 х64 и 86 и 32 короче на все и еще я тут запись класса сделал так мне не верится что данные будут весить 1 кб вот код
Код unit UN2_Object;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Buttons, ComCtrls, ExtDlgs; type TObject_obj=class(TObject) Kartinka:tbitmap; Names:string[20]; typesPO:BOOLEAN; tormoz_procent:integer; BOOLEAN_OBJECT:boolean; TYPE_OBJECT:BYTE; STOP_PERSONAZ:BOOLEAN; end; implementation
end.
unit UN_OBject;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Buttons, ComCtrls, ExtDlgs,UN2_Object;
type TForm1 = class(TForm) BitBtn1: TBitBtn; Panel1: TPanel; Image1: TImage; Panel2: TPanel; RadioGroup2: TRadioGroup; RadioGroup1: TRadioGroup; Timer1: TTimer; CheckBox1: TCheckBox; Label1: TLabel; TrackBar1: TTrackBar; Label2: TLabel; OBR: TEdit; Label3: TLabel; Label4: TLabel; OpenPictureDialog1: TOpenPictureDialog; Button1: TButton; CheckBox2: TCheckBox; Label5: TLabel; procedure TrackBar1Change(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; const OBR_YES:STRING='(Да)'; OBR_NO:STRING='(Нет)'; var Form1: TForm1; Object1:TObject_obj; FILE_Object:file of TObject_obj; il:integer; fs: TSearchRec; implementation
{$R *.DFM}
procedure TForm1.TrackBar1Change(Sender: TObject); begin Label1.Caption:=inttostr(TrackBar1.Position)+' %'; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin If RadioGroup1.ItemIndex=0then begin panel2.Enabled:=false; end; If RadioGroup1.ItemIndex=1then begin Panel2.Enabled:=true; end; If CheckBox1.Checked=true then begin Label2.Caption:=OBR_YES;end else begin Label2.Caption:=OBR_NO;end; If CheckBox2.Checked=true then begin Label5.Caption:=OBR_YES;end else begin Label5.Caption:=OBR_NO;end; end;
procedure TForm1.BitBtn1Click(Sender: TObject); begin If openpicturedialog1.Execute then begin image1.Picture.LoadFromFile(openpicturedialog1.FileName); end; end;
procedure TForm1.Button1Click(Sender: TObject); begin Object1:=TObject_obj.Create; Object1.Kartinka:=tbitmap.Create; Object1.Kartinka:=image1.Picture.Bitmap; Object1.Names:=OBR.Text; case Radiogroup1.ItemIndex of 0:begin Object1.typesPO:=false; end; 1:begin Object1.typesPO:=true; end; end; if Object1.typesPO=true then begin object1.tormoz_procent:=0; object1.BOOLEAN_OBJECT:=false; object1.TYPE_OBJECT:=0; object1.STOP_PERSONAZ:=false; end else begin object1.tormoz_procent:=trackbar1.Position; object1.BOOLEAN_OBJECT:=checkbox1.Checked; Object1.TYPE_OBJECT:=Radiogroup2.ItemIndex+1; object1.STOP_PERSONAZ:=checkbox2.Checked; end; //Remained to do record assignfile(FILE_Object,extractfilepath(application.ExeName)+'\TObject_A\TObject_'+OBR.Text+'_'+inttostr(il+1)+'.TOBJ'); rewrite(FILE_Object); write(FILE_Object,Object1); closefile(FILE_Object); //Destroy picture object1.Kartinka.FreeImage; Object1.Free; end;
procedure TForm1.FormCreate(Sender: TObject); begin if FindFirst(extractfilepath(application.ExeName)+'\TObject_A\'+'*.TOBJ',faAnyFile - faDirectory - faVolumeID, fs) = 0 then begin repeat inc(il); until FindNext(fs) <> 0; findclose(fs); end; end;
end.
Поможешь чтото тут не так.
Кстати если код в делфи 5 и 7 индетичный и совпадает то дай ылку на 7 но маленький файл и совместимую с виндой 7 также как 5 рад у меня есть но на нем игру будет сложнее разрабатывать 1 код сильно отличается 2 стилей на много больше прийдется делать если учесть что на многие компоненты нельзя цвет поставить рад у меня XE3 и delphi 5
|
|
| |
Александр5 | Дата: Четверг, 21 Февраля 2013, 15:30 | Сообщение # 19 | Тема: Мои вопросы по обучению на Delphi XE и помощь к созданию игр |
частый гость
Сейчас нет на сайте
| Надешь тему и что в конструкторе и деконструторе писать Добавлено (20.02.2013, 13:15) --------------------------------------------- Как сделать запись класса вот код Код unit UN_OBject;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Buttons, ComCtrls, ExtDlgs, UN1_Object;
type TForm1 = class(TForm) BitBtn1: TBitBtn; Panel1: TPanel; Image1: TImage; Panel2: TPanel; RadioGroup2: TRadioGroup; RadioGroup1: TRadioGroup; Timer1: TTimer; CheckBox1: TCheckBox; Label1: TLabel; TrackBar1: TTrackBar; Label2: TLabel; OBR: TEdit; Label3: TLabel; Label4: TLabel; OpenPictureDialog1: TOpenPictureDialog; Button1: TButton; CheckBox2: TCheckBox; Label5: TLabel; procedure TrackBar1Change(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; type RObject_obj=record Kartinka:tbitmap; Names:string[20]; typesPO:BOOLEAN; tormoz_procent:integer; BOOLEAN_OBJECT:boolean; TYPE_OBJECT:BYTE; STOP_PERSONAZ:BOOLEAN; end; type TObject_obj=class(TObject) Object_obj1:RObject_obj; end; const OBR_YES:STRING='(Да)'; OBR_NO:STRING='(Нет)'; var Form1: TForm1; Object1:TObject_obj; implementation
{$R *.DFM}
procedure TForm1.TrackBar1Change(Sender: TObject); begin Label1.Caption:=inttostr(TrackBar1.Position)+' %'; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin If RadioGroup1.ItemIndex=0then begin panel2.Enabled:=false; end; If RadioGroup1.ItemIndex=1then begin Panel2.Enabled:=true; end; If CheckBox1.Checked=true then begin Label2.Caption:=OBR_YES;end else begin Label2.Caption:=OBR_NO;end; If CheckBox2.Checked=true then begin Label5.Caption:=OBR_YES;end else begin Label5.Caption:=OBR_NO;end; end;
procedure TForm1.BitBtn1Click(Sender: TObject); begin If openpicturedialog1.Execute then begin image1.Picture.LoadFromFile(openpicturedialog1.FileName); end; end;
procedure TForm1.Button1Click(Sender: TObject); begin Object1.Object_obj1.Kartinka:=Tbitmap.Create; Object1.Object_obj1.Kartinka:=image1.Picture.Bitmap; Object1.Object_obj1.Names:=OBR.Text; case Radiogroup1.ItemIndex of 0:begin Object1.Object_obj1.typesPO:=false; end; 1:begin Object1.Object_obj1.typesPO:=true; end; end; if Object1.Object_obj1.typesPO=true then begin object1.Object_obj1.tormoz_procent:=0; object1.Object_obj1.BOOLEAN_OBJECT:=false; object1.Object_obj1.TYPE_OBJECT:=0; object1.Object_obj1.STOP_PERSONAZ:=false; end else begin object1.Object_obj1.tormoz_procent:=trackbar1.Position; object1.Object_obj1.BOOLEAN_OBJECT:=checkbox1.Checked; Object1.Object_obj1.TYPE_OBJECT:=Radiogroup2.ItemIndex+1; object1.Object_obj1.STOP_PERSONAZ:=checkbox2.Checked; end; //Remained to do record
//Destroy picture object1.Object_obj1.Kartinka.FreeImage; end;
end. Добавлено (21.02.2013, 15:30) --------------------------------------------- Как можно проверить существует ли папка в определенной директории или нет если нет то создать ее функция function DirectoryExists ( const DirectoryName : string ) : Boolean; не работвает в Delphi 5 помоему ее там вобще нет а вот эта CreateDir(dirName); работет
|
|
| |
Александр5 | Дата: Пятница, 15 Февраля 2013, 23:26 | Сообщение # 20 | Тема: Мои вопросы по обучению на Delphi XE и помощь к созданию игр |
частый гость
Сейчас нет на сайте
| Спасибо тут с игрой в делфи 5 возникла сможешь разобраться Код unit UN4_GAMES;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls,Dialogs, StdCtrls, ExtCtrls; TYPE TGameRead=class(TThread) // класс для таймера игры private protected procedure Execute;override; // Запуск procedure Tic; // Один тик программы end; Type TCreate_Graphic=class(TObject) OBJ_Stena:array[0..1] of TBitmap; end; Procedure TCreate_new; var i:integer; Graphics1:TCreate_Graphic; L1:TGameRead; implementation uses UN3_GAMES; procedure TGameRead.execute; begin repeat synchronize(Tic); until Terminated end; procedure TGameRead.Tic; begin // Тут пишем все как в TTimer OnTime end; Procedure TCreate_new; begin For i := 0 to 1 do begin Graphics1.OBJ_Stena[i]:=Tbitmap.Create; end; Graphics1.OBJ_Stena[0].LoadFromFile(ProgDir+'\Lefels1\Stena_1.bmp'); Graphics1.OBJ_Stena[1].LoadFromFile(ProgDir+'Stena_2.bmp'); L1:=TGameRead.Create(false); // Создаем поток L1.Priority:=TpHighest; // Ставим приоритет end; end. Ошибка системная вот тут Код For i := 0 to 1 do begin Graphics1.OBJ_Stena[i]:=Tbitmap.Create; end;
|
|
| |
|