Delphiでアクションゲームが作りたい!!
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG初心者でもわかるように1から説明してください。
ネタじゃないです!!
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNGならないんだい?
0005デフォルトの名無しさん
NGNGおながいしますよ。どうせ暇なんでしょ。
4000も出して本買ったけど、ゲームに結びつくようなことは何もかかれてなかった。
0006デフォルトの名無しさん
NGNGパソコンに合わない可能性も高いが。
0007デフォルトの名無しさん
NGNG0008デフォルトの名無しさん
NGNGちょっとは自分で考えろよ。
0009デフォルトの名無しさん
NGNG本があったと思う。
それ買えば?
0010デフォルトの名無しさん
NGNGじゃあまずはAボタン押したら■がジャンプするプログラムでも作っとけ。
0011デフォルトの名無しさん
NGNG0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNGそういう時はどのコンポーネントを使えばいいのですか?
0014デフォルトの名無しさん
NGNG脳みそ付いてますか?
0015Delフサギコ ◆zE1iiRdQ
NGNG,ミ;゚Д゚彡 ドット疲れますた。
ミ ∪
ミ〜,, ミ
∪ ∪
0016デフォルトの名無しさん
NGNG付いてますけど、どうすればいいかわからないです。
0017デフォルトの名無しさん
NGNGとりあえず、sageを覚えて、ゲーム作りは一旦あきらめて
Delphiの腕を磨いてきてください。
0018デフォルトの名無しさん
NGNG物理は知ってますか
0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNG00221
NGNG0023デフォルトの名無しさん
NGNG/ ̄>
厨なニオイがするでござる > |゚U゚ヽ|/
/ y⊂)〜
U〉 ⌒l
/(__ノ ~U
/""""""""""""""""
0024デフォルトの名無しさん
NGNG0025デフォルトの名無しさん
NGNGあげるなって
0026デフォルトの名無しさん
NGNGまずプログラムを勉強する(ゲームのゲの字も出てこない)
自分の作るゲームに必要そうな技術を勉強する(DirectXとか(むずい))
ゲームのネタを考える
そのゲームに必要な素材を揃える(絵 音)
やっとゲームのプログラムを作ろう。
くらいの流れでいこう。道のりは果てしなく長い 多分くじけるくらい長い。
0028デフォルトの名無しさん
NGNGhttp://www-fu.magma.ne.jp/~hayase/dddd/index.html
0029Delフサギコ ◆zE1iiRdQ
NGNGhttp://game.2ch.net/test/read.cgi/gamedev/1006249204/l50
∧,,∧ ゴルァ♪
ミ,,゚Д゚彡 ゴルァ♪
ミつ[|lllll]). ゴルァ♪
〜ミ ミ ゴルァ♪
U''U
0030デフォルトの名無しさん
NGNG0031ほらよ
NGNGbegin
ActionGame := TMyActionGame.Create;
try
ActionGame.Run;
finally
ActionGame.Free;
end;
end.
00321
NGNGどうやったらジャンプするの?
0033デフォルトの名無しさん
NGNG00341
NGNGhttp://norisukeup.tripod.com/Project1.zip
0035デフォルトの名無しさん
NGNGお前のせいだ
00361
NGNGウソつくなよ!
00371
NGNG■をラベルとして貼り付けて、ボタンを押すとその座標が上に来るようにしたいんですけど、
どうすればいいのかわかりません(>_<)
0038デフォルトの名無しさん
NGNGさせる。そして決定した座標に■描画。
とりあえず「ルンゲクッタ法」で検索かけてみ
0039デフォルトの名無しさん
NGNG0040マンゲクッタ
NGNG00411
NGNGマジでそんなの考えなきゃいけないんですか?
難しいなぁ。勉強します。
0042デフォルトの名無しさん
NGNG00431
NGNGありがとうございます。頑張ります。
0044デフォルトの名無しさん
NGNG004542@Ð ë á t h ¹³
NGNG/'⌒'ヽ \ ./\ |
(●.●) )/ |: |
>冊/ ./ |: /
/⌒ ミミ \ 〆
/ / |::|λ| |
|√7ミ |::| ト、 |
|:/ V_ハ |
/| i | ∧|∧
и .i N /⌒ ヽ ) ←>>1
λヘ、| i .NV | | |
V\W ( 、 ∪
|| |
∪∪
0046デフォルトの名無しさん
NGNG0048デフォルトの名無しさん
NGNG0050デフォルトの名無しさん
NGNGconst
n = 300;
var
i: Integer;
begin
for i := -n to n do
Canvas.LineTo(i+n,Height-Round(n-i*i/n));
end;
とりあえずマターリと放物線・・・
0051デフォルトの名無しさん
NGNG0052デフォルトの名無しさん
NGNG0053名無しヘタぐらま ◆B18Bks.Y
NGNGボタンというのはキーボードのキーのことでいいのかな?
だったらOnKeyDownイベント.
たとえば「[↑]キーが押されたら…」という場合は
if Key = VK_UP then
というふうに書くよ.
(ほかのキーはDelphiのヘルプで『仮想キーコード』をキーワードに検索してみて.)
ただしラベルにはこのイベントはないからほかの手を考えて.
上か下かはラベルのTopプロパティで決まるよ.
この値をちょっとずつ増やしたり減らしたりすれば上下に動くよ.
どっちに動くかは実際にやってみて確かめてみてくれ.
0054デフォルトの名無しさん
NGNG板違い。誌ね。
0055デフォルトの名無しさん
NGNG0058デフォルトの名無しさん
NGNG00591
NGNG0060デフォルトの名無しさん
NGNGもうちょっとツールに慣れてから来いや。
>>37の質問はゲーム云々以前の問題だろ。
−−−−−−−−1がDelphi慣れするまで放置−−−−−−−−
0061デフォルトの名無しさん
NGNG34は見た?
0062デフォルトの名無しさん
NGNGttp://go.to/WDirectX
0063デフォルトの名無しさん
NGNG00641
NGNGだけど、諦めません。ぜってーマリオ作るから。
明日も学校なので寝ます。おやすみなさい。
0065デフォルトの名無しさん
NGNGこれを知ってないとお話にならない。
0066デフォルトの名無しさん
NGNG0067デフォルトの名無しさん
NGNGX=X。*s
Y。、X。はジャンプするときの上方向、横方向の初速度
Y、Xはジャンプした物体の位置
上の式から座標を計算して…ってこれ位中学で習わなかったっけ?
006865
NGNG今リアル工房3年。
2年ではじめて物体の運動習ったとこだよ。
中学の理科では力くらいしか習わなかったなぁ。
中学では数学で放物線=物体の落下運動ってチラッと聞いたくらい。
むろん重力加速度なんて知らなかったし。
0069デフォルトの名無しさん
NGNG自然に発見したぞ。
0070デフォルトの名無しさん
NGNGだよな。
学校で習う前に法則とか知ってたよな。
具体的な数値は違うけど。
0071無責任だが
NGNGuses Windows, Messages, SysUtils,Classes, Graphics, Controls, Forms, StdCtrls;
type TMoveItem= record
x,y,vx,vy,ax,ay:double;
obj:TObject;
end;
TForm1 = class(TForm)
Label1: TLabel;
procedure FormCreate(Sender: TObject);
private
oldTime:DWORD;
items:array [0..0] of TMoveItem;
procedure Idle(Sender: TObject; var Done: Boolean);
public
end;
var Form1: TForm1;
implementation
{$R *.dfm}
var Clip:TRect;
procedure ExecMoveItem(var items:TMoveItem;dt:double);
begin
with items do begin
x:=x+vx*dt; y:=y+vy*dt;
vx:=vx+ax*dt; vy:=vy+ay*dt;
if (round(x)<Clip.Left ) and (vx<0) then vx:=-vx;
if (round(x)>Clip.Right ) and (vx>0) then vx:=-vx;
if (round(y)<Clip.Top ) and (vy<0) then vy:=-vy;
if (round(y)>Clip.Bottom) and (vy>0) then vy:=-vy;
if obj is TControl then
with obj as TControl do begin Top:=Round(y);Left:=Round(x);end
else //ここに他のアイテムの動きを増やしてゆく
;
end;
end;
procedure TForm1.Idle(Sender: TObject; var Done: Boolean);
var t:DWORD; dt:Double; i:Integer;
begin
t:=GetTickCount; dt:=(t-oldTime)/1000.0;oldTime:=t;
if dt>0 then begin
for i:=0 to High(items) do ExecMoveItem(Items[i],dt);
end else Sleep(33);
Done:= False;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin Application.OnIdle:=Idle;
oldTime:=GetTickCount;
Clip:=ClientRect;
with items[0] do begin
obj:=Label1;
x:=Label1.Left;
y:=Label1.Top;
vx:=20; vy:=-13;
ay:=9.8; ax:=0.001;
end;
// ちらつきを減らすなら DoubleBuffered:=True;
end;
end.
007265
NGNG自分専用のPCもらったの工房1年。(;´Д`)
いちおう放物線を描いて物を飛ばすプログラム作ったけど
係数は1だったから不自然に思えたなぁ。
当時プログラムも覚えたてで
それでいっぱいいっぱいだったし。(;;;´Д`)
そしてなによりも>>1が加速度とかの類をハッケソできるか疑問。(w
0073デフォルトの名無しさん
NGNGがんばれ、1
00741
NGNG00751
NGNG00761
NGNG0077デフォルトの名無しさん
NGNGプログラムなんてしてる暇あったら
勉強しろYO!
0079デフォルトの名無しさん
NGNG008080
NGNG0081デフォルトの名無しさん
NGNG次はキャラクタアクションかな アイデアはある? >>1
0082デフォルトの名無しさん
NGNGそれよりもここだ
http://www.sulaco.co.za/quake2/
0083デフォルトの名無しさん
NGNGマジで受験勉強すれ
物理数学英語(化学)の偏差値60にしてからプログラムの勉強しても遅くないはず
人生棒に振るなよ
00841
NGNG受験勉強ってなんのですか?
0085デフォルトの名無しさん
NGNG00861
NGNGマジっすか?今年高校に入学したばっかりなんですけど。
0087デフォルトの名無しさん
NGNGマジっす!!
って進学校だったら毎日勉強しないとついていけないけどなぁ・・・。
00881
NGNG0089デフォルトの名無しさん
NGNG0090デフォルトの名無しさん
NGNG高校のレベルはどのくらい?
00911
NGNG数学は県でトップですが、県自体レベルが低いんで…鬱
0092デフォルトの名無しさん
NGNGおお凄い!
頑張って東大に入ってからプログラムやりなさい
0093デフォルトの名無しさん
NGNG2Dゲーム(マリオ)くらいだったら
中学数学で対応できるけどね
00941
NGNG凄くないですよ。都道府県別学力ランキングでビリ争いするような所ですから。
東大なんて120%ムリです。
0095デフォルトの名無しさん
NGNG今からやれば医学部でも東大でも狙えるぞ
0096デフォルトの名無しさん
NGNG沖縄?宮城?
00981
NGNG違います。民放が2つしかないド田舎です。
0099デフォルトの名無しさん
NGNG0101デフォルトの名無しさん
NGNGなんで?
0102デフォルトの名無しさん
NGNG0103デフォルトの名無しさん
NGNG0104デフォルトの名無しさん
NGNGHSP なら日本語ドキュメントもあるわけだし。
0105デフォルトの名無しさん
NGNGを強く推奨します。
0106デフォルトの名無しさん
NGNGヘルプの「FAQ&Tips」にある「インストール方法、サンプルについて」を読め
0107デフォルトの名無しさん
NGNGとりあえず、トリップつけてくれ。名前欄に"#英数字"
偽者気取ってても全然バレてないじゃん
0108デフォルトの名無しさん
NGNGで簡単にDIRECTX対応ゲーム作れるよ
2Dまでだけど(3Dだったら素直SDKで行ったほうがいい)
01091 ◆lo8YkeSw
NGNGまだ垂直ジャンプだけですけど(^_^;)
>>107
わかりました。トリップ付けます。
>>108
ddddはインストールはしてるんですけど、
まだ必要ないと思うので(というより使い方がわからない)もうちょっと普通に頑張ってみます。
0110デフォルトの名無しさん
NGNG今はどんな勉強をしてるの?
0112デフォルトの名無しさん
NGNGいや、デルファイの勉強
データ型とかは解る?
intgerとかstringとか
0114デフォルトの名無しさん
NGNG関数の作り方も解りますか?
0116デフォルトの名無しさん
NGNG0118デフォルトの名無しさん
NGNGprocedureは手続きで
functionは関数って事はわかります?
0119デフォルトの名無しさん
NGNGfunction add(a,b:integer) : integer;
var c : integer;
begin
c := a + b;
add := c
end;
0121デフォルトの名無しさん
NGNG0122デフォルトの名無しさん
NGNG関数の作り方なんですけど
>>119さんの関数の実装の仕方はわかりますか?
0125デフォルトの名無しさん
NGNGForm1のpublic節の中に
function add(a,b:integer) : integer;
とかいて
implementation節のどっかに
function form1.add(a,b:integer) : integer;
var c : integer;
begin
c := a + b;
add := c
end;
とかけば実装完了です。
0126デフォルトの名無しさん
NGNG標準Pascal準拠ではないが、result変数使った方がわかりやすいような気がするです。
0127デフォルトの名無しさん
NGNGf(x)=ax^2+bx+c
とか。
あれと一緒だよん。
0128デフォルトの名無しさん
NGNGfunction form1.add(a,b:integer) : integer;
↓
function Tform1.add(a,b:integer) : integer;
0129デフォルトの名無しさん
NGNGじゃー僕も頑張ってみますか。。。
0130デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1016308148/
01311 ◆lo8YkeSw
NGNG実装方法はわかったんですけど、それはどういう時に使うものなんですか?
>>127
それは習いました。だけど、それと結びつかない…(´Д`;)
>>129
いっしょに頑張りましょう。
0132デフォルトの名無しさん
NGNG自分で関数作って、プログラム中で使ったりできる?
program cal(input,output);
var x,y : integer;
function add(a,b:integer) : integer;
var c:integer;
begin
c:=a + b;
add := c
end;
begin
write('x='); readln(x);
write('y='); readln(y);
write('x+y=',add(x,y) : 1)
end.
0133デフォルトの名無しさん
NGNGこれをDel風に書くと、
function f(x:Integer):Integer;
begin
result := a*x*x+b*x+c;
end;
a,b,cは適当な整数で置き換えてね。
数学では例えば、
f(x)=3x^2-4x+5
と関数fが定義されてたら f(3)=20 ってなるでしょ。
それと同じで、a=3,b=-4,c=5 でPascalで上の関数を定義すれば、
var
i: Integer;
begin
i := f(3);
とやれば変数iに20が代入される。
0134デフォルトの名無しさん
NGNGダブルクリックするとボタンを押したときに動く関数が
コードエディタにでてくるんで
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
そこにButton1.caption := inttostr(add(1,2));
をbeginとend;の間に入れると
procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.caption := inttostr(add(1,2));
end;
それをコンパイル&実行してみてください。
0135128
NGNG0137128
NGNGunit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
function add(a,b:integer) : integer; //ここでadd関数宣言
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
function TForm1.add(a,b:integer):integer
var
c : integer;
begin
c := a + b;
result := c;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.caption := inttostr(add(1,2));//inttostrはint型のデータをstrings型に直す関数
end;
end.
01391 ◆lo8YkeSw
NGNG何度もありがとうございます。implementation節の中の
begin
c := a + b;
result := c;
end;
についてですが、
begin
add :=a+b
end;
と書いてはいけないのでしょうか?
0140デフォルトの名無しさん
NGNGの関数でXやYの値をユーザに設定させるにはどうやったら
いいと思う?
0141129 ◆kudVaLnM
NGNGええ、がんばりましょう。
とりあえず僕は>>53さんのレスを参考にLavelの■を上下左右に動かすことまではできたんで、
次はジャンプさせてみます。。。
0142137
NGNGadd :=a+b
とかいてもイイんですが
最近はresultを使うのが一般的なようです。
cを使ったのは関数内のみで使えるローカル関数の
定義の仕方の参考になればと思いまして付けさせていただきました。
0143137
NGNGスマソ・・・
0145デフォルトの名無しさん
NGNG構造体の作り方は解ります?
0147デフォルトの名無しさん
NGNGにしちゃうと現実的な動きになりすぎてつまらなくなりそう。
マリオだって完全な方物運動じゃないし
0148デフォルトの名無しさん
NGNGまぁ一例だが、Editをフォームにはっつけて、
a := StrToInt(Edit1.Text);
みたいな具合にやればOK。
StrToInt ってのは、その名の通り、文字列を整数に変換する関数。
ただし変換に失敗すると、初心者の恐れる例外が発生する。
間違えてもEditが空白のまま、または変な文字列が入ったまま
ボタンを押さないように。
0149デフォルトの名無しさん
NGNG関数と同様に構造体も理解しておいた方がいいと思う。
0150デフォルトの名無しさん
NGNGPascal風に言うとレコードかな。
type // 型宣言
T性別=(男,女,中性); // これは列挙型
T人間=record // これがレコード型(構造体ともいう)
名前:String;
生年月日:TDateTime;
性別:T性別;
end;
あ、勿論日本語は使えません。
>>148
例外が怖かったら、StrToIntDef という逃げ道もありまっせ、ヒヒヒ。
ま、使い方はヘルプをみてくんな、もし。
0152デフォルトの名無しさん
NGNGって既出か
0153デフォルトの名無しさん
NGNG覚えてからゲームを作る事を考えたほうがいいと思う
0154デフォルトの名無しさん
NGNGんー、でもプログラミングに限らず、なにか物を作るときに
必要な技術を身に付けてから始めようとすると挫折しない?
とりあえず初めて、つまづいたらそれを解決する技術を身に
つけて…の方がいいでしょ。
頑張れ>>1
0155デフォルトの名無しさん
NGNGそれ以前の問題だろ
0156デフォルトの名無しさん
NGNG01571 ◆lo8YkeSw
NGNGinterface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
type
TDateRec = record
Year: Integer;
Day: 1..31;
end;
var
Form1: TForm1;var Record1, Record2: TDateRec;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
with Record1 do
begin
Year := 1904;
Day := 16;
label1.Caption := inttostr(year);
label2.Caption := inttostr(day);
end;
end;
end.
0160デフォルトの名無しさん
NGNGよろしいです。
でも日時を記憶させるには、Delphi標準のTDateTime型(実際はただの実数型)
ってのがあるから、互換性のためにもそっちを使いましょう。
TDateTime型なら、Delphi付属の日時処理に関する多くの関数等が使えて便利
ですよー。2038年問題も無いし。
0161デフォルトの名無しさん
NGNG型宣言(type xxx=yyy;)や変数宣言(var xxx:yyy;)が連続する場合は、
2回目以降のtype,varは省略できますよ。
定数宣言(const xxx=yyy;)も然り。
0164129 ◆kudVaLnM
NGNGタイマー使ってジャンプを実現しようとしたけど,使い方を忘れてる...
ぅぅ,「はじめてのDelphi」をまた図書館から借りて来よう...
でもスレの流れを見てるとタイマー使わなくても逝けてる?のかな...
皆さんありがとうございました.おやすみなさい...
if スペースキー押す then
for x := -5 to 5 do //0.5秒ごとに実行したい...
begin
y := x*x;
if x < 0 then
Label1.Top := 現在の縦座標 - y
else
Label1.Top := 現在の縦座標 + y;
end;
0165デフォルトの名無しさん
NGNGタイマーは制度が悪いから
gettickcountかtimegettimeを使った方がいいよ
0166デフォルトの名無しさん
NGNGそういうふうに xの関数にしてしまうと、途中で動作を変更しようとした時に苦労するよ
xの関数ではなくて 差分方程式とかDDAとかの手法 つまり >>71 のようにしないとさ
0167デフォルトの名無しさん
NGNGx:=x+vx*dt; y:=y+vy*dt;
vx:=vx+ax*dt; vy:=vy+ay*dt;
vx,vyが速度で ax,ayが加速度 加速度一定の条件で 繰り返し実行すると放物線を描く
>>165が言ってるような精度のタイマーは必要ない。なぜならdtの精度は悪くても
これは線形方程式なので誤差はそれほど溜まらない為
ジャンプさせる時は
1、ボタンアクションでvyに数字を代入する=跳ね返ったような跳躍の仕方
2、ボタンを押してる間 xの位置が指定以内という条件で ay:=-5*重力加速度のように
逆加速度を代入する
のようにコントロール出来る
0168129 ◆kudVaLnM
NGNGヘルプで見当たらないなぁって思ったらAPIだったんですね…
ありがとうございます。
>>166-167さん
詳しい解説ありがとうございます。
差分方程式まではそれとなく知ってますが、DDAはわからないです…
アルゴリズムの本一冊読んで出直して来ます…
01711 ◆lo8YkeSw
NGNG>>168
俺はそんな難しいことしてないです(汗
とりあえず、ジャンプしてるように見えればいいと思ったんで。
>>169
RPGは難しいと思いますが、頑張ってもらいたいですね。
>>170
俺より初心者ってことはないと思いますよ(笑
いっしょに頑張りましょう。
01721 ◆lo8YkeSw
NGNGhttp://norisukeup.tripod.com/Project1.zip
→←で横移動、↑でジャンプです。
0173デフォルトの名無しさん
NGNGhttp://game.2ch.net/gamedev/
何故こっちでやらんのかがわからん。
0174デフォルトの名無しさん
NGNGもうそれで完成でいいじゃん
0175デフォルトの名無しさん
NGNGワラタ
0176デフォルトの名無しさん
NGNGあげんなヴォケ
0177デフォルトの名無しさん
NGNG0178デフォルトの名無しさん
NGNGさげんなヴォケ
0179デフォルトの名無しさん
NGNGポインタを覚えた事で一人前のマになったと勘違いして、それを他人に
伝えたくてたまらない黄金厨ですか?
0180デフォルトの名無しさん
NGNGあんたに言われたくないよ
専門学生さん(w
立派な大学行ってから意見しようね
0181デフォルトの名無しさん
NGNGアクションゲームにはスクリプトが必須、 そのスクリプトとスクリプトエディタを
作るには最適だ。
0182デフォルトの名無しさん
NGNGDDDDかDELPHIX使えば
HPS以上にゲーム作りやすくなるよ。
スクリプトエディタは確かに必要だね
0183デフォルトの名無しさん
NGNGこれってタイマー常時ON?
0184デフォルトの名無しさん
NGNG0185デフォルトの名無しさん
NGNGアクションゲームだとタイマーは使えないよ(精度悪すぎて)
0187デフォルトの名無しさん
NGNG大丈夫“まともな”マなら分かってくれるから(泣
0188デフォルトの名無しさん
NGNG0189デフォルトの名無しさん
NGNG・OnIdle
・メッセージループ自作
の2択ですな
別スレッド作るって手もあるか
0190デフォルトの名無しさん
NGNG叩きながらもおせっかいな人たちがアドバイスしてくれること請け合いだよ。
0191デフォルトの名無しさん
NGNGOnIdleの入口で現在時刻を取っておいて、次回更新時刻(現在+1fps)より前だったら
何もしないで抜けるとか?
0192デフォルトの名無しさん
NGNGOnIdleを使うなら、
たとえば>>71のように、更新時間が変わっても動作が同じようになるようなスタイルを使うんじゃない?
0193デフォルトの名無しさん
NGNGそうやったよ。
0194デフォルトの名無しさん
NGNG0195デフォルトの名無しさん
NGNG0197デフォルトの名無しさん
NGNG01981
NGNG>>190
糞スレではありません(笑
0199デフォルトの名無しさん
NGNG?・・謎。デムパ?
・・・才能有りと見た!頑張れ!>1
0200デフォルトの名無しさん
NGNGソースはさらしちゃえ! あと音はワロいますた。
0201当たって砕けろ
NGNGDelphi経験皆無、目標は程遠い。鬱。
とりあえずボタンおいてみよう・・・。
0202デフォルトの名無しさん
NGNGhttp://game.2ch.net/gamedev/
0204デフォルトの名無しさん
NGNG2ケ月くらいDelphi参考書と寝食を共にすると、並のゲームくらいつくれるだろうからさ。
うひひひ
0205デフォルトの名無しさん
NGNGまぢ!?
俺、もう少しで2ヶ月だけど、まだゲーム作るレヴェルじゃない…鬱…
0206デフォルトの名無しさん
NGNG遊びのレシピ買ってこい。
Delphiで各種ゲームの作り方が載ってる。
0207205
NGNG一応言うと、>>203≠>>205なので。(笑)
俺、あんまりゲーム志向じゃないし、本まで買うのは遠慮しておきまふ。
ゲームも作ってみたいけど、素材集めるのが面倒そうで、やる気が起きませぬ。
0208デフォルトの名無しさん
NGNG>素材集めるのが面倒そうで、やる気が起きませぬ。
うん、是非やめてくれ。
0210当たって砕けろ
NGNGと思ったものの、何をすれば良いのかわからず、
オンラインの講座とかをちょこちょこやってるだけの現実。鬱。
0211デフォルトの名無しさん
NGNG貴方は私ですか?(鬱
0213デフォルトの名無しさん
NGNG0214デフォルトの名無しさん
NGNGしなくても作れるけど、やると楽に作れるようになります。
0215デフォルトの名無しさん
NGNGあと入門本手に入れる。ぬるかったらゲーム制作系の入門本。
そして、検索検索検索ぅ!
202で待ち伏せ失敗したことは秘密だよ。
0216当たって砕けろ
NGNGDelphiオフィシャルコースウェア基礎編。
なかなかわかりやすくていいです。これみて頑張ります。
0217デフォルトの名無しさん
NGNGヘルプだけで十分だ!と叫んでみる。
カーソルが指してるアイテムを著癖いつ引けるシステムは感動したけど。
0218デフォルトの名無しさん
NGNG0219当たって砕けろ
NGNGすいません、ヘルプ&講座サイトじゃ理解できませんでした。鬱。
0220デフォルトの名無しさん
NGNG0221デフォルトの名無しさん
NGNG漏れはWinHelpだけで勉強したぞーー!鬱!
ポイントは「目次の順に読む」、これ最強!鬱!
なんか当たって砕けろ君の口癖が鬱っちゃったぞ!鬱!
0222デフォルトの名無しさん
NGNGおんなじ。おんなじ。
なぜかあの時言語仕様の図(名前失念、授業で習ったのに・・・)読めてた。
今読めない。鬱。
0223デフォルトの名無しさん
NGNG0224当たって砕けろ
NGNGすっげえ単純でくだらないけど初Delphi作品!うれしい!けど鬱。
>>221
ヘルプもちゃんと読んでみます。鬱。
>>223
俺もよくわかりませんが、鬱!
0225デフォルトの名無しさん
NGNGそうだ!がんばれ!
試行錯誤によって得られるノウハウこそあなたの最高の栄養です。
(俺の履歴書より)
0226デフォルトの名無しさん
NGNGMIDI音源を純音を出すにはどうすればよいですか?
midioutshortmsgを使って音は出せるよになりました
しかし音色がピアノとかなんたらばっかりで,
昔のPCのようなピーという機械音チックなのが出せません
何か手段があるでしょうか?
0228デフォルトの名無しさん
NGNGアンタはMIDIをFM音源かなにかと勘違いしてる
0229821
NGNGMIDIでは純音をだせないのですか??
FM音源をコードで扱うことはできますか?
音の長さ,音程を操作できるのでしょうか?
それができるならMIDIでもFMでもかまわないのですが・・・
0230デフォルトの名無しさん
NGNGアンタ>226?
純音ってのは正弦波のことでいいのか?
とりあえずGMの音色にはないぞ
GSやXGならあるだろうが(GSはあるのを確認した)
シンセ系の音色をソレっぽく加工しても正弦波は出せないと思うが・・・
0231デフォルトの名無しさん
NGNGとりあえずsin関数で正弦波発生させてwaveOut系のAPIに流せば?
一応「ぽーーーーー」ていう音叉みたいな音が出せるよ。
いわゆる「ぴーーーーー」っていう電子音は方形波の音に近いと思われ。
さらにFFT処理とかすると面白いけど、まぁ難しいんで割愛。
ゲーム作るんならDirectSound使ったほうがいいのかな?
漏れゲームは作った事無いからDirectX知らないんだな・・・
0232226
NGNG231>>
なるほど
ありがちょう
正弦波つくってwaveoutでやってみます
ごいけんさんくすこ
0233デフォルトの名無しさん
NGNG激しく機種依存だけど。
0234デフォルトの名無しさん
NGNG0235藪から棒
NGNGでも今までVBで適当なプログラム書いていた人は性根入れ直してからにしないと。
0236デフォルトの名無しさん
NGNGForm1のpaintイベントで
with Canvas do
begin
Brush.Color := clWhite;
FillRect(0, 0, Form1.ClientWidth, Form1.ClientHeight);
end;
ってやったらダメなんすけど、何でですか?
FillRectって引数がTRectでもInteger * 4でオーバーロードしてると思うんですが…。
0237当たって砕けろ
NGNGでも内容的に見て戦闘にすらなってない罠。鬱。
これをもとにいろいろコマンドとか増やしてみよう・・・。
0238デフォルトの名無しさん
NGNGwith Canvas do begin
Brush.Color := clWhite;
FillRect(Rect(0, 0, ClientWidth, ClientHeight));
end;
で出来たが、、、
>FillRectって引数がTRectでもInteger * 4でオーバーロードしてると思うんですが…。
Pascalではこーゆーいーかげんな事は許されません。
それが面倒と感じるか、律儀とかんじるかは貴方次第。
あと"Form1"ってのはDelphiが便宜上使ってるグローバル変数なんで、余程の事が
無い限り直接参照する必要は無い。
どうせPaintイベントハンドラもTForm1のクラスメソッドなんだから、何も書かな
けりゃ、そのTForm1のインスタンスの ClientWidth が参照される。
>>237
がむばれ!!鬱!
0239デフォルトの名無しさん
NGNGサンクス。
>FillRectって引数がTRectでもInteger * 4でオーバーロードしてると思うんですが…。
どこにも書いてなかった、誤爆スマソ!
最初はClientHeightとかだけにしてたんだけど、それでできなかったからForm1付けてみたんだよねー。
0240デフォルトの名無しさん
NGNG>最初はClientHeightとかだけにしてたんだけど、それでできなかったからForm1付けてみたんだよねー。
なるほど。
でも明示的に、「そのフォームのClientHeightが使いたい!」と書くなら、
Self.ClientHeight
って書くべきですな。
あれ、でもWith do ... の中でSelf使うとCanvasと誤認されて、
「ClientHeightなんてproperty無ぇぞゴルァ」ってコンパイラエラーでるかも。
var
Form: TForm1;
begin
Form := Self;
with Canvas do begin
Brush.Color := clWhite;
FillRect(Rect(0, 0, Form.ClientWidth, Form.ClientHeight));
end;
end;
って書くのが一番正当なやりかたなのかな?
0241デフォルトの名無しさん
NGNGそのメソッドをそのクラスでしか使わないから、「Form1.ClientWidth」でいいかなと思いまして。←言い訳かも…(;´Д`)
Selfってオブジェクトしか参照しないのでは?
だからわざわざクラス型変数Formは使わなくて良いのでは?
ゲーム作るっていっても、何から勉強していいのかわからないなぁ。
とりあえずTCanvasとTStreemをまず勉強しようと思ってますが…。
0242デフォルトの名無しさん
NGNGんー、まぁTForm1のインスタンスを2個以上作るってことは多分無いと
思うから、99.99%それで問題はないんだけど・・・
(もちろん2個以上のインスタンスを作りうる場合だと大問題!)
ま、教科書通り厳密にやるか、スッキリしたソースがいいか、のトレードオフですな。
>Selfってオブジェクトしか参照しないのでは?
TObject-TPersistent-TComponent-TControl-TWinControl-TScrollingWinControl-TCustonForm-TForm-TForm1
ってな具合で継承してるので、TForm1も元を辿ればTObject型、もちろんSelfも使えます。
>TStreem
一応TStreamといっておく。
0243デフォルトの名無しさん
NGNG言い方おかしかったですかね?
Selfにはそれの属するメソッド(今回の場合Form1のpaintイベント)を使用したオブジェクトが参照されるから、
with do...の中でCanvasと誤認することは有り得ないのでは?
ってことだったんですが。
スペル間違えてましたか。
なかなかTStreamが難しくて困ってるんですよね。
>>237
もうRPG作ってるんですか、早いですね。
どんなことから勉強はじめましたか?
参考に教えてもらいたいのですが。
0244デフォルトの名無しさん
NGNGがーーーーーーーーーーーーーーーーーーん。
今までずっとSelfって、TObject型の読み出し専用プロパティで、
そのインスタンスのアドレスを指すものだと思ってた。。。。。
今ヘルプ引いてみたら・・・・違ってるやん。
今晩はLANケーブルで首吊って寝ます。
0245当たって砕けろ
NGNGいや、RPG作ってるわけじゃないです。そんな高度なことできません。鬱。
ただ攻撃ボタン置いたりEditに文章表示させるだけです。鬱。
>どんなことから
変数からやりました・・・。
ひとまずこれだけは押さえておこうと思い。
0246デフォルトの名無しさん
NGNGそうでしたか。
俺もゲーム作りたいのでお互い頑張りましょう。
マジで何からやればいいんじゃー!?( T▽T)
0247無責任だが
NGNGprocedure TForm1.Button1Click(Sender: TObject);
var guid:TGUID;
var objShell : OLEVariant;
var objFolder : OLEVariant;
var objFolderItems: OLEVariant;
var objFolderItem : OLEVariant;
var lk:OLEVariant;
var LNKpath,LNKname:WideString;
begin
LNKpath:='C:\Documents and Settings\Administrator\SendTo';
LNKname:='K2Grep.LNK';
guid:=ProgIDToClassID('Shell.Application');
objShell := CreateComObject(guid) as IDispatch;
objFolder := objShell.NameSpace( OLEVariant(LNKpath)) ;
objFolderItems:= objFolder.Items ;
objFolderItem := objFolderItems.Item(OLEVariant(LNKname));
lk:= objFolderItem.GetLink;
Caption:=lk.Path;
end;
とOleVariantを使って IShellLinkではなくShellLinkObjectを使えばいいのでは?
IDispatchでは遅いという事なら、 ActiveXの取り込みで Shell32.dll を取り込んでおいて
procedure TForm1.Button2Click(Sender: TObject);
var guid:TGUID;
var objShell : IShellDispatch;
var objFolder : Folder;
var objFolderItem: FolderItem;
var lk:IShellLinkDual2 ;
var path,LNKname:WideString;
begin
path:='C:\Documents and Settings\Administrator\SendTo';
LNKname:='K2Grep.LNK';
guid:=ProgIDToClassID('Shell.Application');
objShell := CreateComObject(guid) as IShellDispatch ;
objFolder := objShell.NameSpace(path);
objFolderItem:=(objFolder.Items as FolderItems).Item(LNKname);
lk:= objFolderItem.GetLink as IShellLinkDual2;
Caption:=lk.Path;
end;
とすれば、良いと思う
0248無責任だが
NGNG0249当たって砕けろ
NGNGこ、これがゲームへの第一歩なのかあぁあ?!鬱!
0250デフォルトの名無しさん
NGNG勿論本格的なゲームなら、描画速度とかいろいろ問題になるかも知れんけど
第一歩としてはそれでいいんじゃない。
DirectX使わなきゃ駄目なんだー、なんて思い込んでるといつまでたっても
完成しないからね。
その方法で出来るところまでやってみて、描画速度がボトルネックになってるな、
と感じたらそこを改良して、そのうちソースがぐちゃぐちゃになって、鬱になって
最初から書き直して・・・
そんなこと繰り返してる間に上達して、ゲームも完成していくよ。
ガムバレ、鬱!!!
0251デフォルトの名無しさん
NGNGhttp://pc.2ch.net/test/read.cgi/tech/1004855513/
を参考に(上記スレはVBだが)、Delphiでブロック崩し頑張って作ってたりする。
ちなみに、Delphi使い始めて2週間程度。
とりあえず今はブロックを表示して、ボールがパドルと壁で跳ね返るとこ。
DrawRectでブロック、Shapeで玉+パドルのショボーンなグラフィックだけど。
お互い頑張りませう>同士
0252デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています