1 :
名無しさん@お腹いっぱい。 :
01/11/07 20:26 ID:PFtlmWD9 【参加資格】 ズブの初心者以外お断りです。 なおアドバイス等はプロのかたでも結構です。 初心者は聞く耳を持ちプロもわかりやすく教えてやってください。
ズブです。特に質問はないです。また来ます。
ズブ2号です。おやすみなさい。
4 :
名無しさん@お腹いっぱい。 :01/11/07 20:32 ID:bEnmjzL7
まずはHSPでいいからゲーム一個作れ>ズブ初
6 :
名無しさん@お腹いっぱい。 :01/11/07 20:34 ID:ClGYxpg6
とりあえずコンパイラをダウンロードしてゲームを打ち込みたいと思うのですが 何か初心者にお勧めなソースはありませんか?
7 :
名無しさん@お腹いっぱい。 :01/11/07 20:37 ID:3UOikNmf
テトリス作れ
ダウンロードして入門ページ見た。 いきなりわからないことがある。 mesとprintの違いってなに?
9 :
名無しさん@お腹いっぱい。 :01/11/07 20:43 ID:mfMymfYH
>>6 そのコンパイラとは?
それが分からないとソースは探せないよ。
10 :
名無しさん@お腹いっぱい。 :01/11/07 20:45 ID:BmDeF3mo
11 :
名無しさん@お腹いっぱい。 :01/11/07 20:46 ID:mfMymfYH
>>8 HSP?だったら同じらしいよ、2つとも。
でもみんなmes命令を使うしサンプルなんかもprint命令使ってるもの
は見たことないからmesでやってみれば?
13 :
名無しさん@お腹いっぱい。 :01/11/07 20:53 ID:ClGYxpg6
>>9 ボーランド社のデルファイです.
>>12 失礼しました。これを最後にします。
>>1 自分で削除依頼出すか?それとも俺が出そうか?
mesで"を表示するにはどうするの?
htmlをかじった程度の俺でもデルファイで格ゲー作れるようになるには最低何時間かかる?
20 :
続く :01/11/07 21:20 ID:???
; 茂名娘GP screen 0,640,480,16 objsize 200 mes"2ちゃんねるゲーム" mes"正しいレスを返さないとあぼーんされますよ" mes"問題" mes"逝ってよし" button "オマエモナー", *q1ok button "(;´Д`)", *gameover button "(=゚ω゚)ノぃぃょぅ", *gameover stop *q1ok mes" ビクッ ∧ ∧ ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄" mes" Σ(゚Д゚;≡;゚д゚) < 所詮、削除されるまでの命さ" mes" ./ つ つ \_________________" mes" 〜(_⌒ヽ ドキドキ " mes" .ブッ ω)ノ `Jззз" mes"" mes"嵐じゃないのよ嵐じゃ" stop end
21 :
続き :01/11/07 21:21 ID:???
*gameover mes"/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄" mes"| 削除以来出てますけど。" mes"\ " mes"  ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄" mes" ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄" mes" ( ・∀・) ∧ ∧ < こ、これくらいいいじゃねーか。" mes" ( ⊃ ) (゚Д゚;) \____________" mes" ̄ ̄ ̄ ̄ ̄ (つ 1つ" mes" ̄ ̄ ̄日∇ ̄\ | BIBLO |\" mes"  ̄ ======= \" mes"" mes"スレは大切にね!!" stop
>>20-21 =22
>>4 に反応してつくってみました。
とりあえず
>>12 のQ&Aに貼ると迷惑な気がしてこっちに貼ったけどそれも違うような。
うーん、どうしよう。ソースを貼るスレも趣旨が違うようだし困ったぞ。
>>20 ,21
あのー・・・
それ実行したら分かると思うけど"\n"が無いと
全部の行が画面端まで横並びに表示されるよ。
マニュアル読んで出直してきな。
ってかネタか・・・
>>23 ???
HSPで動作確認してからUPしてます。
つか確かにマニュアルはしっかり読んでないけど変な動きした?
Ruby以外は全てクソ。
>23 所詮はHSPなんて初心者用の言語。 改行なんて自動でやってくれるんだとさ。
Ruby >>>>>>>>>>> HSP
28 :
23 :01/11/07 22:24 ID:???
>>26 あ、そうなんだ・・・thx
厨房言語に憶測レスしたのが間違いだったか・・・
改行も入れずに命令文ズラズラ並べるなんて
微笑ましい光景だね。HSPらしいよ。うん。
程度の低い言語だな。 Rubyマンセー
>>28 あなたも昔はやってたクセにぃ?
N88?Hu?
改行したくない時は;つけなきゃ逝けないよ(;´Д`)
>>26 Javaにもprintln()という自動で改行をつけてくれるメソッドがありますので、
Javaもやっぱ、初心者用の言語なんですね。
つか、RubyRubyとうるさい奴が居るので、言うが、
Rubyにもputs()という自動で改行してくれメソッドがありますので、
これまた、Rubyも初心者用の言語なんですね。
MES" | | |" MES"ー十ー十ー十ー" MES" | | |" MES"ー十ー十ー十ー" MES" | | |" 次は3目並べをつくってみます。
>>28 ソースコード上で別行なのに
出力したら繋がってるなんて
(広義の)インターフェースとしてクソ
いちいち"\n"入れないと改行しないなんて
プログラマに負担掛けるだけの非効率仕様
そんなんで「俺は文字列を自在に操っている!」
とかホザいてたら痛すぎ
34 :
32 :01/11/07 22:56 ID:???
と思ったけどマウスがどこクリックしたかわかる命令が無いじゃん。 ジョイパッドとかに対応させるべきかな。
;途中経過。コマ置けるようにした。 pos 100, 100: button "A1", *a1 pos 180, 100: button "A2", *a2 pos 260, 100: button "A3", *a3 pos 100, 180: button "b1", *b1 pos 180, 180: button "b2", *b2 pos 260, 180: button "b3", *b3 pos 100, 260: button "c1", *c1 pos 180, 260: button "c2", *c2 pos 260, 260: button "c3", *c3 line 170, 60, 170, 320 line 250, 60, 250, 320 line 60, 170, 380, 170 line 60, 250, 380, 250 stop *a1 boxf 60, 60, 170, 170 goto *check *a2 boxf 170, 60, 250, 170 goto *check *a3 boxf 250, 60, 380, 170 goto *check *b1 boxf 60, 170, 170, 250 goto *check *b2 boxf 170, 170, 250, 250 goto *check *b3 boxf 250, 170, 380, 250 goto *check *c1 boxf 60, 250, 170, 380 goto *check *c2 boxf 170, 250, 250, 380 goto *check *c3 boxf 250, 250, 380, 380 stop *check stop
;すでにコマ置いてるところにコマを置けなくした。 ;配列変数を覚えた。 ;次は勝ち判定をつけようとおもう。 pos 100, 100: button "A1", *a1 pos 180, 100: button "A2", *a2 pos 260, 100: button "A3", *a3 pos 100, 180: button "b1", *b1 pos 180, 180: button "b2", *b2 pos 260, 180: button "b3", *b3 pos 100, 260: button "c1", *c1 pos 180, 260: button "c2", *c2 pos 260, 260: button "c3", *c3 line 170, 60, 170, 320 line 250, 60, 250, 320 line 60, 170, 380, 170 line 60, 250, 380, 250 dim ban,4,4 player=2 goto *check
37 :
続き :01/11/08 00:11 ID:???
*a1 if ban.1.1>0: goto *pass ban.1.1=player boxf 60, 60, 170, 170 goto *check *a2 if ban.1.2>0: goto *pass ban.1.2=player boxf 170, 60, 250, 170 goto *check *a3 if ban.1.3>0: goto *pass ban.1.3=player boxf 250, 60, 380, 170 goto *check *b1 if ban.2.1>0: goto *pass ban.2.1=player boxf 60, 170, 170, 250 goto *check *b2 if ban.2.2>0: goto *pass ban.2.2=player boxf 170, 170, 250, 250 goto *check *b3 if ban.2.3>0: goto *pass ban.2.3=player boxf 250, 170, 380, 250 goto *check *c1 if ban.3.1>0: goto *pass ban.3.1=player boxf 60, 250, 170, 380 goto *check *c2 if ban.3.2>0: goto *pass ban.3.2=player boxf 170, 250, 250, 380 goto *check *c3 if ban.3.3>0: goto *pass ban.3.3=player boxf 250, 250, 380, 380 stop *check player=3-player boxf 100,20, 400, 40 color player*100, player*100, player*100 pos 100, 20: mes"player"+player+"の番です。" *pass stop
38 :
名無しさん@お腹いっぱい。 :01/11/08 00:22 ID:Qeo8WtK2
>32 ・マウスの位置 マウスのクリックを監視→システム変数(mousex,mousey)を参照で可能です ・ジョイパッド プラグインで可能ですよ〜
>>38 ありがとうございますm(__)m
実はボタンぺたぺたでつくってました。
これで見栄え良くできそう。
プラグイン使うとココに貼り付けてるやつだけで動かないんでどうしようか思案中
あ、こんなのコピペでやってくれる人はDLぐらいしてくれるか。
よし!使います。
使い方調べなきゃ(^^;
う、その前に3目並べにジョイパットはやりにくかなぁ。
とりあえず遊べるようにしてから悩もう。
ありがとうございました。
;はじめからつくりなおしてみました。 ;すると、あらビックリ!!ひとつ前のよりだいぶすっきりしました。 ;見栄えもだいぶ良くなったし、ひとまず完成!! ;HSPをダウンロードして約7時間ほどでした。早っ!! 次はなにつくろうかなぁ。 今日は眠たくなったので寝ます。おやすみなさい。 ;3moku2.as screen 0, 384, 384 *restart dim ban,3,3 dim col,2,3 cls line 0, 128, 384, 128 line 0, 256, 384, 256 line 128, 0, 128, 384 line 256, 0, 256, 384 *keywait getkey k, 1 if k=1: goto *lclick wait 1 goto *keywait *lclick x=mousex/128 y=mousey/128 if ban.x.y > 0: goto *keywait ban.x.y=player+1 boxf x*128, y*128, x*128+127, y*128+127 repeat 3 if (ban.0.cnt + ban.1.cnt + ban.2.cnt) = ((player+1)*3): goto *win loop repeat 3 if (ban.cnt.0 + ban.cnt.1 + ban.cnt.2) = ((player+1)*3): goto *win loop if (ban.0.0 + ban.1.1 + ban.2.2) = ((player+1)*3): goto *win if (ban.0.2 + ban.1.1 + ban.2.0) = ((player+1)*3): goto *win if (ban.0.0 + ban.1.0 + ban.2.0 + ban.0.1 + ban.1.1 + ban.2.1 + ban.0.2 + ban.1.2 + ban.2.2) = 21: goto *draw player=3-player color player*255, 0, 0 goto *keywait *win mesa="Player" mesb=player/3+1 mesc="の勝利です。" winmes = mesa+mesb+mesc dialog winmes, 1 goto *restart *draw dialog "引き分けです。", 1 goto *restart
41 :
40 :01/11/08 03:02 ID:???
しまった コメントのマーク(;←コレ)つけわすれてる行がある。 あぼーんしておこう。かちゅ〜しゃで。 こんどこそおやすみなさい。
42 :
:01/11/08 03:29 ID:???
>>42 Stringがなければ文字列つかえないようなヤツのこと気にすんなよ。
;コンピュータと対戦できるようにしました。 ;3moku2.as screen 0, 384, 384 *restart player=0 dim ban,3,3 dim col,2,3 cls line 0, 128, 384, 128 line 0, 256, 384, 256 line 128, 0, 128, 384 line 256, 0, 256, 384 *keywait if player=3: goto *com getkey k, 1 if k=1: goto *lclick wait 1 goto *keywait *lclick x=mousex/128 y=mousey/128 if ban.x.y > 0: goto *keywait *setkoma ban.x.y=player+1 boxf x*128, y*128, x*128+127, y*128+127 repeat 3 if (ban.0.cnt + ban.1.cnt + ban.2.cnt) = ((player+1)*3): goto *win if (ban.cnt.0 + ban.cnt.1 + ban.cnt.2) = ((player+1)*3): goto *win loop if (ban.0.0 + ban.1.1 + ban.2.2) = ((player+1)*3): goto *win if (ban.0.2 + ban.1.1 + ban.2.0) = ((player+1)*3): goto *win if (ban.0.0 + ban.1.0 + ban.2.0 + ban.0.1 + ban.1.1 + ban.2.1 + ban.0.2 + ban.1.2 + ban.2.2) = 21: goto *draw player=3-player color player*255, 0, 0 goto *keywait *win mestemp=player/3+1 winmes = "Player"+mestemp+"の勝利です。" dialog winmes, 1 goto *restart *draw dialog "引き分けです。", 1 goto *restart *com rnd x, 3 rnd y, 3 await 1 if ban.x.y > 0: goto *com goto *setkoma
;見た目で気になるところをちょっとだけ変えました。完成です。 ;さて、次は連珠つくらなきゃ。 ;3moku2.as screen 0, 384, 384 *restart player=0 dim ban,3,3 dim col,2,3 cls line 0, 128, 384, 128 line 0, 256, 384, 256 line 128, 0, 128, 384 line 256, 0, 256, 384 *keywait if player=3: goto *com getkey k, 1 if k=1: goto *lclick wait 1 goto *keywait *lclick x=mousex/128 y=mousey/128 if ban.x.y > 0: goto *keywait *setkoma ban.x.y=player+1 boxf x*128, y*128, x*128+127, y*128+127 repeat 3 if (ban.0.cnt + ban.1.cnt + ban.2.cnt) = ((player+1)*3): goto *win if (ban.cnt.0 + ban.cnt.1 + ban.cnt.2) = ((player+1)*3): goto *win loop if (ban.0.0 + ban.1.1 + ban.2.2) = ((player+1)*3): goto *win if (ban.0.2 + ban.1.1 + ban.2.0) = ((player+1)*3): goto *win if (ban.0.0 + ban.1.0 + ban.2.0 + ban.0.1 + ban.1.1 + ban.2.1 + ban.0.2 + ban.1.2 + ban.2.2) = 21: goto *draw player=3-player color player*255, 0, 0 goto *keywait *win mestemp= player/3+1 winmes = "Player"+mestemp+"の勝利です。" dialog winmes, 0 goto *restart *draw dialog "引き分けです。", 0 goto *restart *com rnd x, 3 rnd y, 3 await 1 if ban.x.y > 0: goto *com goto *setkoma
>>42 反論できなければ「むかつく」ですか。ははは。
>>43 「cout << "message" << endl;」でも同じ事だろ。
あぁ、でもこの場合endlが\nと同じようなモンか・・・
要するに文字列をどうあつかうかで「高級言語<>厨房言語」とかいってるのが
オサムイねってことよ。
真性厨房のスレでいい大人が争ってるっていい絵になるね。
HSPってのは簡易命令が多めに入ってる。そん代わりできることが少なめ。これ。 HSPってのはできること減らした分で きちんと開発の早さとか分かりやすさ優位に立ってる。 (外部DLLを使えば大概のことはできそうだが) 欠点増やした分でちゃんと利点を作ってるんだから 厨房言語ってことはないと思われ。
>>48 その厳選された命令がツカエネェって話だと思うが。
特に分岐やループがつかえないし簡単でもない。
50 :
名無しさん@お腹いっぱい。 :01/11/15 19:16 ID:N6GHtlAZ
>>46 言語の善し悪しなんてどうでもいいだろ。
俺だってBASICがなかったら、今の俺は無かったろうさ。
要はモノを作るってことをやり遂げられるかだろ?
その点32は頑張ってると思うぞ。
言語なんてのはその都度覚えていけばいいんだ。
開発環境が変われば言語も変わるんだし。
がんばれ!
>>32
>>50 いい事いうねぇ。
言語の良し悪しをどうこういうヤツはメンドクサガリ屋なんだろ。
どんな事柄においてもね・・・。
52 :
名無しさん@お腹いっぱい。 :01/11/15 19:29 ID:N6GHtlAZ
>>52 本職だったしね。(^^;
#エロげーばっかだったが・・・(鬱
53 :
名無しさん@お腹いっぱい。 :01/11/15 20:11 ID:rfRVyC2P
というわけで、先日delphi落としたんですが、まずどうすれば良いでしょう? メモ帳はなんとか作れましたが、ゲームは良くわからないっす とりあえずbmpファイルはあるんで、それを画面に表示して動かしてみたいです
54 :
名無しさん@お腹いっぱい。 :01/11/15 21:32 ID:RRPopQgu
>>53 Imageコンポーネントをフォームにぺたっと貼って、
Pictureプロパティにイメージを読み込んで、
LeftプロパティやTopプロパティを操作します。
55 :
53じゃないよ。 :01/11/16 01:22 ID:nKarEaJd
>>54 delphiの事はよくわからんが、イメージはなんとなく分かるな。
デバイスコンテキストにbmp読み込んでクライアント領域に張り付けて
表示座標いじるようなもんか。
56 :
名無しさん@お腹いっぱい。 :01/11/16 01:41 ID:ZgDDdgZX
57 :
53 :01/11/16 04:49 ID:lU86qPrA
>>54 ぺたっとやったらできました
これをカーソルキーで表示位置を動かせるようにはできますか?
>>56 なるほど、ちなみに厚さはどれくらいですか?
58 :
名無しさん@お腹いっぱい。 :01/11/16 08:22 ID:P4w93E0K
>>57 コンポーネントのプロパティ凝視すればわかるよ。
top,leftいじってみ。
59 :
53 :01/11/16 08:37 ID:sMi8XlU9
>>58 マジすか?
プロパティだけで[→]キー押したら右に動くようにできます?
直感でフォームのイベントのOnKeyDownの所に名前入れてリターン押したらメッセージが出せるようになったんですが
上下左右のキーで画像の表示座標を変えたいんですよ
60 :
名無しさん@お腹いっぱい。 :01/11/16 09:45 ID:dc03umab
>>59 そこからかい(w
OnKeyDown でキーコード(引数key?)拾って、Image1.left++;みたいな。
61 :
名無しさん@お腹いっぱい。 :01/11/16 09:51 ID:QGZlYshc
>>59 こんな感じでどう?
かっこの中にいれるのは「仮想キーコード」でヘルプ探せばすぐでてくる。
procedure TForm1.Timer1Timer(Sender: TObject);
var
speed: integer;
begin
speed:=8;
if GetKeyState( VK_LEFT ) < 0 then image1.Left := image1.Left-speed;
if GetKeyState( VK_RIGHT ) < 0 then image1.Left := image1.Left+speed;
if GetKeyState( VK_UP ) < 0 then image1.top := image1.top-speed;
if GetKeyState( VK_DOWN ) < 0 then image1.top := image1.top+speed;
end;
end.
62 :
初 :01/11/16 17:46 ID:???
timeGettimeってナニを返してるんですか? 是非受けたいんだすが。
63 :
名無しさん@お腹いっぱい。 :01/11/16 17:50 ID:gGtA8+lG
agu
>>62 Windowsが起動してからのミリ秒を4294967296で割った余り
>>64 ありがとっす。
ゲームで使うときどんな実装のし方していますか?
それともこれ使うのはマズイ?!
t1 = timeGetTime(); 何らかの処理 t2 = timeGetTime(); t2 - t1 で、この処理に要したミリ秒がわかる
67 :
53 :01/11/16 21:52 ID:QAvUh6au
>>60-61 どうも、お二方
で、入力タイマーを適当にぺたっと貼って
61さんのを実行してみた所、最初一秒ごとにしか進まなかったのです
ので、ターマーのプロパティのIntervalを10にしてみたらスススーと行きました
が、このままだと結構ちらつくんですよね
なんとかしたい金曜日です
>>67 procedure TForm1.FormCreate(Sender: TObject);
begin
form1.DoubleBuffered:=true;
end;
end.
69 :
53 :01/11/16 22:02 ID:QAvUh6au
>>68 [エラー] Unit1.pas(38): 未定義の識別子 : 'FormCreate'
ですって・・・
>>69 フォームをダブルクリックする。
↓
form1.DoubleBuffered:=true;と入力。
↓
ウマー
form1ってのはデフォルト名だが変更してればそれに変える。
71 :
53 :01/11/16 22:10 ID:QAvUh6au
>>70 成功です!チラつかないです!
画像の透明色はパレット番号で決まるんですか?
あとキャラの画像が↓みたいにつながってるbmpファイルで
この○の部分だけ表示して、○と◎の部分でアニメーションさせる事はできますか?
┌――┐
│○△│
│◎▲│
└――┘
imagelistが使えそうな予感
imagelistをダブルクリックしたらメニュー開く。 そこであらかじめ画像貼り付けとく。 imagelist1.GetBitmap(0, image1.Picture.Bitmap); で0を1,2,3,4とか変える。
74 :
53 :01/11/16 22:45 ID:QAvUh6au
こんな感じすかね・・・? procedure TForm1.Timer1Timer(Sender: TObject); begin if GetKeyState( VK_LEFT ) < 0 then begin imagelist1.GetBitmap(1, image1.Picture.Bitmap); end; if GetKeyState( VK_RIGHT ) < 0 then begin imagelist1.GetBitmap(3, image1.Picture.Bitmap); end; if GetKeyState( VK_UP ) < 0 then begin imagelist1.GetBitmap(2, image1.Picture.Bitmap); end; if GetKeyState( VK_DOWN ) < 0 then begin imagelist1.GetBitmap(0, image1.Picture.Bitmap); end; Image1.Refresh; end;
向上心のある初心者が多いね。大成するよ。
>>74 キャラクターのアニメーションはタイマーを別にしたほうがよくないかい?
77 :
53 :01/11/16 23:31 ID:QAvUh6au
いろいろと考えた結果、こうなりました。どうですか? タイマー2のIntervalはとりあえず350にしました で、キャラの移動なんですが、61の方法では失敗しました var Form1: TForm1; ch,key,chtim : Integer; procedure TForm1.Timer1Timer(Sender: TObject); begin if GetKeyState( VK_LEFT ) < 0 then key :=1; if GetKeyState( VK_RIGHT ) < 0 then key :=3; if GetKeyState( VK_UP ) < 0 then key :=2; if GetKeyState( VK_DOWN ) < 0 then key :=0; imagelist1.GetBitmap(ch, image1.Picture.Bitmap); Image1.Refresh; end; procedure TForm1.Timer2Timer(Sender: TObject); begin if chtim=8 then chtim:=0 else chtim:=8; ch := key+chtim; end;
CUIのゲームじゃだめ?
>>78 このスレの主旨から言えばなら問題ないと思う。
81 :
53 :01/11/17 03:39 ID:s4sRLZbo
82 :
53 :01/11/17 04:28 ID:???
>>77 の挙動がおかしかったので、ch := key+chtim;を移動させて
ch := key+chtim;
imagelist1.GetBitmap(ch, image1.Picture.Bitmap);
Image1.Refresh;
に修正しました
メインルーチンの位置は基本的にタイマーで良いんですかね?
あと、画像の背景が透過されてるので、画面にゴミが残ります
83 :
53 :01/11/17 04:32 ID:???
84 :
53 :01/11/17 06:53 ID:???
こんな風にしてみました ch := key+chtim; image1.canvas.brush.color:=RGB(128,255,0); image1.Canvas.FillRect(rect(0,0,image1.width,image1.height)); imagelist1.GetBitmap(ch, image1.Picture.Bitmap); Image1.Refresh;
ところで完成したらなんになるの? STG?ACT?それともRPGか?
86 :
53 :01/11/17 22:02 ID:???
RPGが良いなあ
87 :
53 :01/11/18 01:11 ID:zl0z4KJc
マップを規則的に並べてキャラを動かすってのはどうやれば良いんだろう? ロマサガ1のイメージで
>>84 なんの演算子かと思って調べちゃったYO!
Delでしたね。
RPGって結構大変だから、最初はブロック崩しやパックマンみたいな 昔のTVゲームを真似て作るのが良いよ。
RPGはプログラムよりデータ(シナリオ・画像とか)作成の方が大変と思われ
91 :
53 :01/11/18 02:01 ID:uY6igSYu
>>89 そうかもしれないです。ただパックマンもロマサガも
・マップを表示させてキャラクターを動かす
・敵キャラとの接触によってイベントを起こす
みたいな基本的な部分は一緒だと思うんですよ
だから今のレベルじゃパックマンも作れないっす
>>90 ドット絵は毎日コツコツ書き溜めてあります・・・
これをなんとか動かして使ってみたいですよ
RPGっていいかたまぎらわしい・・・
>>92 何とまぎれてるの?
ロケットランチャーなのか、それともAS/400とかのアレか…
94 :
age :01/11/19 01:16 ID:???
age
RealProgrammer
96 :
M :01/11/19 01:34 ID:???
内容: こんなんでよければ公開するよ〜 Cだよ〜 Cは Cmachine が超初心者専用、、現在フリーのBORLANDC++ やVBよりいいって言う人多いDERPHIもコンパイラとしてイケテルよ〜 作成に2時間ほどの宝探しゲームのソース↓ 昔のでしょぼいっス、、 #include<stdio.h> #include<stdlib.h> void main(){ int x,y,kawari,ki,rp=0,dora=60,tka,si=1,i,p,h=0,tokuten=0; int tax[3],tay[3]; x=0;y=0;
97 :
M :01/11/19 01:35 ID:???
do{ do{ tax[1]=rand();tay[1]=rand(); tax[0]=(tax[1]+h)%10;tay[0]=(tay[1]*2*h)%10; }while((x==tax[0])&&(y==tay[0])); do{ do{ printf("進む方向を決めてくらさい。\n"); printf("1:↑\n"); printf("2:↓\n"); printf("3:←\n"); printf("4:→\n"); scanf("%d",&ki); rewind(stdin); switch(ki){ case 1: kawari=y+1; break; case 2: kawari=y-1; break; case 3: kawari=x-1; break; case 4: kawari=x+1; break; } h++; if(dora==0) break; }while((kawari<0)||(kawari>9)||(ki>4)||(ki<1)); if((ki==1)||(ki==2)) y=kawari; if((ki==3)||(ki==4)) x=kawari; tax[2]=tax[0]-x; tay[2]=tay[0]-y; if(tax[2]<0) tax[2]=tax[2]*(-1); if(tay[2]<0) tay[2]=tay[2]*(-1); tka=tax[2]+tay[2]; /////////////////// for(i=10;i>-2;i--){ for(p=-1;p<11;p++){
98 :
M :01/11/19 01:38 ID:???
switch(i) { case -1: if((p==-1)||(p==10)){ printf("|"); }else{ printf("_"); } break; case 0: if((p==-1)||(p==10)){ printf("|"); }else{ if((y==i)&&(x==p)){ printf("◎"); }else if((tka==1)&&(tax[0]==p)&&(tay[0]==i)){ printf("宝"); }else{ printf(" "); } } break; case 1: if((p==-1)||(p==10)){ printf("|"); }else{ if((y==i)&&(x==p)){ printf("◎"); }else if((tka==1)&&(tax[0]==p)&&(tay[0]==i)){ printf("宝"); }else{ printf(" "); } } break;
99 :
M :01/11/19 01:39 ID:???
case 2: if((p==-1)||(p==10)){ printf("|"); }else{ if((y==i)&&(x==p)){ printf("◎"); }else if((tka==1)&&(tax[0]==p)&&(tay[0]==i)){ printf("宝"); }else{ printf(" "); } } break; case 3: if((p==-1)||(p==10)){ printf("|"); }else{ if((y==i)&&(x==p)){ printf("◎"); }else if((tka==1)&&(tax[0]==p)&&(tay[0]==i)){ printf("宝"); }else{ printf(" "); } } break; case 4: if((p==-1)||(p==10)){ printf("|"); }else{ if((y==i)&&(x==p)){ printf("◎"); }else if((tka==1)&&(tax[0]==p)&&(tay[0]==i)){ printf("宝"); }else{ printf(" "); } } break;
100 :
M :01/11/19 01:40 ID:???
case 5: if((p==-1)||(p==10)){ printf("|"); }else{ if((y==i)&&(x==p)){ printf("◎"); }else if((tka==1)&&(tax[0]==p)&&(tay[0]==i)){ printf("宝"); }else{ printf(" "); } } break; case 6: if((p==-1)||(p==10)){ printf("|"); }else{ if((y==i)&&(x==p)){ printf("◎"); }else if((tka==1)&&(tax[0]==p)&&(tay[0]==i)){ printf("宝"); }else{ printf(" "); } } break; case 7: if((p==-1)||(p==10)){ printf("|"); }else{ if((y==i)&&(x==p)){ printf("◎"); }else if((tka==1)&&(tax[0]==p)&&(tay[0]==i)){ printf("宝"); }else{ printf(" "); } } break;
101 :
M :01/11/19 01:41 ID:???
case 8: if((p==-1)||(p==10)){ printf("|"); }else{ if((y==i)&&(x==p)){ printf("◎"); }else if((tka==1)&&(tax[0]==p)&&(tay[0]==i)){ printf("宝"); }else{ printf(" "); } } break; case 9: if((p==-1)||(p==10)){ printf("|"); }else{ if((y==i)&&(x==p)){ printf("◎"); }else if((tka==1)&&(tax[0]==p)&&(tay[0]==i)){ printf("宝"); }else{ printf(" "); } } break; case 10: if((p==-1)||(p==10)){ printf("|"); }else{ printf(" ̄"); } break; } } printf("\n"); }
102 :
M :01/11/19 01:42 ID:???
///////////////// printf("現在地(%d,%d)\n",x,y); if(tka!=0){ printf("タカラ(株)との距離は%dです\n",tka); dora=dora-1; printf("のこりのドラヤキは%d個です\n",dora); }else{ printf("ドザエモンはドラヤキを手に入れた!\n"); dora=dora+5; rp=1; tokuten=tokuten+h; } if(dora==0) break; }while(rp==0); rp=0; if(dora==0) break; }while(si==1); printf("ゲーム叔母ーです\n"); printf("\x1b[34m"); printf(" ___ \n"); printf("ドラヤキ%3d個うめぇ〜 (゚P゚)\n",tokuten); printf(" 〇| |〇 \n"); printf(" 凸凸 \n"); printf("\x1b[37m"); scanf("%d",&si); }
103 :
M :01/11/19 01:45 ID:???
スレよごしスマソ、、、 このソースプラス 、CコンパイラでDOSの宝探しゲームできます。 軽いCMACHINEだかはVECTORにあったかな、、
このスレの誰かのソースを修正してみた…とかじゃないから、 ソースを上げるスレッドの方が適当じゃないかな。もう遅いけど。
>91 <グラフィックデータ編> ドット絵は仮絵(かろうじて何の絵か分かるレベル)でOK。 プログラムがある程度形になってから、きちんと描いたやつに 差し替えよう。音楽・効果音も同様です。 <設計編> 実際のプログラミングにとりかかる前に、データ(マップ&イベント配置・ シナリオデータ・モンスター・魔法・アイテムetc)フォーマットは 曖昧にせず、きちんと決めておきましょう。 自機キャラのパラメータ要素はいろんな場面で必要になってくる ので特に慎重に設計しましょう。 <データ入力編> モンスター・魔法・アイテムのデータ入力は表計算ソフトを使うと楽です。 それをそのまま使うなり、独自形式にコンバートするなり。 マップ入力はマップエディタを使います。手間を考えると、専用エディタ の自作をお勧めしますが、しんどければフリーソフトを探しましょう。 RPG用途だから、マップの配置だけでなく、上位何Bitかに自由に 数字を入れられるものがいいです(そこにイベントの配置を割り当てる)。 やっぱりそれをそのまま使うなり、独自形式にコンバートするなり。 <プログラム編> マップ表示部分を心行くまで作ったら、メニュー処理・戦闘処理・ イベントや会話処理…etc、場面別に一つづつプログラムを組んでは、 マップ表示部分から呼び出せるようにしてあげます。 OPやEDやビジュアルシーンなど、演出を強化する部分は最後に作ります。 予想よりもずっとしんどい作業になると思います。頑張って下さい。
>>93 例えが渋いな・・・
ATMも対戦車ミサイルにしか見えない漏れ・・・
AS400か。去年までRPGでコード書いてたよ(藁
107 :
名無しさん@お腹いっぱい。 :01/11/20 04:31 ID:yODdoyPq
家庭用コンソールの場合は、アセンブラと線形代数できたら就職できるよ。
わけないじゃん。
109 :
:01/11/21 07:20 ID:???
>>23 ハァ?
テメェがマニュアル読んで出直して来い
2週間も経ってからレスすんな。
111 :
53 :01/11/29 01:52 ID:???
サイト回ってなんとなく解ってきたかも・・・
112 :
名前は開発中のものです。 :01/12/16 15:18 ID:0Fpf1AlI
あげ
115 :
名前は開発中のものです。 :02/02/13 00:06 ID:jlORD8b3
C言語でGBのプログラム作ってんだけど %2dを受けつけてくれないのよ 数字を右寄せ表示するにはどしたらいいの?
setw(2)
>>116 cout<<setw(2)<<x;かな?
<iomanip.h>をインクルードしなきゃいけないみたいだけど
インクルードできない
そもそもこんなヘッダ見たことない
119 :
名前は開発中のものです。 :02/03/23 22:24 ID:UKJQHvTc
120 :
名前は開発中のものです。 :02/03/23 23:07 ID:hSR28MHk
121 :
名前は開発中のものです。 :02/03/28 11:50 ID:luhBBlnn
ズブズブの初心者がゲーム作れるまで勉強するスレ
ガバガバの初心者が...(以下略)
123 :
名前は開発中のものです。 :02/03/28 15:54 ID:luhBBlnn
童貞がゲーム作れるまで勉強するスレ
124 :
名前は開発中のものです。 :02/04/22 15:57 ID:fVxmBSA2
残念ながらおれは糞スレ大好きだ
126 :
126 :02/05/10 19:45 ID:OvKq4PFU
再利用カイーシ。 今から俺がゲーム作るまで勉強するのでおまえら見ててください。 目標:DirectX使って3Dゲー(迷路みたいの) 使える言語:Basic, Java, C, C++, いずれもちょっとずつ。 まずは、開発環境からだ! DirectX SDKとBorland C++を落とすよ。
127 :
126 :02/05/10 19:55 ID:OvKq4PFU
Googleがダリっててびっくりしたよ。 はじめたばっかりで悪いけどダウソしながら飯食ってくるわ。
129 :
126 :02/05/10 22:20 ID:OvKq4PFU
おう。インストールはできたっぽい。次だが、 やっぱりHelloWorld系のことをやりたいのだが、まずどこを読むかだな。 MSDNをちょっとさわり読んでみたんだが、わけがわからなかった。簡単なサンプルを 眺めるほうがいいかな・・・ DirectX 8.0 日本語ドキュメントって別に落とさないといけないのかな。 >128 誰もカキコしてくれないかと思った。ありがとう。
応援age でももちょっと丁寧に喋ったほうがレスつくと思われ。
132 :
126 :02/05/11 01:25 ID:???
ヘイ! 俺もずぶの素人だけど、俺の考えをちょっときいてくれ! キャラクターとかの描画処理のしかたなんだけどさ、こんな感じの構造体はどうだろ? struct CHARACTER { int map_x; int map_y; int dis_x; int dis_y; int anime_pic; int anime_max; float anime_index; float anime_speed; int *anime; int visible; } 上四つはそのまま、マップ位置と、画面の描画位置ね。 *animeに動的に確保したメモリの先頭アドレスを渡して、 anime_indexが、何コマ目かを保持する。 アニメのコマ数はファイルからanime_maxに読み込んで、 これが確保するメモリの大きさを決定する。 anime_speedはそのままアニメーションのスピード。 1フリップ中、何コマ進むかを指定する。 anime_picは、画像からどの位置を原点にして読み込むかを入れる。
135 :
126 :02/05/12 22:12 ID:???
うん? 今行列計算の手前のベクトル計算を復習してるんだが、 u=[3,4,0], v=[1,0,0] とすると、内積の式から cosθ=(u・v)/(|u||v|)==3/5 になるが、何かおかしいな。明らかに間違えてる気がする。 何か混乱してきたので恥をしのんでレス。もういちど自分でも考え直そう。
136 :
126 :02/05/12 22:18 ID:???
おかしくないよ(泣 3:4:5の三角形の角度は60°じゃないよ(泣 そんなことも忘れてる…ヤヴァ つぅか余弦求める式すら失念してました。 首吊ってきます。
ヲイ、プログラミングのプの字も知らない漏れがゲームを作るには まず何をしたらいい?
本当にゲームを作りたいのか考える
その次に3年プログラミングを勉強する その間にグラフィックと音楽も勉強する そしてじっくり構想を練る 名づけて「ゲーム作成5ヶ年計画」
140 :
126 :02/05/14 22:37 ID:???
ポリゴンをぐるぐる回せるようになりました。次はテクスチャ。
>>137 漏れの例ですまないが、1年くらい勉強すれば「あれが目指す頂上だ」というのは見える、気がする。
しかし、山はすさまじく高く、目指す頂上ははるかにかすむ雲の上なことに気づく。
見えた途端気力が萎え5年くらい挫折。今に至る。
141 :
名前は開発中のものです。 :02/05/18 23:24 ID:Giz/a7t6
どんなときも〜♪
おまえらすごいです!ヲレもズブでHSPやってるがサパーリ
143 :
名前は開発中のものです。 :02/05/19 00:55 ID:rJhBZc8k
>>126 どう?進んでる? 140のカキコ禿堂だよ
今やってるって事はdirectX8だよね?以前に比べて簡単?
俺directX5時代にD3Dの初期化で挫折したけど最近やる気が出てきたからさ・・・
>D3Dの初期化で挫折 プ
145 :
名前は開発中のものです。 :02/05/19 05:24 ID:rJhBZc8k
147 :
名前は開発中のものです。 :02/05/19 20:56 ID:PKjSaSw.
今日も講座サイトブクマクーしまくり。 いつになったらゲつくれるようになるのやらな。
148 :
:02/05/19 20:58 ID:bVrEC/Ks
??? なにをしていいのかわかりません 最初に何やったらいいですか?
ゲームでもやっとけ
150 :
名前は開発中のものです。 :02/05/19 21:08 ID:14D6m/7M
>>148 どんなゲームを作りたいかのイメージを作るのが大事だと思う。。。
それから、
1.C覚えて(リアルタイム処理のゲーム作るなら
C++は使わないほうがいいと思うな。。。)
2.WindowsのAPI覚えて(本屋で売ってるWindowsプログラミング入門見たいな本で
MFC覚えると、後で大変な事になりますw)
3.DX8覚える。
暇な人なら1年もあればケッコー形にはなると思いますよ。
151 :
:02/05/19 21:11 ID:bVrEC/Ks
>>150 ぅぅっ仕事があるので土日ぐらいしか暇が(以下略
信長の野望みたいなゲームが作って見たいです
>>148 >リアルタイム処理のゲーム作るならC++は使わないほうがいいと思うな
なして?
たぶんCオヤジでしょう。
MFC覚えると大変なことになるってなんだーYO MFCを覚えるのに費やした時間の大部分は無駄になるけど 1 Doc-View(MVC)の考え方 2 悪い設計と実装 3 便利なソケットクラス 4 基本的なUIの設計 が分かるようになるぞ。
155 :
126 :02/05/20 08:44 ID:iujKHjG6
>>143 ビデオカード買ったんだけど、ここ一週間ゲームばっかりやっててしまいました。
一応プログラマの目で見ながらやってるつもりなんだけど…
初期化は簡単でしたーよ。少なくともMSの真似してる限りは。
そろそろ再開しよう。物体をユーザが好き勝手に回すのって実は大変なのかな。
クォータニオンってナンだろう。
>>154 俺はscribbleを何回いじくってもわけがわからなかったのでMFCは半挫折しました。
MFCの正体がもっと早くわかっていればなあと思う。
「SDKに代わる画期的な」とかの煽りを信じ込んでたし(その時2chがあれば…)
今見るとわかる。APIが顔出すんだよね。SetWindowLongとか。
156 :
名前は開発中のものです。 :02/06/04 14:03 ID:GmOTHIoY
>>1 で、結局
>>1 はゲーム作ったのか?
ちょっと見せろ。
157 :
通りすがりのズブの初心者 :02/06/04 22:36 ID:A11NeAUw
かまいたちの夜(またはときめもORバロシン)のような、 選択式シュミレーション(ノベル?)ゲームって、 どうやって作るのですか? フリーソフトで、そういうの作れるやつあるんですか? 本気で初心者なのですが、大まかにで良いのでどなたか教えて下さい。
……って、このスレに出てた「HSP」で検索かけてみたら、 これでも出来るのですね。 自分で調べることもせず書き込んでしまい、本当に申し訳ありませんでした。
1はスレたて屋だよ
>>157 NScripter、吉里吉里、コミックメーカー、DNML etc...
161 :
名前は開発中のものです。 :02/06/04 23:58 ID:YimKkdU.
>>161 「フリーソフトで作れるゲーム」からの誤爆だな。
163 :
161 :02/06/05 00:06 ID:???
誤爆スマソ
164 :
名前は開発中のものです。 :02/08/17 20:45 ID:E+5tyHaP
Delphi使ってゲーム作ってやろうと考えてる厨房です。 ただメモ帳ぐらいしか形になったものができません。 これからゲームの方も作っていきたいと思ってます。 で、マリオみたいなゲームから作ろうかと思うんですが、 あのジャンプってどうやって作ればいいんでしょうか? Imageで画像貼り付けて、ボタン押したらその画像を山なりに動かすヤツです。 サパーリわかりません。誰かご享受頂けないですか?
165 :
名前は開発中のものです。 :02/08/17 21:07 ID:dTYDhk5t
>>164 表示はImageList、ボタンはGetAsyncKeyState
山なりにしたきゃ移動する量を増減しとけ
面倒なら糞っぽくsinカーブだ
重力加速度 ゲーム でGoogleで検索したらそれらしいのでるじゃねーかよヴォケ
167 :
名前は開発中のものです。 :02/08/18 16:54 ID:pXa4T0r0
聖剣伝説のようなアクションRPGを作りたいんですけど、コボルの知識しかないんです。 cをかじってvisualc++5を昔買ったんですけど、ソフト自体使いこなせませんでした。 ちょっとづつちょっとづつ作りたいんですけど、どうしよう?
COBOLERならJavaを勉強するのが良い JB Personalでも落としてきなさい
>>164 ゲーム製作初心者なら……
とりあえず最初に、ジャンプもスクロールも無い、
迷路で動き回るゲームを作るべし。
プレイヤーの動きの処理とか、壁の有無の処理とか、
作ってから考えたほうがいーぞ。
いきなりマリオじゃ、崩れるって。
マリオマンなんですけど
171 :
名前は開発中のものです。 :02/08/20 12:31 ID:Ndzqs1xo
>>169 いや、数当てゲームから作るべきだろ。
ズブの素人には迷路ゲームすら敷居が高い。
>>171 同意
まずは数当てゲームで、ループと条件判断を理解するのが先。
ゲームじゃないところで理解してるんですが。
174 :
名前は開発中のものです。 :02/08/22 14:59 ID:4xp7IqpG
フルカラー(32bit)画面のフェードイン、フェードアウトってどーやれば いいんでしょう。パレットが使えるならそのカラーテーブルを除算して いくだけで済むんですがねぇ。 試しに元画面のピクセル輝度値を一個一個除算して別バッファに保存、 ちゅー 640*480回の割り算やってみたらスゲェ遅くて使い物になりませんですた。
>>174 まぁ〜100万回近くも計算してたらそら重かろう
引き算にしろ
177 :
名前は開発中のものです。 :02/08/22 19:04 ID:H4cbyZTA
思うんだけどさー プログラム初心者に「これをやれ」とかいうのってなんかダメな気がする。 力量に応じたものを作れってことは分かるんだけど、 初心者の時って自分の力量を自分で理解して、 できる範囲内でできうるものでかつ、何か自分だけのアイデアだしてやるほうが 次へとつながる力になると思うんだけど。(やってみると範囲を少し越えてたというのもいい)
じゃああんたはそうすれば?
179 :
164 :02/08/23 10:18 ID:???
とりあえず「DelphiでWindowsゲームを作ろう!」を購入してきますた。 まずは熟読&ソース写す辺りから始めることにします
180 :
けん :02/08/23 15:58 ID:dh8dR5UR
すみません、ズブの初心者なのですが、何から作ったほうがいいですかね? 言語はVBしか分からないのですが・・ 上に書いてあるとおり数当てゲームから作ったほうがいいですかね?
VBはよくわからないし、君がどこまでできるのか分からない。 その上どういったゲームを作りたいのか分からないとなんともいえないけど…。
182 :
けん :02/08/23 16:07 ID:dh8dR5UR
>>180 ゲームを作りたいのではなくて、あくまでもスキルアップしたいということで・・・
それなら当初は数字当てでいいんじゃない? とりあえずヒット&ブローなんてどう? 計算機が用意した数字を人が当てるところまで作れば基礎はできるよ。
184 :
けん :02/08/23 16:24 ID:dh8dR5UR
そうそう、そういうやつ。
186 :
けん :02/08/23 16:34 ID:dh8dR5UR
やってきます
がんばれ。 一通り完成したら、次は自分が興味が持てた部分を拡張してごらん。 プレイヤーが当てるということ自体に興味をもてたら 履歴やグラフといったヒント表示に凝って手書きのメモを要らなくする。 あるいは計算機に簡単な思考ルーチンを搭載して対戦できるようにする。 (実は賢くするのはなかなか難しいが…。) インターフェイスを工夫してみる。 当てる数字の桁を可変にして難易度調整ができるようにする。 飽きるまで拡張を繰り返せばそれなりに遊べるものができるよ。
188 :
けん :02/08/23 17:11 ID:dh8dR5UR
これって正解の数に0XXとか00Xってありえるんですか?
答えから先に書くと、ありえます。 つまり、入力を「数字」として受け取ろうとした場合は ちょっとだけ工夫が必要ということです。
あ、もう一つ追加。 オリジナルのヒット&ブローでは、 正解の数字は、「同じ数字が2回出現しない」ことになっています。 0216、9156、1234などの数字は普通に答えになりますが、 2052(2が2回出現している)、4655(5が2回出現している)は 答えにはならないということです。 もちろんオリジナルのルールなので変更しても構いません。 また、プレイヤーが入力する数字をどこまで許すかはプログラマ次第です。
191 :
けん :02/08/23 17:21 ID:dh8dR5UR
ありがとうございます >2052(2が2回出現している)、4655(5が2回出現している)は のところにはまったく気づきませんでした 改めてがんばってきます
192 :
けん :02/08/23 19:33 ID:dh8dR5UR
あ、偉いなぁ〜。 どうだった? 簡単だった? 拡張したい? それとも他の分野をやりたい?
194 :
けん :02/08/23 20:42 ID:dh8dR5UR
意外と難しかったです ほかの分野にしたいです
exeじゃ怖くてダウソできんばい。
そっかぁ。でも堅牢さを感じさせるなかなか良い出来だったよ。 ん〜、じゃあ次はグラフィックの使い方ということで 神経衰弱なんてどう? あ、そうそう、やるんだったら個人的に私から一つ注文つけさせて。 「カードを整然と並べないこと」。 他の子の作ったものを見てるとカードが整然と並んでて気持ち悪くて…。 バラバラに並べる方法はお任せします。 私だったらバラバラになるように場所を決め打ちしてしまうか、 乱数を使ってバラバラに置くものを作りますが…。
197 :
ano// :02/08/23 20:56 ID:8yLgJfYw
>>150 APIだけでプログラムしようとしたら余計に大変なことになるような・・
あまり賢い人のとる方法とは思えません。
C++でMFC使わないとVC++使ってる意味が全くありませんよ。
スキル上げるんだったらソースごとみせた方がよいべさ
199 :
けん :02/08/23 21:05 ID:dh8dR5UR
>>195 安全です
>>196 神経衰弱ですかーがんばります
>>198 ここに直接載せていいんですかね?
でもVBですしソース汚くてはずかしいんです
どっかにソースを晒すスレがあったべ
202 :
けん :02/08/23 21:22 ID:dh8dR5UR
>197 Windowsプログラミングを覚えず即DirectX覚えてもらうつもりなのでは? Windowsプログラミングしないつもりなら必ずしもMFC覚える必要ないよ。 #そういうのはBCB使ってます。 DX8使うためにVC++使うのもありだと思います。 #両方買うと高つくけどね・・・
なんか応援したくなる人だ。
CやC++の基本だけ出来るようになった人は、 やね氏とかのDirectXライブラリで取りあえず形にするのも1つの手?
とりあえずCもC++も大体使えるようになったんだが
SDKのほうがむずいんですよね・・・
なんで画像ひとつ表示するのにあんなにすること多いんだとか
http://www.kumei.ne.jp/c_lang/ 猫見てるがいまいちわからん・・・もう年か。
ライブラリ使うと本当に簡単に作れるんだが
どうなんだろうなぁ
コントロールつくってたらわかってきたけど
209 :
名前は開発中のものです。 :02/11/27 01:57 ID:93eDrZze
もっといろんな話が聞きたいage
□□□□■□□□□□■□□□□□□□□□□□□□□□□□□□□□ □□□■■□□□□□■□□□□□□□■■■■■■■■■■■■□□ □□■■□□□□□■■■■■■□□□□□□□□□□□□□■■□□ □■■□□■□□□■□□□□■□□□□□□□□□□□□■■□□□ □□■□■■□□■■■□□■■□□□□□□□□□□□■■□□□□ □□□■■□□■■□■■■■□□□□□□□□□□□■■□□□□□ □□■■□□□□□□□■■□□□□□□□□□□□■■□□□□□□ □□■□□□■□□□■■■■□□□□□□□□□□■□□□□□□□ □■■■■■■□□■■□□■■□□□□□□□□□■□□□□□□□ □□□□■□□□■■□□□□■■□□□□□□□□■□□□□□□□ □□■□■□■□□□□■■□□□□□□□□□□□■□□□□□□□ □□■□■□■□□□□□■■□□□□□□□□□□■□□□□□□□ □■■□■□■□□□□□□□□□□□□□□□□□■□□□□□□□ □■□□■□□□□■■■□□□□□□□□□□□□■□□□□□□□ □□□□■□□□□□□■■■□□□□□□□□□□■□□□□□□□ □□□□■□□□□□□□□■■□□□□□□■■■■□□□□□□□
>>197 ゲームプログラムの力を上げている時は逆にMFCの勉強に時間をとられるよりも
実際にゲームのコードを書きまくったほうがいいと思う
プロを目指しているんだったらもちろん不要
とはいえMFCの作りとかプログラマとしては勉強になるわな
>>207 猫とかみて自分でライブラリをつくっていっては?
理解できたとこはもちろん理解不十分でも
実際に動かしてみると意外と簡単だったりする
SDKはただ記述する量が多いだけで実際はお約束の塊だからね
>猫見てるがいまいちわからん・・・もう年か。
自分はある程度年逝ってからプログラムはじめたから気持ちわかる…
若いうちにやっとけばもっと楽だったのになーとか(藁
□□□□■□□□□□■□□□□□□□□□□□□□□□□□□□□□ □□□■■□□□□□■□□□□□□□■■■■■■■■■■■■□□ □□■■□□□□□■■■■■■□□□□□□□□□□□□□■■□□ □■■□□■□□□■□□□□■□□□□□□□□□□□□■■□□□ □□■□■■□□■■■□□■■□□□□□□□□□□□■■□□□□ □□□■■□□■■□■■■■□□□□□□□□□□□■■□□□□□ □□■■□□□□□□□■■□□□□□□□□□□□■■□□□□□□ □□■□□□■□□□■■■■□□□□□□□□□□■□□□□□□□ □■■■■■■□□■■□□■■□□□□□□□□□■□□□□□□□ □□□□■□□□■■□□□□■■□□□□□□□□■□□□□□□□ □□■□■□■□□□□■■□□□□□□□□□□□■□□□□□□□ □□■□■□■□□□□□■■□□□□□□□□□□■□□□□□□□ □■■□■□■□□□□□□□□□□□□□□□□□■□□□□□□□ □■□□■□□□□■■■□□□□□□□□□□□□■□□□□□□□ □□□□■□□□□□□■■■□□□□□□□□□□■□□□□□□□ □□□□■□□□□□□□□■■□□□□□□■■■■□□□□□□□
VC++とEasy Link Libraryっていうライブラリ使って アクションゲームを作りたいのですが、 詰まったところを質問してもいいでしょうか?
そんな質問するならさっさと本題質問しろ
215 :
213 :02/11/27 07:18 ID:hCN74peA
o /  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ / / このスレは無事に / / 終了いたしました / / ありがとうございました / / / / モララーより / / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/ ∧_∧ / /∧_∧ ( ・∀・) / /(・∀・ ) ( )つ ⊂( ) | | | | | | (__)_) (_(__)
217 :
独り言 :02/11/27 19:03 ID:PKAmZtFr
最近Cとかのリファレンス的なものばかり読んでたから 気分転換にHSPとかでゲーム作ってみよっと
λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... λ...... このスレ、終了だって カエロッカ…
219 :
独り言 :02/11/28 11:29 ID:DPm/T1UL
HPS最高!!
_n ( l _、_ \ \ ( <_,` ) ヽ___ ̄ ̄ ) GOOD END!! / /
221 :
名前は開発中のものです。 :02/12/05 22:07 ID:36pDm152
マリオカートの2P対戦とかで、相手(2P)のドット絵を こちら(1P)の視点に合わせてドット絵の向きを切り替えるには どうすればいいのん?
自分(カメラ)の角度を、2Pの角度に足せば良いかと。 ラジアンでもなんでも。 んで、そいつを用意した向きのパターンで割ったので割る(ヤヤコシ…) 前後左右の絵があればラジアンなら90で割る、と。
ラジアンを90で割ったらえらいことになりそうだ
□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□ □□□□■□□□□□□□□□■□□□□□□□□□□□□□□□■□□ □□□□■□□□□□□□□□■□□□□□□□□□■□□□□□■□□ □□■■■■■■□■□□■■■■□■■■■□□□■□□□□□■□□ □□□□■□□□□□■□□□■□■□□□□■□□■□□□□□■□□ □□□□■□□□□□□□□□■■□□□□□□■□■□□□□□■□□ □□□■■■■■■□□□□■■□□□□□□□■□■□■□□□■□□ □□■□■□□□□■□□□■■□□□□□□□■□■■□□□□■□□ □■□□■□□□□□■□■□■□□□□□□■□□□□□□□□■□□ □■□□■□□□□□■□■□■□□□□□□■□□□□□□□□■□□ □■□□■□□□□□■□□□■□□□□□■□□□□□□□□■□□□ □□■■□□□■■■□□□□■□□□■■□□□□□□■■■□□□□ □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□ /) (\ | |∧| | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ /∂ФДФ) < 長らくのご声援ありやとやんした!!!! ||||||||||||||| 雷|||||___ \_________ ※※※| V |____テ ※※\ |==/ ※※\〇| | ※※(___)__)
>>224 /) (\
| |∧| | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
/∂ФДФ) < 長らくのご声援ありやとやんした!!!!
||||||||||||||| 雷|||||___ \_________
※※※| V |____テ
※※\ |==/
※※\〇| |
※※(___)__)
↑こいつかっこいい
226 :
222 :02/12/07 01:57 ID:Do1LLX5j
>223 あれ…なんだっけ… とにかく一週が360度のやつ…スマソ(´Д`;)
/ヽ /ヽ / ヽ / ヽ ______ /U ヽ___/ ヽ | ____ / U :::::::::::U:\ | | /○ ○ ::::::::::::::| | | このスレ | ├──┤ U :::::::::::::| オワッチャッタ・・・ | | 終了い..|U | | ::::::U::::| | | ありがと ..| └―┘ U.....:::::::::::::::::::/ | |____ ヽ .....:::::::::::::::::::::::< └___/ ̄ ̄ :::::::::::::::::::::::::| |\ | :::::::::::::::::::::::| \ \ \___ :::::: 〜 終 了 〜
度数法(六十分法)ですな
========大感動!愛と涙と友情の最終レス======== 〜未だかつてこれほどまでに感動的な 最終レスがあっただろうか?〜 ★このスレッドを読んだ人達の声★ 「何気なく開いたこのスレッドとの出会いから、 新しい自分の可能性を信じようと思った。」(27歳、フリーター、女) 「感動した!勇気が湧いてきた!人生観が変わった! 自分にも何かやれそうな気がした!」(24歳、会社員、男) 「落ち込んでる時にこのスレッドを見つけ、 期待しないで読んだが、読んで涙が出た。」(21歳、学生、女) これほどまでにみなさんに愛されてきたこのスレッドですが、 残念ながら、このレスで終了となってしまいました。 でも悲しまないでください。 このスレッドはいつまでも あなたの心の中で生き続けているのですから…
230 :
名前は開発中のものです。 :03/05/12 23:49 ID:XewRwL3b
テス
232 :
名前は開発中のものです。 :04/01/10 11:09 ID:ENNgku1J
age
233 :
名前は開発中のものです。 :04/01/21 16:32 ID:BODtSELp
当たり判定が出来ませぬ(泣 iアプリでシューティングゲーム作ってるのですが、 自キャラが24*24で敵が12*12の場合、 どういうルーチンになるのでしょうか? 自キャラ、x,y 敵キャラ、ex、ey の変数です。
>>233 大きさのデータを持つのが良いと思います。
javaわかんないのでCでかきますが、
int sxj=8; /* 自機x幅の半分 */
int syj=8; /* 自機y幅の半分 */
int sxe=6; /* 敵x幅の半分 */
int sye=6; /* 敵y幅の半分 */
if ( (x+sxj)>=(ex-sxe) && (x-sxj)<=(ex+sxe) && (y+syj)>=(ey-sye) && (x-syj)<=(ex+sye) )
{
/* あたり処理 */
}
とか。
円同士の判定にしたりなど方法は色々あります。
がんばれー。
235 :
名前は開発中のものです。 :04/01/23 07:42 ID:918ymA03
>>234 >if ( (x+sxj)>=(ex-sxe) && (x-sxj)<=(ex+sxe) && (y+syj)>=(ey-sye) && (x-syj)<=(ex+sye) )
これどういうこと?
思った通りに動かないですが……
左辺・右辺、上底・下底をそれぞれ比較。 左辺より右辺が大きく、下底より上底が大きければ接触。 矩形の四辺の位置関係を調べてるだけ。 式は検証してないけど。 というか、自分がどういう判定をとりたいか頭の中で解析すれ。 四角同士なんて人に聞かなくても図にかいて考えれば解るでしょ。 小学生くらいならしょうがないけどさ。 と徹夜明けで眠いのなか逆切れしてみました。 まじで考える力を身につけてください。
237 :
名前は開発中のものです。 :04/01/23 12:27 ID:918ymA03
>>236 一番最後の
>(x-syj)<=(ex+sye)
この条件の意味は何?
コピペミス。 というか、図でかいて考えてみてくれ。 何と何を比較して、どの条件がそろったときに接触となるかを考えてコーディングしてくれって。 if ( (x+sxj)>=(ex-sxe) && (x-sxj)<=(ex+sxe) && (y+syj)>=(ey-sye) && (y-syj)<=(ey+sye) ) { ] 正しくはこう。
>>238 嘘教えておいてその態度は何だ!
しかも最後は}だろ!細かい事だろと言うなら構わんが
悪かったよ。まじで。 でも、考えれば分かることだと思うんだが。 間違ってかいたのはすまなかったけど、この程度の極当たり前に 使われている判定くらい考えれないとゲームなんぞ作れないと思うが。 一番簡単で原始的なあたり判定だぞ。
241 :
名前は開発中のものです。 :04/01/24 00:21 ID:oMHA4IKY
>>239 このぐらいはいいんじゃないスか?? というか、この程度の事だったら HSPとかのゲームサイト行くといいスよ。 簡単なんで必要な考え方がすぐわかるし。 というかちゃんといろんなスクリプト見て 勉強してればわかってるはずですよ。
座標ってやっぱり、キャラの中心で持っておくのが普通? というのは俺は左上の座標そのままで持つことが多いから。 すぐ相互に変換できるのだが、この例見てたらやっぱり中心で持っておいた方が自然な気がしてきた。
オレはキャラごとに中心座標を設定してるよ。
表示用とオフセット1つと、 判定用のオフセットを配列で数個もって、一つの判定だと不自然になる場合のフォロー。 とか。
HSPってpenIII500でWin98SEでも大丈夫っすかね(´・ω・`)
そんだけあれば十分
C++で 炎や水しぶきなどのパーティクルのやり方がよくわからないんですが どのようにしたらいいんでしょうか?
使用言語の問題ではないと思うんだけど。 パーティクル以外、ビルボードやモデルは表示できる?
ごめんなさい… 本当に初心者なもんで… ビルボードやモデルというのがわかりません…
「英語の文法教えて!ところでアルファベットってなに?」 みたいな感じですな。 DirectX 講座 とかで検索して基本的なところからしっかりやった方が良いと思います。 水や炎はフェイクにせよシミュレートにせよ難易度が高いと思うので、 まずは用語や基礎からドウゾー。
251 :
名前は開発中のものです。 :04/01/27 21:11 ID:7x9u9V4u
Cでシューティング作ろうと思ってるんですが、 マップ(BG)スクロールとか敵出現ってどうやったらいいんですか?
252 :
名前は開発中のものです。 :04/01/27 22:15 ID:SRn/E90g
WINAPIを1から学んでシューつくんのって無謀でしょうか
>>250 勉強しなおしてきます
ご指導ありがとうございました!!
>>251 「ゲーム ビットマップ スクロール」とかでぐぐってみな。
256 :
名前は開発中のものです。 :04/01/28 17:32 ID:f43Jmpgo
環境が整わなくて…。 DirectX使おうにも本買うにはお金がないし ダウンロードには回線遅いしで
>>256 開発環境……は?
言語はわかるの?
もしかしてグラフィクスやサウンドなどのリソースを使うのにWINAPIを使うということ?
相当の知識があれば問題ないけど、1からってならやめておいたほうがいいと思うよ。
グラフィクスを描画するにも、簡単じゃないし。
実行環境と好みの問題があるけど、まさにズブの初心者ならJAVAで試しにやってみるといい。
イメージを描画するのも、
IMAGE img = g.getImage("image.gif");
g.drawImage(img, x, y);
こんな感じで出来たはず…。
画像の知識とかハードウェアの知識とかないなら、こっちは激しく簡単でイイと思うよ。
サウンドもこんな感じで出来た気がするし。
実行環境の問題で速度とか満足できないけど、1から学んで作るってのならこっちのほうが早く作れていいんでないかな?
>>256 DirectXよりは簡単ではないかと思うのだがどうか
259 :
名前は開発中のものです。 :04/01/28 19:48 ID:/PK3qi7G
>>257 そうですか・・・。
ちなみに開発環境はBorland C/C++をBccDevで使ってます。
知識は生半可なんで・・・そうですね、javaも考えてみます。
>>258 DirectXの場合はEL.hを使うなどの手段があるのでそれほど困難ではないと思われます。。
人の作ったライブラリ使うなら、DirectXである必要なんかねーだろう
261 :
名前は開発中のものです。 :04/01/28 20:17 ID:f43Jmpgo
そーいやそーかも
>>256 3DやるんでなければDirectXは不要だよ。
BCBなら、Win32APIで通常のWindowsアプリとして作ればよい。
DirectXではなくDIBやDIBSectionを中心とした描画システムでも十分ゲームは作れるし、そうやって作った経験はDirectXでも役に立つ(というか、先にDIBベースでウインドウやメモリ上のピクセルの操作に習熟しておくと、DirectXで作るのもぐんと楽になる)。
いきなりシェーダまで行くならともかくいまさらピクセル処理はいらなさげ。
なんか、作ってるうちに その場その場で適当に作るせいですごくごちゃごちゃしちゃうんだよ。 こういう場合はなにを勉強したらいいのかな。
「超整理法」とか
266 :
名前は開発中のものです。 :04/01/30 15:52 ID:JB9gE/bP
>>262 ありがとうございます。 早速取り組んでみます。。
>>256 当方ISDNですが、DirectXSDKは気合で落としてます。
270 :
名前は開発中のものです。 :04/02/01 12:58 ID:kirDs/YS
>>269 あなた"残り28時間"なんて表示されて待てますか。 私は無理です。 そんなに暇ではないし、ほっとくにしても他の作業が落ち着いてできないので大変な障害になります。 それに、あなたは「1日中電話を使うな」と言うんですか。
>>270 工夫しる。
ネットカフェは使えない?
学生さんなら学校のPCは?
本は高くとも、例えば雑誌のおまけなんかは?
友人にブロードバンド回線を使っている人はいない?
試してないことは一つも残ってない?
272 :
名前は開発中のものです。 :04/02/01 14:04 ID:kirDs/YS
というか、前のレスを見ればわかる通り、DirectXはもう必要ないんですけど。 ちなみに、友人はシロートばかり、学校はそんなことをさせてくれないしCDも焼けないし、ネットカフェなんて近くにないです。 雑誌?? 金がないことは先に述べました。
小中学生か
274 :
名前は開発中のものです。 :04/02/01 14:22 ID:kirDs/YS
中高生です
高校生か。 友人はシロートばかりって・・・。 蒸し返すようで悪いけど、DirectXの方がいいと思うけどね。 お金も環境もないなら厳しいのは確かだけど。 28時間とでても、ダウンロードソフトが使えるなら落とした方がいい。
>>272 文句いってりゃ誰かが解決してくれるという基本姿勢の奴に
物作りは無理だよ。
自分の判断の正しさを声高に主張して、それで作業が進むのか?
与えられた材料の中で工夫するしかない。
277 :
名前は開発中のものです。 :04/02/01 14:58 ID:kirDs/YS
せっかくのアドバイスなんですけど、いま、電話が使えないとマズい状況なんで…。 そのうち小遣いをもらえると思うんで、それを待ちたいと思います。
278 :
sayuki :04/02/01 15:05 ID:taN65quc
誰か分かる人いたらお願いします。 yahooメッセの「話す押しっぱしなしツール」とゆうものをインストールして以来 ゲームをすると効果音(wave)かBGM(synthesizer)どちらかひとつしか音が 鳴らなくなってしまいました(アセ ゲームするだけなら音なしでもいいと思うんですが、 作っているので音の確認が出来なくて困ってます。 誰か分かる人がいたら教えていただけると助かります(>_<)
279 :
名前は開発中のものです。 :04/02/01 15:06 ID:kirDs/YS
>>276 前のレスもちゃんとみてください。 その与えられた環境のなかでやるといったはずです。 余計なことをいって話をかき乱さないでください。
>>279 全部読んでるけどね。
自分が自分のためにやりたいんでしょ。
他人がわざわざしてくれたアドバイスに食ってかかってどうなるっていうの?
という意味だったんだが。
どうも君のセリフは他人の為にやってあげてる人のセリフに聞こえるんだが。
281 :
名前は開発中のものです。 :04/02/01 17:10 ID:PGuD5iiA
>>280 あなたは国語力が欠如している。
私は始めから「DirectXが使えないのでWin32APIでがんばる」といっていたはず。
それに「作業が進むのか」だって?
あなたは私の作業をみてたんですか。
どんだけ進まなかったのか言ってごらんなさいよ。
>>272 についても、私はWin32APIを使って作業するということを前提に、
DirectXの使えない理由を説明していたんですよ。終わった話を穿り返すなってね。
文章を見ればわかりますよね。それがダダをこねて何もしないでいることに
なるんですか。Win32APIで作業しちゃいけないんですか。
それでもあなたは私がなにもしないでグダグダいっていると言うわけだ。
ずいぶんとおかしなことを平気で言うんですね。
ゲームつくぅろぉう
283 :
名前は開発中のものです。 :04/02/01 17:16 ID:kirDs/YS
ごめんなさい、熱くなりすぎました。
>>281 お前は文盲か?
どう考えてもお前が悪いだろ
>>あなたは私の作業をみてたんですか。
>>どんだけ進まなかったのか言ってごらんなさいよ。
ん?お前ID:kirDs/YSなのか?。携帯からごくろうさん(ゲラ
>>なるんですか。Win32APIで作業しちゃいけないんですか。
>>それでもあなたは私がなにもしないでグダグダいっていると言うわけだ。
280は32APIで作業するなとか言ってないだろ?どこをどう捉えたらこうなるんだ?
さらに280は御丁寧に「他人がわざわざしてくれたアドバイスに食ってかかってどうなるっていうの?」
って言ってんだろ?そろそろ自分のウンコを肥料代わりに顔に塗ったらどうだ?
人に物教わる態度じゃないよ、
まぁ環境に拘ってんだか拘ってないんだかわからんが、 高校生ならツクールにしとけば? 君が成人する頃にはだいぶこの世界変わってるから、今マジにやらんでも多分いいよん
286 :
名前は開発中のものです。 :04/02/01 17:44 ID:I0fBvvjS
JAVAでゲーム作ってみれば? C++より簡単っしょ
質問しておいて答えが気に入らなかったら暴れだす奴って結構いるのな。 避難所の旧シューティングスレにも定期的に現れてたし(同一人物じゃないだろうけど)。 というか、何時も思うんだけど、みんななんでそんな電波君を親切にも相手するの? スルーしとけって。
289 :
名前は開発中のものです。 :04/02/02 20:47 ID:qCykuM3X
ずぶの素人です。 ターン制RPG作るのって何が必要ですか? チョコボの不思議なダンジョン2のようなのを作りたいです。 まじめに作りたいんでマジレスお願いします。 できる言語はHSPちょっとだけと、Cは勉強中です。 どんな言語覚えればいいか、でもいいんでアドバイスよろ
>>289 言語はオブジェクト系なら何でも良いと思うぞ。
ターン性RPGなら、どっちかというと、
どんな流れで何をどうするのか?という設計の方が大変だと思うが。
Cの勉強してるけど、 ポインタと引数戻り値が絡んでくると訳分からんくなる。 この辺ってそんなに重要?
>>291 つまりコンピュータがなんたるか、まぁコンパイラが何やってるか理解してないってことでしょ。
293 :
289 :04/02/02 23:39 ID:qCykuM3X
分かりました。 とりあえずC覚えてやってみます。
294 :
名無し募集中。。。 :04/02/03 00:09 ID:plKD59at
VCを買ったはいいけど、ゲーム作るのに全く役に立たないと感じるのは俺だけ?
ぶっちゃけ、素人はポインタなんて使わずに グローバル変数使いまくって、関数なんて作らずにgoto使って とにかく描画関係だけに注力したらいいんじゃないの、とか思ったんだけど それじゃCとか使う意味ないよな。
296 :
オレー :04/02/03 00:20 ID:lqBJLK7t
>>294 VC最強だろ!!!!??他のしらねーけど!
慣れれば何でも作れるぞ!!ガンバレよヴォゲ!
297 :
名無し募集中。。。 :04/02/03 00:38 ID:ZZoWZizL
ゲームを作るときMFCとか使い道があるのかな?
298 :
オレー :04/02/03 00:45 ID:lqBJLK7t
>>297 ツール作る以外、ほとんど無いんじゃね?
VCがいいのは、MFCとかじゃなくて一般的に使われているからだ!
なんか他の環境だと悩み多そうだからな!
Cだけじゃゲームってできないんですか? SDKってやつを使わないといけないのだろうか。
300 :
オレー :04/02/03 00:58 ID:lqBJLK7t
>>299 そう考えていいだろうな!
Cだけってどこまでかシラネーけど、システムにふつーについてるAPI使っても絵かけるぞ。
でもグラボの3D機能使ったり、高速に描画したいならばDirectX使うしかねーよ!
>>291 難しいのでなくてややこしいのです。
紙と鉛筆でコンピューターのやる処理を真似っ子してみてください。
脳味噌が最適化され理解がすすみます。
302 :
名無し募集中。。。 :04/02/03 02:29 ID:QGiQp3Rb
Directxの記述量の多さに圧倒されました。VCを使ったら、記述量を減らせるとか、何か恩恵があるんでしょうか。VCの神様教えてください。
>>302 設計が悪いんだろう。
>>295 の裏返しだけど、
そこを関数で整理するのが利点かと。(vcじゃなくてc全般の話だけど)
305 :
名無し募集中。。。 :04/02/03 06:15 ID:7JKJyNuW
いまいちわからないんですが、VCからdirectxを使うと雛形を作ってくれるとかそういった機能はないんでしょうか。
無いよ!
>>305 俺は使わんけど、DirectXインスコするとVCのAppWizardにDirectX用の奴ができるでしょ。
激しく要らんけど、もしかしたらズブには役に立つものだったかもしれないという記憶があるようなないような
こだわらないならJAVAから初めてもいいんじゃない? iアプリとかもあるし 3DだってGL4JAVAとかJAVA3Dもあるし 必要になったらC++に移行すればいいべ
こだわらないならHSPで十分
310 :
オレー :04/02/03 20:31 ID:VYXMEMW7
VC買ったんだろ???わざわざJAVAからやる意味ねーと思うけどな! 第一、記述量大杉とかって、オマエラはゲーム製作をなめてるな。
オレーは3Dのレースゲー作ってんだもんな。 すごいよお前。
312 :
オレー :04/02/03 23:30 ID:VYXMEMW7
俺も最初はサンプルいじくってたぞ! 理解力とかより、膨大な作業をしつこくやる能力が大事なのだ!!ってことでがんばろーぜ
今ネレーがいい事言うた。
314 :
ネレー :04/02/04 20:09 ID:HzAYdwYd
ゲームは一日一時間!
315 :
オレー :04/02/04 20:51 ID:fS3mIMsY
ネレーじゃねーよ
317 :
オレー :04/02/04 21:37 ID:fS3mIMsY
三桁の数字の1桁目とか二桁目を引数に入れたい場合ってどうすれば(・∀・)イイ?
>>318 1桁目 = 3桁の数 % 10
2桁目 = (3桁の数 / 10) % 10
320 :
名前は開発中のものです。 :04/02/04 23:36 ID:8ShUWIq1
>三桁の数字の1桁目とか二桁目を引数に入れたい場合ってどうすれば(・∀・)イイ? これを使った何をしたいかが謎
>>319-320 #include "iostream.h"
#include "stdlib.h"
#include "time.h"
class kazuate
{
private:
int number[3] ;
public:
kazuate(){srand((unsigned) time(NULL)) ;};
~kazuate(){} ;
run() ;
};
int kazuate::run()
{
int iGetnumber, iHit, iBlow, iPlaytimes ;
kazuate answer ;
answer.number[0] = rand() % 10 ;
answer.number[1] = rand() % 10 ;
answer.number[2] = rand() % 10 ;
kazuate input ;
iPlaytimes = 1 ;
for(;;) { iHit = 0 ; iBlow = 0 ; cout << iPlaytimes << "回目ですよ"<< endl ; cout << "3桁の数字をいれてくらはい"<< endl ; cin >> iGetnumber ; if(iGetnumber >=1000){cout<<"3桁じゃなきゃ駄目!。終了"<<endl ;return 0 ;} input.number[0] = iGetnumber % 10 ; input.number[1] = (iGetnumber / 10) % 10 ; input.number[2] = (iGetnumber / 100) % 10 ; for(int i = 0; i <= 2; i++) { if(answer.number[i] == input.number[i]){iHit++ ;} } for (i = 0 ; i <= 2 ; i++) { for (int j = 0 ; j <= 2 ; j++) { if (i != j && answer.number[i] == input.number[j]) {iBlow++ ;} } } if(iHit >=3){cout << "正解" << endl ;return 0 ;} cout << iHit <<"ヒット "<< iBlow << "ブロー"<< endl ; iPlaytimes++ ; } return 0 ; } int main() { kazuate kazu ; kazu.run() ; return 0 ; }
(・∀・)アヒャtabが全部消えちった
イカレテヤガル…
325 :
名前は開発中のものです。 :04/02/06 18:44 ID:FVcGO3fs
HSPとデルファイでのプログラムは簡単だったのにC言語のプログラムはすごく複雑ですね ウインド1つ出すだけでもたくさん書かないといけないし難解です C言語でごく単純なゲームをつくりながら詳しくプログラムを解説してるお勧めサイトがありましたら教えてください
(・∀・)イイヨイイヨー!
>>325 発想が逆だよ。
ウインドウを出すだけでじゃなくて、ウインドウを出すのが一番大変なの。
だけど、初心者はコンソールアプリいやがるから、しょうがなくC言語の本とかで最初の方に出てくる。
あんなもんみたらズブの初心者は面食らうに決まってるさ。
でも理解しなくていいんだよ、丸暗記で十分なのです。めんどくさいのはそこだけです。
ていうかサンプル見てもファイルの数が多すぎて理解できない。
331 :
名前は開発中のものです。 :04/02/06 23:55 ID:FVcGO3fs
>>328 初心者の私には丸暗記も無理っぽいのでコピペで済ましてしまいそうです
半端じゃなく設定が細かいのでプログラム全体の流れが掴みにくいです
メイン関数内はウインドウの設定するところで
ウインドウプロシージャはゲーム動かすための条件分岐とかを書き込む所と思っていいのでしょうか?
332 :
名前は開発中のものです。 :04/02/06 23:57 ID:HdQ5e5TB
俺は今、ゲームが作りたいので作ることにした。 とりあえずデルヒをダウンロードしてインストールした。 フォームにボタンつけた。 実行してみた。 動かない。 なぜ?
333 :
名前は開発中のものです。 :04/02/07 00:14 ID:zFTP1vLo
>>330 今はc言語に関して全くの素人で0からc言語学習したいと思っいます
ゲームといってもc言語の知識がまったくないのですごくシンプルでなゲーム
(テンキーで自機動かしてスペースでミサイル発射、敵に一回命中すればゲームオーバーなどの単純なゲーム)
のプログラムを参考にしたいです
開発ではなくVisual C++ .NETでc言語に少し慣れたいと思ってます
334 :
名前は開発中のものです。 :04/02/07 09:07 ID:v/xUHw+o
335 :
名前は開発中のものです。 :04/02/07 14:18 ID:K1FCp2hB
プレイステーション上でスーパーファミコンを動かすエミュって どうやって作るんですか?
そんなこと聞いてどうするの?
337 :
(めдめ*) :04/02/07 15:07 ID:21YEQZs/
X座標とY座標、半径を指定したら、 お花のマークを描く関数を作りたいんですが、なにぶん数学が苦手なもので、 サインとかコサインとかもさっぱり分かりませんん。 どなたか作ってはいただけないでしょうか。 花びらの枚数は5枚で、SetPixelで・・・と、思ってるんですが・・・。VC++です。
339 :
(めдめ*) :04/02/07 15:19 ID:21YEQZs/
>>337 あっ、すみません、クレクレではなくて、
どうやって作るのか、ヒントだけでも、教えていただきたいのでした。
Ecllipse()、Arc()等のAPI関数を調べて試行錯誤してくれ。 普通は絵を表示するのにSetPixelなんて使わないよ。
341 :
(めдめ*) :04/02/07 15:55 ID:21YEQZs/
>>340 えっ、そうなんですか?
すみません、最近始めたので、一般常識とか分からなくて・・・
そのAPI関数って、円やパックマンみたいな図形を描くやつですよね。
それらは講座で見て知ってたんですけど、花を描くアルゴリズム?の方が分からないんです。
板違いですかね・・・一応ゲームで使おうと思ってるんですが・・・
放っていってもいろいろ有るだろう。 丸に半円がついた(テストにつけるはなまるみたいな)やつから写真まで。
×放って ○花って
344 :
(めдめ*) :04/02/07 16:06 ID:21YEQZs/
>>342 すみません、言葉足らずでした。
えーと、簡単に言うと、MSペイントだけで描けるような、
五角形に、正確におさまる感じの・・・
なんて言えばいいんだろう、フォントのサイズを最大にして、アスタリスクを表示すると、
お花に見えますよね・・ああいう感じで、花びら5枚にしたいんです。
説明下手で、ホントすみません・・・
C言語はいいけど WINDOWS API とかなんとかいうやつムズすぎ・・ 天才でもない俺が、んなもんできるか!!
てかC言語がわかってりゃむずすぎってこたないだろ
>>347 1番上となる花びらは描けるんですけど(多分)、
残りの4枚の座標を、どうやってだしたらいいのか、分からないんです。
基となる図形の、五角形すら描けないんですよね・・・プログラムではなくて、紙とペン、定規で。
で、まず、中心となる(X,Y)から、それぞれ5点に向かった線だけ描こうと思うんですが、
それにはどういった計算が必要なんでしょうか・・・?
>>348 花びらの部分って正葉曲線が使えないか?
>>349 正葉曲線って初めて聞いたんですけど、ググってみたら結構ヒットしますね。
確かにこっちの方が、最初に考えていた花の形に近いです。
VBでソース公開しておられる方もおられるみたいなので、ちょっとこちらで勉強してみますね。
ありがとうございます!
出来ました!!!
sinやcosなど出てきて、理屈はイマイチ分かってないかもですけど、
とりあえず表示は出来てしまったので、(本当は良くないだろうけど)良しとします。
また暇なときにでも数学を勉強して、ちゃんと理解したいと思います。
xFHMm5Bmさん、
>>349 さん、どうもありがとうございました!
352 :
名前は開発中のものです。 :04/02/07 19:07 ID:BCMAqWn3
>>334 そんな感じのゲームです
ソース見てみましたが全然わかりません
難しいです
ゲームプログラミングでググるか、本買え。
355 :
名前は開発中のものです。 :04/02/08 00:05 ID:V4CrTBaC
ゲーム製作ツールの紹介サイトみたいなのありませんか? 2,3年前挫折したツールが一番使いやすかったかもって思って探してみたんですが なかなか見つからないんです
おいおまいら、音楽製作ソフトよさげなの教えろ! ウソです.。どうか教えてください_| ̄|○このとーり
357 :
333 :04/02/08 04:38 ID:CoCrlWqN
なかなかいい解説サイトがみつからないな〜
358 :
名前は開発中のものです。 :04/02/08 07:49 ID:fe0e/CMI
>>357 最初は本が手元にあったほうがよいよ。
プログラミングWindowsとあとはごく基本的なゲームプログラミングの本。
borlandのコンパイラ使ってるんですけど なんかウインドウ表示とかのサンプルをコンパイルできないんですが・・・ なんで?
「モーション」って何ですか? 「イベント」って何ですか? 上記検索してもいっぱいヒットしすぎてわからないです。
3DCGとWindowsのプログラミングを基礎から学びなおせ。
>356 あんまりレスになってないかもしれないけど。 GarageBandがなんかすごく簡単でいいらしいって聞いた。 そんなに高くないし、お小遣いためて買おうかなぁ。
363 :
356 :04/02/08 16:28 ID:HcNW0j0y
14歳の人サンクス
>362 何だ。さっくり教えてくれるのかと思ったのに。
良く分からないものをむやみに使うとお腹壊すョ
いや、使うというか話についていけないんです。 会議の。中途でゲ会社に入ったんですけど。 話が見えない・・・。
じゃぁ、離乳食から一刻も早く卒業できるように 噛む練習をするのが良いと思うなぁ。 いつまでも離乳食はつらいっしょ。
おっぱいハァハァ
>364 さっくりって言われても……ごめんね。マジあんまり知らないんだ。 誰もがレコポ使ってた頃はこういうの悩まなかったんだけどね。
370 :
333 :04/02/08 23:06 ID:i0uC/ppX
>>358 インターネット上の資料でなんとかしたいんです
>>370 <いいサイト>の評価基準を述べよ
ゲームで釣りつつ適当な解説でお茶を濁すようなものは
書籍ぐらいでしか見当たらないよ
あとは猫とか
372 :
名前は開発中のものです。 :04/02/08 23:50 ID:i0uC/ppX
>>371 ウインドウにキャラクターのビットマップを表示させて
テンキーで上下左右に動かすみたいなシンプルで飾り気のない単純なプログラム
を使って、解説してるようなサイトなんですけど
見つかるまでは猫を参考にして学ぼうと思います
>>369 そうでつか。ありがとうございました。
恥をしのんで会社の人に聞いてみまつ。
374 :
333 :04/02/09 03:38 ID:dgv0YHUG
どんな環境でどんなエラーが出たか、を書きなよ。 どこで質問をするにもそれくらいは書かないと流されると思うが。
376 :
333 :04/02/09 05:11 ID:dgv0YHUG
Visual C++ netで この行に myProg.hbrBackground =GetStockObject(WHITE_BRUSH); : error C2440: '=' : 'HGDIOBJ' から 'HBRUSH' に変換できません。 'void*' から非 'void' 型への変換には明示的なキャストが必要です。 ってエラーがつきました
377 :
オレー :04/02/09 05:14 ID:LbK50eNj
>>376 明示的なキャストしてみたらどうだ?
myProg.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH);
とか
378 :
名前は開発中のものです。 :04/02/09 05:19 ID:dgv0YHUG
>>377 ありがとうございます
ちゃんと実行できるようになりました
379 :
名前は開発中のものです。 :04/02/09 05:28 ID:Yiz201vx
Cを勉強したいのですが、サイトや本などオススメを教えてほしいです。 私はパソコン暦1年目で、ワードやエクセルもわからない人ですが、、、 がんばって、マスターしていきたいと思ってます。 それと質問ですが、Cはソフトウェアが必要なのでしょうか? 昨日Cの存在を知った未熟者です・・・レス待ってます^-^
>>379 本
新訂 新C言語入門 ビギナー編
著 林晴比古
サイト
ttp://www.kumei.ne.jp/c_lang/ >Cはソフトウェアが必要なのでしょうか?
必要です。
プログラムソースから実行ファイル(exe)を生成するのに
”コンパイラ”というソフトが必要。
市販コンパイラなら
Visual C++.net
タダなら
Borland Compailer
がオススメ。
大変かもしれないけど頑張って。
383 :
名前は開発中のものです。 :04/02/09 11:44 ID:Yiz201vx
384 :
383 :04/02/09 15:32 ID:PM9gYJwg
385 :
356 :04/02/09 15:49 ID:PAej/ELB
386 :
356 :04/02/09 16:02 ID:PAej/ELB
VC++.net 2003+DirectXの解説サイトってありますか? VC++6.0の解説サイトなら腐るほど見つかるんだけど…
389 :
382 :04/02/09 21:16 ID:r5i6CdtX
>>384 釣師に釣られる覚悟で。
電気回線を挟めど人と人との基本的なマナーも守れない。
一人で充分に言語の習得は出来ないにも関わらずだ。
そんな調子でプログラム言語とうまく付き合えるのかね?
390 :
383 :04/02/10 06:49 ID:GUZ5KeqK
私は383ですが、384は私になりすました人だと思います・・・
みんな頑張ろうぜ!
確かに6時間以上ID変わってないのに ID変わってるし名前欄をわざわざ入れてるのは・・・ですね。 (マルチは・・・少ないに越したことはないですが
394 :
333 :04/02/11 02:46 ID:APap8/zE
もうできないからツクールの自作戦闘で我慢しよう・・・。
俺はツクールの自作戦闘もできないぞw これって無謀かなぁ・・・
397 :
名前は開発中のものです。 :04/02/14 21:43 ID:tiSnmUSv
二点間の角度をもとめるにはどうすればいいですか?
>>397 ある点から二点をそれぞれ結んだ2本の線分の角度って事だろ。
座標分かってんだから内積使っとけ。
400 :
397 :04/02/15 02:06 ID:Y3Owx8fK
>>399 内積をどう使うのですか?
数学苦手なもので…
vector A vector B A・B = |A||B|cosθ ココからcosθを求めて使え。
cosθ=(x1*x2+y1*y2)/√{(x1^2+y1^2)*(x2^2+y2^2)} かな?自信ない
これじゃ原点からだった・・・・orz
404 :
397 :04/02/16 02:38 ID:nRcHbn7i
>>398 ,399,401,402さん、ありがとうございます。
なんとかやってみます。
>356,364 おすすめだけしておしまいっていうのもアレなのでGarageBand買っちゃいました。 ほんとは自分が欲しかったんですけど♪ ……ああ、でもこれで当分おやつ抜きだわ。
とりあえずぺたぺた貼っていけばなんかそれっぽい音楽になることが判明! 簡単です。値段から考えたらかなりお買い得だと思う。 Midiで吐けないのがちょっと難かな。用途次第だけど、Midi欲しいよねえ。 値段考えると文句言えない気もするけど。 打ち込みはあんまり得意そうじゃないので、主旋律入力にはマイクがいるみたい。 楽器って言っても、鼻歌でいいっぽいけど。 ウチにあったマイクは電池切れで試せませんでした。残念。 以下、わが家の会話。 「ね、ね、どう? わたしの曲。一時間で作ったの♪」 「……終わり方だけはそれっぽいわね」 「そう?そうかな?じゃあ、これ2ちゃんにアップしようかしら」 「叩かれて鬱になるわよ」 ……わたしに音楽の才能はなさそうです。ってゆうか、そんなにはっきり言わなくてもさー。
>「叩かれて鬱になるわよ」 ワラタ。 2chに理解のある家族なんか(・∀・)イイ!!ね 数を積み重ねりゃそのうちいいのできるさ。 がんばれー
408 :
名前は開発中のものです。 :04/02/17 10:34 ID:hqb34U7d
取り合えず今日中に何か作りたいから教えて 使用言語java GUI:CPad for Java2 SDK コンぐらいしかわかんねぇ、それでもヒソヒソ教えてくれる人居ますか? 当方、Cちょっと理解可能、javaはほとんどわからん オブジェクト指向っぽく作りたいです
あと三十分だけどがんばれ〜♪ わたしも今日こそはもう少しバカにされないものを……!
なにかってのを突き詰めていこうとすると、なにも作りたくなくなるんだよね。
ゲームプログラミング練習帳買ってきた。
亀だが
>>397 アークタンジェントでは?
Cなら math.hに入ってる atan又はatan2
シューティングの追尾弾とかでよく使うます(・ω・)
>>412 それは、x,yの2次元座標じゃないの?
二点間って事は、片方の座標をoffsetで原点扱いにでもする?
つーか、3次元でも使える内積が無難でしょ。
414 :
412 :04/02/18 23:18 ID:su9YvBQ+
415 :
名前は開発中のものです。 :04/02/20 17:03 ID:qnhxR2WO
俺を3流のゲームデザイナーに育成してくれる方希望です。
>>415 デジトキに登録して、自称(詐称)すればいっちょあがり
418 :
397 :04/02/22 04:18 ID:hRI1ig6X
>>412 ,413さん、どうもです。
よくわからんけど、もう一度やってみます。
419 :
名前は開発中のものです。 :04/02/22 21:44 ID:fz/BpWBq
CでRPGの簡単な戦闘を作ってるんですが、戦闘で技を出すときに if文100個ぐらいに分岐しそうで怖いんですが普通こういうのは どうすればいいんでしょうか? 関数へのポインタ使ってやればいいのかとも思ったりしたけど、結局 100個も関数へのポインタに入れてやる方法しか思いつかないしなあ・・・。
C言語だいたいできるようになったら WIN API やって その次DirectSDK やればいいんですか?
何をしたいかによりますので
CでネットゲームのマクロやBOTを作りたいのですが、DOSプログラムしかやったことがありません マクロやBOTを作るにあたって参考になるサイトなどありませんか? もし有益なアドバイスなど頂けたら、形としてお礼をします
まずはうんこを1週間我慢しろ 話はそれからだ
じゃあ我慢するぜ!!
│ ______ _|| │\|/ \ 三|| │ / _______| ....... _|| ガラッ │| /../ __ ___ | 二|| │ | / ./ \/ || || │ ( 6----| > ||< ||.... ドラエも〜ん!|| │ .| \_/ ).__/.| ジャイアンが || │ | ________) スネ夫が ..|| │ ..\ .. / ...ノノ__ || │/ ̄ ̄\  ̄ ̄ ̄/... . ̄ ̄ ̄ ̄ ̄ ̄ ̄|| │  ̄ ̄ ̄ ..... 三|| │ ... ... || ____ /∵∴∵∴\ /∵/∴∵\∵\ . .. \| /∵<・>∴∴.<・>∵| . . / ̄ ̄ ̄ |∵∵/ ●\∵∵| . / |∵ /三 | 三|∵ | | |∵ |\_|_/| ∵| ∩ \ | \__ノ |/ . |.| \___/:、 ∪、 /∵━○━∵ヽ ..| \ /∵人∵∵∵ \:\ \ \ ⊂´:_/ )∵∵∵∵ヽ:_`⊃ / ̄ ̄ ̄ ̄ ̄ ̄ /
すみません。今VisualC++とDirectx9を使ってゲームを作る方法を勉強しようと思っているのですが、 directx9のhelpを見てもよくわかりません。 directx9を勉強するのに最適なサイトってあるのでしょうか?
「ゆきいるか」でくぐれ
>>419 データ駆動にする
100個全部が違う効能でないなら、
技に属性を持たせて、属性で処理をわける
後は、属性を組み合わせられるようにする
最初に作ろうとしているゲームがアクションゲームってゆうのはまずい?
↑マルチ
>>428 どうも、ということは技の動きとかもそういうふうにすればいいのかな。
なんとかできそうです、ありがとうございました。
432 :
名前は開発中のものです。 :04/04/09 16:56 ID:CEu0SDwR
HSPを使ってドンキーコング(初代)もどきを作りたいのですが 敵の初期配置まではマップチップエディタで作れても動き(エレベーター、 バネ、コング、タル等)が作れません。誰かお助けを・・・
>>432 一つ一つ片付けていけ。
自キャラは動かせられるか?
434 :
432 :04/04/09 17:59 ID:CEu0SDwR
自キャラは歩く+ジャンプできます。 某サイトからパクっただけですが・・・
>>434 ハシゴは登れる?
ってか勉強目的ならパクるのはあまりよくない。
436 :
432 :04/04/10 09:23 ID:J1HEKCQ/
登れるようにはできると思いますが・・・自信ありません。 screen 0,256,224,1,dispx/2-125,dispy/2-112 buffer 2,200,200,1;バッファー picload ".bmp" gsel 0,1 title "ジャンプ付きマリオ" carapos=20;キャラクタの位置(x座標) caramuki=0;キャラクタの向いている方向、0が右、1が左 jumpryou=0 zimen=200;地面の高さ。 repeat redraw 0 stick k,47 color 255,255,255:boxf 0,0,winx,winy color 0,0,0:line 0,200,winx,200 gosub *jump gosub *walk gosub *mario;マリオを描写する。 redraw 1 await 16 loop *mario if kasoku=0:caraani=0 if jumpryou!0:caraani=5 pos carapos,zimen-16:gmode 2,16,16:gcopy 2,caraani*16,caramuki*16,16,16 return
437 :
432 :04/04/10 09:26 ID:J1HEKCQ/
*walk walkchk+=1 if walkchk<2:return;ジャンプと同じ速さで移動すると速くなりすぎるから、 walkchk=0;2回に1回しか書き換えたりしないようにする。 kasoku3+=1;ボタンを押した後何回書き換えたか。 if kasoku3\2=0{ if (k=0)|(k=5):{ carabreak=0 kasoku3=0 if kasoku<0:kasoku+=1 if kasoku>0:kasoku-=1 } if k&4:{ carabreak=0 if jumpryou=0:caramuki=0 if kasoku<0:caraani=4:carabreak=1 if kasoku<6:kasoku+=1: } if k&1{ carabreak=0 if jumpryou=0:caramuki=1 if kasoku>0:caraani=4:carabreak=1 if kasoku>-6:kasoku-=1 } if (kasoku!0)&(carabreak=0){ caraani+=1 if caraani>=4:caraani=1 } } kasoku2=kasoku/2;移動量の推移を2回に1回にする。(1,1,2,2、3,3というように) carapos+=kasoku2 return
438 :
432 :04/04/10 09:32 ID:J1HEKCQ/
*jump if k&32{ if (jumpryou=0)&(jumpstop=0):jumpstop=1 }else{ if (jumpryou=0)&(jumpstop!1):jumpstop=0 if (jumpstop=1)&(jumpryou>=30):jumpstop=3 } if jumpstop>=3:jumpstop+=1:goto *jump↑↓ if (jumpstop=2):goto *jump↓ if jumpstop=0:return goto *jump↑ *jump↑ if jumpryou<=19:jumpkasoku=4:goto *jump↑2 if jumpryou<=40:jumpkasoku=3:goto *jump↑2 if jumpryou<=58:jumpkasoku=2:goto *jump↑2 if jumpryou<=65:jumpkasoku=1:goto *jump↑2 if jumpryou>=67:jumpkasoku=0:jumpstop=2 *jump↑2 if jumpryou=51:jumpkasoku=4 if jumpryou=16:jumpkasoku=3 if jumpryou=38:jumpkasoku=2 if jumpryou=57:jumpkasoku=1 ;title ""+jumpstop+" "+jumpryou+" " jumpryou+=jumpkasoku zimen-=jumpkasoku return
439 :
432 :04/04/10 09:41 ID:J1HEKCQ/
*jump↓ if jumpryou>=62:jumpkasoku=1:goto *jump↓2 if jumpryou>=51:jumpkasoku=3:goto *jump↓2 if jumpryou>=4:jumpkasoku=4:goto *jump↓2 *jump↓2 if jumpryou=62:jumpkasoku=2 if jumpryou=51:jumpkasoku=4 if jumpryou=47:jumpkasoku=5 if jumpryou=22:jumpkasoku=5 if jumpryou<=5:jumpkasoku=jumpryou jumpryou-=jumpkasoku zimen+=jumpkasoku return *jump↑↓ if jumpstop<=4:jumpryou+=1:zimen-=1 if jumpstop>6:jumpryou-=1:zimen+=1 if jumpstop=9:jumpstop=2 return このプログラムで逝こうかと思ってるのですが。
1行も読んでいないが、長めのソースを上げるときはどこかにうpしる。
441 :
432 :04/04/11 09:10 ID:A6JtVjTv
442 :
432 :04/04/11 09:16 ID:A6JtVjTv
とりあえず、敵キャラの動きとエレベーターからなんとかしていきたいのですが。
>442 HSPは読みにくいな…このjumpってサブルーチンの中ではループしてないんだな? だったら*mario とか呼んでるメインルーチンに、エレベータとか動かすルーチンを 付け加えたらいいじゃないか。
444 :
432 :04/04/13 16:06 ID:4DU9oHFH
それがわからないのですが・・・
>>444 んじゃ無理だ。HSPの事なんか忘れて
vectorでも逝ってフリーのゲーム落として遊んどけ。
どうしても作りたいなら、とりあえずこのパクったソースの数字を1ずつ変えては動作させて
なんとなく動作がわかるまで続けろ。
446 :
432 :04/04/14 14:27 ID:6GvtzIet
>>445 後者を選ぶんで、いつか完成したらうpするんでそのときは評価お願います。
PPF-O-MATIC3でパッチを当てる時に 「Binblock Patchvalidation failed」 と表示されるのですが、どうすれば上手く当てることが できますか?アドバイスお願いします。
448 :
名前は開発中のものです。 :04/04/15 20:48 ID:Mhaj1jFG
これからゲームつくるためにプログラムおぼえようと思い、 Cを勉強するつもりです。そこで質問なんですが、Cでいいんでしょうか。 もっと初心者がやるべき言語があるんでしょうか?
C++にも繋がるし良い言語だとは思うけど 初心者には敷居が高いね。漏れはあまりオススメしない。 Delphiあたりがすぐにビジュアルな表示が出来るから プログラミングの面白さを感じやすいと思う。 一つの言語覚えたら二つ目、三つ目を覚えるのはそこまで苦痛にならんし。
私はC、C++、Visual C++、DirectXの順で学びました。 Visual C++まで行けばウインドウズゲームが作れるけどそこまで半年ちょいぐらいかかったかな。 それまでは文字しか表示できなくて地味なプログラムだったな... ようは地味な下積みを耐えられるかどうか、とりあえずお手軽に見栄えのいいものが作れたほうが 楽めて長続きしそうって人は449さんの言うようにDelphiから初めたほうがいいかも。 一刻も早くゲームプログラムを極めたいって人はCかC++かな。 C++言語はC言語を内包しているから、C++言語から勉強を始めてもいいと思うけど、 いきなりたくさんの情報に混乱しそうと思う場合はC言語から始めたほうがいいかも。
>>449 >>450 レスありがとうございます。少しずつがんばって面白いゲーム作れるように
なります!!!!!
むずかしい・
最終的にゲームを作るには どの言語から勉強していけば良いのか質問しようとしたら 450に答えが…(`・ω・´)printf カラ、ガンバルッス!!
453ガンガレ
3月上旬からプログラムの本を読み始めて、 3月中旬に家にVCのCDがあることを知り、 3月下旬からプログラムを書けるようになって、 4月1日からできたプログラムを保存しております もうすごい楽しい!現在進行形で頑張ってます 今ブロック崩しができました。これに少し独自のルールを付け加えて終りにしたいと思います 次は何を作ろうかな?テトリスは難しいか!?
思いついたのを片っ端から形にしていくのでもいいのでは無いかと思います。 プログラムは言語の仕様・書式を覚えたらアルゴリズムの発想しだいだし。
457 :
455 :04/04/19 20:57 ID:YPIC9Z/a
>>456 でもやっぱりステップアップするには、常套手段に従ってありふれた簡単なゲームを作っていく方がよくないですか?
目的も持てるし、できたら嬉しいし
そういうわけで、とりあえずテトリスは難しそうなので、今から五目並べやってみます
今テトリスのCPU対戦を作ってます。 ですが思うように、というか全然アホCPUしか作れません。 なにかアドバイスをいただけませんか。
459 :
455 :04/04/20 01:25 ID:Hld2EAau
交互に打って5つ並んだら終了・・・基本は出来た! いやー、楽しいですね できればCPU対戦のことも考えたいけど、無理だろうな コンピューターの動きのアイディアが全然思いつかない
>>459 とりあえず三目並べ(要するに○×)でCPU作ってみたら?
461 :
455 :04/04/24 00:10 ID:TZY+vRaw
>>460 うーん、なるほど
考えてみます・・・これだけでも頭を捻ってしまう
>>459 とりあえず、以下の処理を試してみましょう。
1 可能な手を列挙する(制約のない五目並べなら空白の場所を列挙するだけ)。
2 その中から「ランダムに」打つ手を選ぶ
3 コンピュータがその手を打つ処理を実装する
これができれば、あとは2の部分でよりましな手を選べるよう改良していくだけ。
463 :
455 :04/04/29 00:57 ID:vcMIXwea
>>462 あ。わざわざすいません
でも先日から別のプログラムを作り始めてしまって・・・
後回しにすると忘れてしまいそうなので、それが終ってからやってみます
pathが通ってない
467 :
464 :04/05/02 13:59 ID:y/UaHwjT
ちゃんと通したら今度はエントリーポイントを作れだの云々・・・ それより上のより簡単そうなEasy Link Libraryってのを見つけたんです サンプルのテトリスとかがありまして、実行ファイルはもちろん動くのですが 自分でプロジェクトを開いてビルドするとエラーが出ます。 この件に限らずサンプルは殆ど++6なので、自分が使ってる.NETだと 開いた時の++7形式に変換しますか?→はい でおかしくなってるのだと思います こういう場合は何か書き足す必要があるのでしょうか?
VC6なので力になれないと思うが、とりあえずどんなエラーか書いてみ?
simpleXでやった時は↓のようなのをビルドしました #include<simpleX.h> void StartUp() { } void MainLoop() { Clear(); Text(0,0,"Hello World"); } そうすると ・resu warning LNK4003: ライブラリの形式が無効です。ライブラリは無視されます。 この警告が4つと ・resu fatal error LNK1561: エントリー ポイントを定義しなければなりません。 となりました resuってのはプロジェクト名です
471 :
464 :04/05/04 20:27 ID:Nhb0M37d
よっしゃ、何とかしたで! パスの順番変えたり、いろいろしたら出来ました
腹へった
473 :
名前は開発中のものです。 :04/05/09 18:56 ID:FkW++Xq5
メシ食ったか?
474 :
464 :04/05/10 20:05 ID:XWABRbZ8
すいません、依存関係ってとこにいろいろぶち込んだら動きました 「質問書く前にいろいろ試せや、このタマキン野郎が!」って罵ってください
質問書く前にいろいろ試せや、このタマキン野郎が!
477 :
464 :04/05/11 19:45 ID:mn01Zinh
ほんと低レベルな質問で申し訳ないのだが、弾が難しい。 シューティングってほどでもないんだけど、自機が弾を撃つのね。 でも画面上に一つしか出ないのよ、次撃つと前のが消える。 弾の座標が一個分しかないからなんだろうけど。で、サンプルみたいなのを見てみたら 配列を使ってたのかな?当たり前なんだろうけど、それで弾を一つ一つ管理してたのかと 少し分かった気がしたのですよ。でもどう組めばいいのか解らない・・・・ 普通はどのようにしてるのでしょうか?
Cだと //弾定義 struct _Tama { int x; int y; bool isAlive; }; //定義した弾を配列で宣言 struct _Tama tama[16]; //撃つとき for(i=0;i<16;i++) { if(!tama[i].isAlive) { tama[i].isAlive = true; tama[i].x = 弾出現位置X tama[i].y = 弾出現位置Y break; } } が、一番シンプルかな・・・。
なるほど、微妙につかめてきました。どうもです MOTHERでいうと最初の電気スタンドを倒したところです
↑ すいません、elだとどんな感じになりますか? bool ってのは真偽の為のものですよね?
boolが使えなかったら{ int isAlive;//弾の生存フラグ で、isAlive=0が画面に出てないヤツ、isAlive=1が画面に出てるヤツとか、 2つの状態を区別できれば、型はなんでも大丈夫だよ
el ってCベースというか、Cそのものだと思うんだが。
そのCがあまり分からないのです。 つまり作れないって事です
作れないなら、まぁ、がんばれというか、勉強してください。 479さんの上げた例はCなので多分問題なくいけるはずですが。 使用言語の基本書式とか理解してないとゲーム以前の問題になりませんか。 「猫でもわかる」でぐぐったりしてもう少し基礎の所からはじめるのをお勧めします。 もしくはツクール。
Cできなかったらelもあまり分からないことないですか?
>>486 学習ガイドライン
1.Cを覚える(教科書は「猫でもわかる〜」でOK)
↓
2.elのサンプルコードを読む(判らない部分はとりあえずgoogleへ)
↓
3.elのサンプルコードを改造する(一ヶ所変えるたびにコンパイルして実行)
↓
4.本番(もう何も言うことはない)
途中のステップをとばすと「自分が何を判らないのか判らない」状態にはまるから
トータルで考えれば時間の無駄になるよん。
488 :
478 :04/05/19 16:33 ID:ryT9K2cQ
親切な助言どうもです。 Cは基礎は大丈夫だと思います。まあ、これも勉強します。 >2.elのサンプルコードを読む(判らない部分はとりあえずgoogleへ) ↓ >3.elのサンプルコードを改造する(一ヶ所変えるたびにコンパイルして実行) で、今ここら辺をやっているわけですがSc2のコードを見て弾の部分を理解しようと試みています。 余計なものが多くてややこしいですが、頑張ってれば理解できそうな感じです。
とと、いろいろいじってたらエラーの数も減ってきて遂に0に。 もう少し頑張ってみれば何とかなりそうです。 やっぱ成長するにはいろいろ悩まないと駄目ですね。
492 :
464 :04/05/22 14:11 ID:ptk8g+iv
>>479 最初は何のことだか解らなかったのですが、構造体ということがやっと解りましたw
これは便利ですね、少し賢くなりました。どうもです
493 :
464 :04/05/25 16:53 ID:QdGCgPCN
構造体と++のクラスってのは似たようなものですか?
struct X { int a; }; と class X { public: int a; }: はかなり似てます。
あ・・・・・・・。 誤) }: 正) };
496 :
464 :04/05/26 22:39 ID:U7ffWaSi
どうもです
初めまして。今日からHSPを学ぼうと思っております。初心者ですがよろしくお願いします。 それで、さっき5時間くらいかけて初めて数当てゲームぽいものできたのですが、ここにソース貼り付けたら何かアドバイスしていただけるのでしょうか?
>>497 数当てゲーム程度の規模だとあまり工夫の余地がないのでアドバイスしにくいかもなあ。
「上手く動かない」とかならともかく
>>497 レスありがとです。そですか〜、では次に簡単なものって何があるか分かります?テトリスとかですかねぇ・・?
>>500 15パズル。
数当てで使ってると思われるinputなどのコントロールを使わないやつを練習すべし。
一週間ぶりにカキコします_| ̄|○ 15パズル作ろうとしてるんですが、どうやったら作れるのかまだ分かりません。 自分的に考えているのは↓ 1.まず○を → ○○○○ ○○○○ ○○○ と表示し、 2.次に○のなかに数字を振り分け、 3.最後にクリックすれば○が無い方向に動く というようにすればできると思うのですがどうなのでしょうか? これであっているのなら、まず初めのどうやったら○が並ぶのかがいまいち分かりません_| ̄|○ 教えて君ですいませんが、お願いします。 P.S 長文&読みにくい文章でスマソです_| ̄|○
連レススマソ ○○○○ ○○○○ ○○○ と表示させたかったのですがずれました_| ̄|○
>>502 01020304<改行>
05060708<改行>
09101112<改行>
131415■<改行>
HSPはしらないけど、↑みたいに表示すれば文字だけでも表示できる。
上下左右を押すと■がその方向の数字と入れ替わるようにすれば充分かと。
505 :
501 :04/07/01 16:23 ID:Uuze0tzS
>>502 504の言うように、空白が移動方向のパーツと入れ替わるようにすればいい。
ポイントは配列変数、空白の座標の管理だな。
表示は各パーツごとに表示する。こんな感じ。テキトーに改行してくれ。
//パーツの表示サイズ
#define PARTX 32
#define PARTY 32
#const PARTBX PARTX-2
#const PARTBY PARTY-2
dim part,4,4:px=3:py=3//配列宣言と空白の座標
//配列に数値を格納
i=1:repeat 4:y=cnt:repeat 4:part.cnt.y=i:i++:loop:loop
part.px.py=0//空白部分は0にする
//表示してみる
color:boxf
repeat 4:y=cnt:repeat 4
if part.cnt.y {
xx=cnt*PARTX:yy=y*PARTY
color ,,255:boxf xx,yy,xx+PARTBX,yy+PARTBY
color 255:pos xx,yy:mes part.cnt.y
}
loop:loop
stop
フリーでRPGには何が必要ですか? win98を使っています
自分が考えていることを的確に相手に伝える文章力
知性
>>505 自分なりに解釈してみました。
//パーツの表示サイズ(定義しておく)
#define PARTX 32 //PARTXは32である
#define PARTY 32 //PARTYは32である
#const PARTBX PARTX-2 //PARTBXはPARTX-2である(つまりこの場合は30である)
#const PARTBY PARTY-2 //PARTBYはPARTY-2である(つまりこの場合は30である)
dim part,4,4 //配列宣言(part 0,0 から3,3 まで使用できるようにする)
px=3:py=3 //空白の座標
//配列に数値を格納
i=1 //とりあえずiに1を代入
repeat 4 //4回繰り返す
y=cnt //とりあえずyにcntを代入(初めのリピートについての回数になる)
repeat 4 //4回繰り返す
part.cnt.y=i //part.cnt.yの座標の値はi(この場合のcntは後の方のリピートについての回数)
i++ //iに1を加える
loop //後のrepeatについてのループ
loop //初めのrepeatについてのループ
part.px.py=0 //空白部分は0にする(つまりpart 3.3は0)
//表示してみる color //色の設定(ここでは黒) boxf //塗りつぶし(指定していないので背景が塗りつぶされる) repeat 4 //4回繰り返す y=cnt //yにcnt(ループ回数)を代入 repeat 4 //4回繰り返す if part.cnt.y { //もしpart.cnt.yなら xx=cnt*PARTX //cnt*PARTXをxxとする yy=y*PARTY //y*PARTYをyyとする color ,,255 //ここでは青色に設定している boxf xx,yy,xx+PARTBX,yy+PARTBY //(xx,yy)と(xx+PARTX,yy+PARTBY)を左上、右下の点として、矩形(四角形)を塗りつぶす。 //描画色は、color命令で設定されたものになる。 color 255 //色の変更(ここでは赤色にしてある) pos xx,yy //カレントポジションを(xx.yy)に指定 mes part.cnt.y //カレントポジションからpart.cnt.yを表示 } //上のことをまとめてする(xx=からmesまで) loop //後のrepeatについてのループ loop //初めのrepeatについてのループ stop //プログラムの実行を一時中断 一行ごとに説明入れてみたので長くなりました_| ̄|○ 違ってたら指摘おねです_| ̄|○ (ってかこんな説明いれるのに凄い時間がかかった俺って・・・| ̄|○)
511 :
501 :04/07/12 21:06 ID:Fg4Dow09
>>510 あってる。準備と表示の基本がわかったと思う。
あとは表示部分をサブルーチンにしてしまい、以下の段取りで作っていけばいいかと。
*スタート
・準備。(配列に数字を格納する)
・最初の配置表示。(表示サブルーチンを呼ぶ)
・キー入力を待つ。(いわゆるスタートボタンを待つ待機)
この時、開始のキーを画面に表示してアナウンスするのが望ましい。
例:「クリックでスタート」とか。
・シャッフル開始。(空白を300回くらいランダム移動させる)
・シャッフル後の配置表示。(表示サブルーチンを呼ぶ)
この時、シャッフルで空白を一回動かす度に呼べば、
プレイヤーにシャッフル中の画面を見せる事になる。そこはお好みで。
*メインループ
・プレイヤーのキー入力を待つ。(マウスでもキーボードでもお好きに)
・空白が動いたら配置表示。(表示サブルーチンを呼ぶ)
・揃ったかどうか判定。
・揃ったらメインループを抜ける。(*揃ったへ)
・揃ってなければ *メインループへ。
*揃った
・揃ったうまを表示。
・プレイヤーのキー入力を待つ。
・*スタートへ。(繰り返し遊べるようにする)
メインループは当然無限ループになるから、waitかawaitは忘れずに。
わからなくなったらまた聞いてくれ。
ありがとうございます。 で、いきなりなんですが空白と移動方向のパーツをどうすれば入れ替わるのかが分かりません・・・ repeat await 10 stick key,0 if key!0 : gosub *keyget loop *keyget if key=1 : if key=4 : if key=2 : if key=8 : return ifの後に空白と移動方向のパーツの入れ替えを行いたいのです。 よろしくお願いします。(表示は504にあるソースを引用させてもらってます)
焦る気持ちは解るが、もう少し自分の力で試行錯誤してみようとは思わないのかね?
o 自分が初心者であることを全面に出す o 「よろしくお願いします」 これも嫌われるのでやめた方がいいですよ
>>513 ,514
そうですね・・以後気をつけますλ....
>>515 自分のやりたいことを実現するには、作業を細分化して考えるんだ。
表示方法、盤の状態をどんなデータで持つか、どんな条件の時は入れ替えないのか。
データの入れ替え自体はそんなに面倒でもないだろ?
518 :
501 :04/07/16 05:25 ID:KYwEYXqC
>>517 これらの命令を調べてくれ。エディタで命令を書いて、そこでF1を押せば説明が出る。
・gosub、return、repeat、loop、gcopy
すぐに使うことになるから、よくわからなくても説明だけは読んでおく事。
できれば、「これらの命令を使えば物凄くソースが短くなるかも」という事に気が付いてもらいたい。
・シャッフルについて
このシャッフル法だと絶対に解けない場合が出てくる。空白をランダムに移動させる方法をとるべし。
配列変数ってのは、小学校とかに下駄箱あるじゃん?あれが配列変数。
横と縦のそれぞれ何番目かを指定する必要があるが、マス目で並んでるので便利。
4x4の配列変数を作った場合、15パズルと見た目が同じになるから使わない手はない。
当然9パズルの時は3x3の配列変数を作ればよい。
配列変数の作り方は・・・。詳しくはマニュアル読んでくれ。
ちなみに3x3の配列変数を作るには dim 変数名,3,3 と書く。
こうするとメモリに
□□□
□□□
□□□
というふうに変数が並ぶ。(下駄箱ができると思えばいい)
左上にアクセスするには、変数名.0.0。一番下の段の真中は、変数名.1.2。
とりあえず、意地でも配列変数を使ったバージョンに書き直してほしい。
(これができないと、ロールプレイングもシューティングも作れないから)
>>519 「字下げ」も覚えたほうがいいだろうねぇ。(解らなかったらぐぐってみてね)
ところで自分でリストを見直してみて、ほとんど同じような処理を
延々と書き続けていることには気が付いているかい?
何故そう書くことになったのか考えてみよう。
共通の処理で済ませるにはどうしたらいいかな。
まったく同じcolor命令がずらずら並ぶのをなんとかしてみよう。
521 :
501 :04/07/17 03:55 ID:GnjMzHwj
>>519 ソース見せてもらった。だいぶスッキリしたじゃないか。
あのラベルとifの羅列は自分でもなんとかしたいだろう。
そのためには、パーツ移動の考え方を変える必要がある。
つまり、入れ替える方法だな。
上のレスで配列変数を小学校の下駄箱に例えたが、入れ替える方法もそのまんまだ。
□□□ □□□
□□□→□□□
□□■ □■□
黒い所に自分の靴が入っているとする。それを左に移したい場合どうするか?
519ならどうする?
まず、動かしたい靴を自分の手に持たないか?
つまり、一旦別の場所に保管するわけだ。プログラミングで値を保管したい場合どうする?
変数に入れるだろう。答えは、「一時保管用の変数を用意」するだ。
2箇所の靴を入れ替えたい時は?・・・両手を使うだろう。保管用の変数が2個必要ってこった。
何も難しい事はないだろう。
サブルーチン(gosubで飛んだ先の事)の中でgotoはやってはいけない。これはプログラマーの暗黙の了解。
俺は519が作った数当てゲームのソースを見ていないから15パズルを薦めたが、荷が重かっただろうか。
>>519 *za02から*xy802までがまるまるコピーしたルーチンだね。
まるっきり無駄なのは本人もわかってるんだろうケド。
524 :
501 :04/07/21 20:06 ID:KwUOdNli
>>523 考え方はあってると思うが、無駄が多いのは確か。
お題変えていいか?15パズルはまだ無理だと判断したぜ。
休憩がてらにこの課題をやってみてくれ。
523の実力がどんなもんかを把握しておきたい。
課題:キーボードの十字キーで●を動かすプログラム。
シューティングの自機を動かす練習でもあり、メインループという仕組みを学ぶ事もできる。
stop命令を使わずにこの課題をクリアしてみそ。
527 :
501 :04/07/23 21:20 ID:QxYTfUZ3
>>525 あのさ、526に同意だぜ。それができるなら523のソースはありえんかと。
メインループってのがわからない人かと思ってた。
自分で考えたよな?どっかのサイトのをコピペしたんじゃないよな?
悪いけどコピペしたように見えちまうぜ。
メインループもしっかりしているし、どの部分をサブルーチンにするかの選別も完璧だ。
画面外処理にも気をつかってるようだし、523のソース書いた人と同じとは信じがたい。レベルアップしたって事なら心から祝福するが・・・。
とりあえず自分で考えたって事で話を進めるぜ。実力はわかった。
ここまでできれば15パズルなんざ屁でもないはず。
メインループを使って組んでみてくれ。
529 :
520 :04/07/28 08:06 ID:dtD/YKE5
大分スッキリしてきたね。(^^ でもまだ似たような処理が複数あるし、ループ内で行う処理の流れも把握し切れてないみたいだ。 たとえば『*move』で行う処理を単純化して変数keyの値(stick命令で得た情報)をもとに 「→が押されたときの処理」など別のサブルーチンに飛ばすだけにしてみたらどうだろう。 その飛び先で例外処理(528の『if n>358』みたいな場合、処理前にそのサブルーチンから抜ける)を行う。 配列内の値(マスの数字)はそこで入れ替えればいい。 ただし、この方法で行うにしてもメインループから『*sub』が毎回呼ばれるようでは 配列内の数値が毎回初期化されてしまうよね? それは『*sub』内で配列に数値を入れているからだよね? だからループ内で行うべき処理とそうでない処理を分割してみよう。
530 :
501 :04/08/07 01:45 ID:2Nt1AYKG
>>528 マイルール作ろうぜ。
if key=8と書いてる所とif key = 128と書いてる所があるが、イコールの前後に空白を開けるか開けないか決めたほうがいい。
あと、変数の名前の付け方とかも決めたほうがいいな。
それを決めるとプログラミングの上達が速いから。騙されたと思って統一させてみな。
いつdim関数を入れ替えるか?中身をいつ入れ替えるかってこと?
当然空白が移動した時。順番はこう。
1、空白が移動できるなら元の位置を捨て変数に代入して移動。移動できなければ何もしないでメインループに戻る。
2、元の位置と現在の位置の中身を入れ替える。
3、画面に反映させる。(描画サブルーチンを呼ぶ)
こんな感じ。
空白の位置がどこかは配列を調べていってゼロの場所を探せばいいが、
>>505 の俺のサンプルでは空白の位置をわざわざpx,pyに格納してるよね。なんでだと思う?
>>528 の修正版ではわけもわからずpx,pyを使ってるみたいだね。
こうやって空白の位置を専用の変数に入れてるのは、こうしたほうが入れ替えが楽だから。
カーソルキーを押した時に変化させる数値はpx,pyって事。
空白はRPGの主人公と同じ意味。とりあえず今回はこんだけのヒントでなんとかなるかも。
マインスィーパを作りたいのですが、何をはじめていいかさっぱり・・・_| ̄|○ ご助言を受け賜りたいです。
>>531 使用する言語は何かわからんけど
とりあえず絵の表示とキー入力の取得が先かな
まぁ、これはマインスィーパに限った話じゃないが
>>531 何がわからないのか書いてくれないと答えようが無いんだが……。
ホントになにもできないなら>532の言うとおりになる。
とりあえず
配列を用意して機雷を配置 (機雷が規定個数入った配列を用意して乱数で並び替え)
配列を順にチェックして、空欄の時は周囲8マス内にある機雷の数を入れる
マスが隠されているか開いているかの状態を表す配列を用意(531ができるなら上と同じ配列を使って処理しても良い)
クリックしたマスが隠されたマスなら中身を表示(機雷ならゲームオーバー)
周囲の機雷が0だったときの処理はひとまずおいといて、
ここまでやってみれ。
ウインドウをいくつか開く事を前提としたプログラムなのですが プロシージャは窓ごとに別に持つのでしょうか
持たずに制御できるんなら別に
という事は持つのが普通で それでかまわないという事でしょうか 遠まわしにありがとうございます
537 :
('Д`) :04/10/09 00:24:07 ID:lQ9GPwTv
このスレ使わせてもらいま。 最近VC++はじめた。 とりあえずC、C++勉強しつつ、パイナッポみたいなゲームを作ろうと思う。
538 :
('Д`) :04/10/09 00:32:13 ID:lQ9GPwTv
アゲ
541 :
('Д`) :04/10/09 20:05:23 ID:lQ9GPwTv
Cでタイピングゲームを作ろうと思っているんですが、 参考になるサイトってありませんか?サンプルソースとかがあったりしたらサイコーです。 アルゴリズムとかがなかなか思いつかない。
545 :
543 :04/10/10 16:51:20 ID:V6ewNBHZ
>>544 すげぇっスこのサイト。
参考にします!ありがとうございま!!
546 :
('Д`) :04/10/11 10:37:25 ID:wxx0x9uV
乙
このスレの100あたりに載ってた宝探しゲーム面白すぎる・・・
マスの描画で悩んでいるんですけれども、ご教授願います。 今、ヘクス型のSLGを作成していてマウスの乗っているヘクスに枠を乗せたい訳です。 しかし、どうしても画面のちらつきが発生してしまい困っています。 Form1.DoubleBuffered := True; にもしているんですがちらつきを抑えられません。 因みにヘクス枠の描画方法は、表示するイメージとは別の、枠の無いイメージを用意し、マウスがポイントするヘクスが移動する度にそこから前にマウスがあったヘクスの部分を切り取って表示するイメージに貼り付けし、新しいヘクスに枠を書き込むという方法です。 コードはこちら if (X3 <> X4) or (Y3 <> Y4) then begin //外枠描画 Image1.Canvas.CopyRect(Rect(X4,Y4,X4+48,Y4+48),Image2.Canvas ,Rect(X4,Y4,X4+48,Y4+48)); Image1.Canvas.Draw(X3,Y3,MouseTip); X4 := X3; Y4 := Y3; end; X3,Y3…マウスが乗っているヘクス X4,Y4…その前にマウスが乗っていたヘクス Image1,2…1が表示するイメージ、2が非表示のイメージ Mousetip…ヘクス枠のBitmap名
追記 ちらつきというのは、ずっと画面がちらつくというのではなく 新しい枠を描画する毎にちらつきの様なものが発生するという意味です。 その為、 procedure TMainForm.WMEraseBkgnd(var m : TWMEraseBkgnd); begin m.Result := LRESULT(False); end; をやってみましたが効果はありませんでした。
私も参戦させて下さい。 とりあえず、目の前の問題解決から。 A Cでコンソールによるファイルの入出力。 B 自動ダンジョンもどき(ファイル出力)。 C 数当て。
とりあえず、 「A Cでコンソールによるファイルの入出力。」は出来た。 でも、ソースをUpできない・・。(Gamedevに繋がらない。
373 名前: ◆NZ9myhrGS6 投稿日: 04/12/22 10:55:01 ID:y04a6POy 俺にポポロクロイス物語シリーズの最新作を任せてほしい Tを上回る史上最高の傑作を作る自信がある。どうですかソニーさん 今のPS2になり余計なことばかりして自家撞着してるポポロを俺が 世紀の名作に戻してあげますよ。 その点では幻想水滸伝も同じか・・・Tであれほど名作だったのに続編になるごとに 退化を続け、PS2版になると完全に別のゲームに成り果ててファンを引き裂いた幻想水滸伝 あれも俺に最新作を任せてもらえれば完全にもとの輝きを取り戻してあげますよ、どうですかコナミさん ×××@hotmail.co.jp連絡はここまでお願いします しかしRPG不作の時代は続きますねー PS2になって5年も経つというのに PS2でのRPGの名作はまだゼロ。佳作としてグローランサーWがあるぐらいですかね ちょっと肉付けしてシナリオとストーリーを変えるだけで新たに遊べるのに、 そのレベルにすらいかない。退化を続けるRPGの歴史に歯止めをかけたい
>>549 一度、画面に表示するまえにTBitmapを作ってそこに描画する
すべて描画が完了したら実際にformに表示する
DoubleBufferedをScrollBoxでなくてFormにしてました。 すいませんでした。
これからプログラム勉強して(C言語とか) ゲーム作ろうとしている初心者以前の存在なんだけど ゲーム製作に必要なソフトって何? 「RPGツクール」とかはなしで
メモ帳とコンパイラ
はっきり言ってRPGツクールをなめすぎ。 まずはツクール体験版落として使ってみろ、絶対挫折する
559 :
名前は開発中のものです。 :05/01/20 22:28:46 ID:cRp2WmOq
>556 Cの基本的なプログラミングの流れは テキストエディタでソースファイルにC言語で記述する(コーディング) ソースファイルをコンパイラを使ってオブジェクトファイルに変換する(コンパイル) オブジェクトファイルやライブラリをリンカを使って実行可能ファイルに変換する(リンク) 流れがわかれば何が必要なのかわかるだろってこれくらいは調べろよ 入門書も初心者向けサイトもそろってるこのご時世に掲示板でわざわざそんな 基本的なことを質問するのは恥じと知れ!
むしろ2chで聞くのを恥と知るべき
#include <windows> int WINAPI_WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){ MessageBox(NULL,"シャイニングアギト","メッセージです", MB_OK); return 0; } エラー発生するんだが何がおかしいかわからない…助けてくれ
>>563 >#include <windows>
#include <windows.h>
>int WINAPI_WinMain(
int WINAPI WinMain(
>>564 Error: 外部シンボル '_main' が未解決
だそうだ、言われた通り直してみたが。
すまん、感謝してるが直らんようだ。
とりあえずぐぐってみる
>565 VCか?プロジェクトはWin32プロジェクトで作ってるか? BCCあたりならコンパイルオプションはつけてるか?
>>566 それだ。BCC使用中
オプション付け方わからんがそれは調べながらやってきます
ありがとう、コンソールのままコンパイルしていたよ そりゃうごかねぇわ
>586 オメ
#include <iostream> using namespace std; int main() { double a; do{ cout<<"何フィートか入力。0で終了"; cin>>a; cout<<a*12<<"インチです。\n"; }while (double !=0.0); return 0; } main関数のエラーらしいが…色々替えてみても解決しないんだが誰か助けてくれないか
>>570 >}while (double !=0.0);
}while (a !=0.0);
>>571 あり得ないほど単純なミスの指摘ありがとうございましたorz
>>572 色分けできるエディタでも使ってみたらどうだい?
575 :
名前は開発中のものです。 :2005/04/29(金) 23:05:09 ID:pQOGYAUX
質問です。作成環境はVCなのですが、 WINAPIで文字列を描画するさいに行間、字間をあけると指定したRECT構造体の範囲に入りません SetTextCharacterExtra()で幅を決めていますがどうしてもずれてしまいます。 何かうまい方法は無いでしょうか?
フォントがまずいんでねーの? 詳しくはしらんが、等幅フォントとプロポーショナルフォント(文字によって幅が違う) ってのがあるから、そのへん見てみたら?
クリエイトフォントでピッチを固定幅にしたら字幅0では解決しました ですがなぜか字幅を増やせば文字が重なる、という状況に。 やっぱりソースコード全部乗っけた方が良いでしょうかそれともどこかにUPする方でしょうか
578 :
名前は開発中のものです。 :2005/05/01(日) 10:22:06 ID:O5JkL057
C言語使用中 AVGで画面のサイズを取得してテキストの量と比較して一ページ、というのを作り出す っていうのは改行の回数を取得してやるしかないんでしょうか?
質問の答えじゃないんだけど一つ。 同じページ内の情報が場合によって変わるようになると、 変な位置で改ページが挟まることになって可読性が落ちてしまわないか?
改ページ自体のイベントも作り、さらに自動で改ページもする、っていう形でやるつもりなので 変な位置で改ページが挟まる可能性は無い…と思います。
一行ごとに読み込んでウィンドウがいっぱいになったら白紙にしてまた一行ごとに読み込んでいく っていうのなら出来そうなのですが、問題は一行ごとに読み込むにはfgets()しか知らないということなのです(´・ω・`) Readfileで一行ごとに読み込む、ような形式の関数はないでしょうか?
582 :
名前は開発中のものです。 :2005/07/01(金) 23:38:04 ID:TgYhWr9I
ゲーム制作にはどのプログラムが最適なんでしょうか? C++を勉強してるんですが知り合いからは C++で作る意味はないんじゃないか?と言われます。 最低でもC言語は通る道だから覚えていいけど もっと最適なプログラムあるだろうと言われましたが・・・、 ついでにビジュアルベーシックがいいとかも聞きましたが・・・ シミュレーションゲームを作るとして何が一番いいのでしょうか? 吉里吉里などではなく、0から作るつもりなのでよろしくお願いします。
釣られないゾー
>>582 君は2つの悩みを抱えているね
・どんな言語を習得するべきか
・どんな言語でゲームを製作するべきか
これは似たようでいて全然別のことなんだ
前者については沢山の言語を覚えろとしかいいようがない
このサイトが参考になるんじゃないかな
http://www.yamdas.org/column/technique/21-daysj.html 後者についてはもうちょっと詳しく知らないと無責任なことしかいえないけど
おそらく10人に聞いたら8〜9人はCかC++って答えると思うよ
今まで発売された中で最もクールなSLGの一つ「かえるにょぱにょ〜ん」はアリスソフトの「System」という
スクリプト言語で書かれているし生産性を重視するならRubyやPythonを薦める人もいるだろう
でもC/C++はほんとにパワフルでクールな言語なんだ
君は「0から作るつもり」と言っている。数字を0から数えるのはとても大事だ
これはC/C++を使う資質があるってことだから自信をもっていいと思うよ
585 :
名前は開発中のものです。 :2005/07/02(土) 05:11:42 ID:DaKyZ7xP
>>582 Cやその系列の言語が広まったのは、やっぱり幅の広さが
他の言語に比べて半端ない(そしてCの概念がほとんどの言語でも通る)ってことで、
もちろん普通に当たり障りなく勧めるならC++かもしれないけど、
とにかく色んな言語を『かじって』みて、自分の読みやすい言語から飛びついてみるのはどうだろう
基礎からコツコツ積み上げるのも大事だけど、好きな場所から喰らいついていけば楽に進めると思う
っていう俺もまさしく『ズブの初心者』なんだ(´・ω・`)ゴメンヨ
ただ、この世界って広くて数え切れないほどの言語があるけど、
「自分が想像しているゲーム」でやりたいこと、見つけたかったものが
簡単に出来る言語はやっぱり理解の進みが恐ろしいほど早いと思う
ま、俺が習得してるのはテラヨミヤススなPerlってこともあるんだけど(;´∀`)
586 :
名前は開発中のものです。 :2005/07/02(土) 13:09:34 ID:reo3tl9Q
Cの基礎は大体分かったんだけど、ここからは自分で何か作ってかなきゃ発展しないんだろなぁ。 このスレ序盤にあやかって五目並べでも作ってみるか…。
>>586 あるあるwwwwww
ゲームを作りたい一心で勉強して、ある程度わかるようになったときに
「ゲームを作りたい」気持ちはあるんだけど
「どんなゲームを作りたい」って言うのが曖昧なままであることに気がついて
抜き差しならなくなって途方に暮れていたりな
つーか作りたいもんを形にしたいからやり始めるんじゃないのか
自分が理想とするゲームを作るってのが基本なんじゃないかな それが一番楽しめると思う
>>587 氏の言ってることで当たってまっす。
プログラムの勉強が先にあって、それで何やりたいかって考え方してました。
理想とか作りたいもんとかはないけど、何かを作りたい、って言ったら変だと思われるんだろなあ。
とりあえず五目並べむずいっす。
>>592 よかった(´・ω・`)
書いた後で的外れかもしらんと思った
>>588 なんつーか、作りたいゲーはあるんだけど、
いざプログラム組めるようになるとアイディアの部品が足りない感じ
厚紙で三角柱(ゲーム)を作ろうとがんばってるときに、
四角い紙(自分の理想)ばっかり思い浮かべて準備したって、
実際に三角柱作ろうとしたら三角の紙もいるでしょ
それに気づかないまま、セロテープ(プログラム)を準備したって
三角柱は作れないし、紙とテープ持って呆然とするだけだよね
だけど紙を持ってないわけじゃないんだ、足りないだけで
どうしたらいいのか分からなくなって、人によっては
ガムテープとか持ってきて手を変え品を変え試行錯誤することもあるし
たとえが小難しくてすまんけど、なんだかそんな感じ
はじめまして。ゲームを作りたいと思っています。 ジャンルはRPGを考えています。 言語はC、ソフトはVC++が良いかなとか思ってます。(敷居は高いみたいですが^^; で、質問です。 1:画像関係はどんなソフトが良いでしょうか?DirectXとやらが2Dにいい感じに思いました。 もし3Dだとお勧めはありますか? 2:アイテムなんかはデータベースがあったほうがいいでしょうか? (メタルマックスとか好きだったので無駄アイテムとか一杯作りたいのですw) オラクル、SQL、と言うのをデータベースで見ました。 このデータベースお勧め、等ありましたら教えてください。
ゲームのアイテムにわざわざオラクルを組み込むとは、 インストールに何GB用意させるつもりなんだろう? いったいいくらライセンス料を支払うことになるのやら。
すいません、データベースについてはまだ名前しか調べてない状態でした。 どうやら、とてもサイズがでかくなる、高い、のですね^^; あまりお勧めでは無いということがわかりました。 どうもありがとうございますm(._.*)mペコッ
CVS:XML,調べてみます。 英語ページ:ダウンロードしてみました。 早速何か書いてみます。 ありがとうございます!m(._.*)mペコッ
VC++とDirectXでゲームを作ろうと思ったが、相当苦労するねこれ。 つーか、プログラムにする前に、ゲームの構造を考えるのが難しい。 こんな感じにしたいなぁという妄想は有っても、じゃあここはどうするの? あそこはどうなるの?っていう、細かいところがどんどん出てきて泣きそうになる。
いきなりデカイもんを作ろうとしても挫折が待っているだけのような希ガス
^^;; 相当、、、苦労しますか まぁ言語の最初からですし 一気にはとても無理ですので(;_; )Cの勉強度合いによって少しずつ・・・ 絵は思いついたとき(ストーリーも完全にはできてませんが)書いて貯めていけたら という思いです。 指導、応援ありがとうございました。 (^人^)感謝♪
>>600 まあでも自分の作りたくないもの作り始めても
イライラして挫折するタイプの香具師はいる
俺とか orz
603 :
とーしろー :2005/07/07(木) 18:57:22 ID:nMC2NI3d
自分で交易のゲーム(大航海時代みたいなやつ)を作ろうと思ったら、 どんなプログラムやコンピューターの知識・技術が必要ですか?
>603 アルゴル系の言語の知識 データベースの概念 ゲームの基本構造 ビットマップの概念 アニメーションの概念 ・・・
ゲームを作ったことがないなら、まず簡単な、本当に簡単なゲームを作ってみることをお勧めするよ。 ステップとしては、 1.文字だけで動くようなゲーム(ex. じゃんけんゲーム、数当てゲーム) 2.グラフィカルな表示をするゲーム(ex. ○×ゲーム、五目並べ) 3.アクションというか、ユーザーが操作しなくても時間で勝手にゲームが進行していくようなもの(テトリス、ブロックくずし) ここまでくればどんなゲームも作れるよ。単純か複雑かの違いはあるけどね。 後は ・プログラムの構造(複雑で大きなプログラムをどう分割し、整理するか) ・ネタ(ゲームの内容) だね。
606 :
605 :2005/07/07(木) 23:14:18 ID:WJmWSz/t
連カキするけど、きれいで整理されたプログラムを書きたいんだったらゲームを何個も何個も作ってみることだね。 以前に自分が作ったプログラムと同じ仕様のプログラムをもう一度作ってみるのもいい。 以前のソースを見てみると「うわー、なんだこの糞ソースは」と思うと思う。いや、思わなきゃまずい。成長してないってことだからね。
自分にあった言語で少し進めてみて、 パワー不足だと感じたら、ほかのを試せば良いんじゃないか? ただ、VBとかだと変な癖がつくって言うね。
608 :
603 :2005/07/09(土) 22:51:26 ID:645gHNAv
「氏ね」とか書かれてないかな、とビクビクしながら覗いてみたら 親切なレスが書かれてあり感激しました。 自分に出来ることから始めていきたいと思います。
お勧め言語はC#。 C++もいいけど、メモリの管理やらなんやら、自分の作りたいと思っているゲームとは直接関係のないコンピューターの処理の部分で大変だからね。 ズブの初心者なら特に。 そしてC#ではDirectXも使える。内部の難しい処理はManagedDirectXのクラスでカプセル化されているので、そんなに複雑なことをせずにDirectXを使える。 ゲームっていうからには、やっぱり文字だけや紙芝居じゃ満足しないでしょ? 「じゃあGDIからステップアップしてしてDirectXを使おう」ってことになった時にC++だと初期化処理だけで挫折しそうで。(ちなみに私はC++でDirectXはできない) なんでVB.NETじゃないかというと、あれはVBで作られたソース(とVBプログラマ)を.NET環境に移行させるために作られた言語だから。 仕事でVB.NETを使っているし、趣味でC#を使っているから分かるんだけど、VBのソースと知識を引きずってるんでなければ選ぶ価値はないね。 ManagedDirectXのサンプルもC#だし。
610 :
名前は開発中のものです。 :2005/07/10(日) 14:37:07 ID:byzcfRe/
ちょっとスレ違いかもしれないけど、みんなはどういう順序でプログラムを勉強した? 具体的に言うと、最初の言語 何から始めたのかなって。 自分は、プログラムの基本概念を掴む為にBASICから入ったんだけど、 いきなりCとかやって、頭って付いていった? 自分だけだったら恥ずかしいな・・・
最初Cやったけどわからんかったからhspやって またCやったらわかるようになった。
Cはポインタの概念を理解するのが山だね アルゴリズムとデータ構造を覚えるとCのが効率よく書けるようになるよ
ズブの素人で大学入学3ヶ月でいきなりC言語やらされて半泣きになりながら課題解いてた
俺は大学でRuby→Cだった。 Rubyの講師がなんの説明もせずにさっさと先へ進むから、ほとんどのやつがついて行けなかったな。もちろん俺も。 そのせいで、Cをやったときは、Rubyとは比べものにならないくらいのわかりやすさだ!って感動した。 きちんとやれば、Rubyも強力な言語なんだろうけど、なんかアレルギー見たくなっちゃって、やりたくもないw
BASIC -> Z80アセンブラ -> C -> 86アセンブラ -> C++ かな。
(子供時代---------------学生--------------仕事)
Windowsのアプリケーションじゃなくて、ゲームが作りたいならネット上で公開されている
実績のあるライブラリの力を借りた方がいいんじゃないかな。
言語はCでもC++でもいい。
Windowsはとにかくめんどくさい。作法を覚えることが多い。
最近のDirectXは初期化からテクスチャ表示までが激しく簡単になってるから、
なれてくればライブラリに頼らず移行できるかもしんない。
>>603 最初からは無理。壁にあたって挫折し、プログラム自体が嫌になるかもしれないから
もっと規模の小さいゲームからステップアップした方がいい。
オセロ → テトリス → シューティング/アクション → SLG/RPG とかね。ガンガレ若者。
Cだと絵をだすのも一苦労だから なにやりゃいいかわかんないんだよな。
617 :
名前は開発中のものです。 :2005/07/11(月) 21:32:34 ID:52olu18R
>>609 C#を一から勉強しようと思ったら、どの本読んだらいいですか?
アマゾンで検索したら、たくさん出てきてわかりません。
いきなりC#は無謀だろ。
>618 そうかい? 「いきなりC++でオブジェクト指向は無謀だろ」なら分かるけど、美しいコードを書ける書けないは別として、 初めに触れる言語がC#ってのは別に悪い選択ではないと思うけど。 VBから始めろって?
>>619 ちょっと調べてみたが、無謀ってほどじゃないかもしれない。
でも、初心者向けの情報が少ない気がする。
何がアレかって、C#の情報をC++の知識があること前提で 語ってるとこが多いことかな…。 もっと浸透して情報が充実してくれば、ズブの初心者にも 薦めやすいね。
Perl、PHP、JSPばかりしていてWindowsゲーアプリも作りたいなと思ってこのスレをのぞいたら…… 早速VS.NETを買ってお試し版をインスコしてC#をいじったら、あまりの簡単さに驚きました。 C#楽しすぎです。ハマりました。このスレに来て本当に良かった。
サムライワークス株式会社(所在地:東京都渋谷区、代表取締役:新島 実、以下
サムライワークス)は、英国The Game Creators社の開発した『DarkBASIC Professional』
の日本市場での独占販売権を取得し、『DarkBASIC Professional日本語版』を、
2005年7月8日にダウンロード版にて発売開始致します。
■概要
『DarkBASIC Professional日本語版』は高度な3Dゲームが作成可能な言語ソフトです。
さらにネットワーク対戦ゲームの作成にも対応しております。
今まで難しい言語ソフトを用いる必要があったPCゲームが、『DarkBASIC Professional
日本語版』を使うことにより、豊富な関数を利用して複雑なポリゴン処理を実現する高度な
3Dゲームが作成可能となります。
『DarkBASIC Professional日本語版』で作成したプログラムは、ライセンス使用料及び
著作権使用料がかかりません。
『DarkBASIC Professional日本語版』には、3Dキャラクター作成が可能な『Game Space
Lite』(英語版)とテクスチャ素材や3D素材を数百点を収納した『DarkMATTER』(英語版)
も同梱されていますので、すぐに3Dゲームの作成を始められます。充実した3D
キャラクターや素材があれば、市販ソフトに引けを取らない3Dゲームの制作が可能です。
製品種:Windows用ソフトウェア
製品名:DarkBASIC Professional日本語版
発売元:サムライワークス株式会社
発売日:2005年7月8日(金)
価 格:ダウンロード版 10,500円(税込)本体価格10,000円
パッケージ版 15,750円(税込)本体価格15,000円
http://shop.vector.co.jp/service/catalogue/sr062902/
>>623 使ってみた人いる?
どうもBASICと付いてると敬遠しがちなんだよなぁ…。
>>622 >早速VS.NETを買ってお試し版をインスコして
どっちやねん
>>624 HLとかDoomみたいなのは作れるってかいてあるね。
俺はまず、2Dドット絵でハアハアしたいからスルーする。
PCのスペックもぎりぎりだし。
C++覚えたら、メタセコ(もしくはGmax)使っての3Dゲーム作成になるだろうし。
>>625 VS.NETのtheSpokeには一ヶ月のお試し版が入ってたけど
通常のVS.NETにも似たようなの入ってるんじゃないのかな。
C#は興味あるんだが、VS.NETも金も無い…。 安く始める方法って無いもんだろうか?
学割で5000円弱 その前にβ版がタダで落とせたような。。
うん、2005のExpress版(β2)がMSで落とせるはずだから、 とりあえずそれ使ってみればいいんじゃないかな。
DrakBasicはキチガイを思い出すからねぇ。 印象最悪。
┏┓ ┏━┓ ┏┓ ┏━━━━┓ ┏┓ ┗┛ ┏┓ ┗┓┃┏┓┏┓ ┏┛┗━━┓┏━┓ ┃┏━━┓┃ ┏┛┗━┓┏┓┏┛┗━┓┃┃┃┃┃┃ ┗┓┏━━┛┗┓┃┏┓┏━━━┓┗┛ ┃┃ ┗┓┏━┛┗┛┗┓┏┓┃┗┛┃┃┗┛ ┃┃ ┏┓┗┛┃┃┗━━━┛ ┏━┛┃ ┏┛┃┏━┓ ┏┛┃┃┃ ┃┗━━┓ ┃┃┏━┛┗┓ ┃┃ ┃┏━┛ ┃┏┛┗━┛ ┗━┛┃┃ ┗━━┓┃ ┃┃┃┏┓┏┛ ┃┃┏┓ ┗┛ ┃┃┏━━┓ ┏┛┃ ┏━━┛┃ ┃┃┃┗┛┃ ┃┃┃┗━━┓ ┏┓ ┗┛┗━━┛ ┗━┛ ┗━━━┛ ┗┛┗━━┛ ┗┛┗━━━┛ ┗┛
634 :
名前は開発中のものです。 :2005/07/19(火) 20:46:29 ID:qScSwJS3
プログラムって手書き?
Cの勉強してみたら全然絵が出せなくて 本調べても出し方すら書いてなくて困惑したあの日。 …なんだよ、「WinAPI」って…
そうそう いつになったらゲームが作れるんだよ!って思った
PC9801のマニュアルを見て 「どうやってゲーム作るんだよ!」 と思ってた俺よりはましじゃん
>>638 そのマニュアルってN88日本語BASIC(86)リファレンスマニュアルとかいうやつ?
C言語にくらべりゃよっぼどゲームに近い事柄が書いてあるはずだけど。
>>639 DOSのマニュアルだよ
そのあとにいろいろ勉強して
Works動かしてたんだけどN88BASICの起動の仕方が分からなくて
フロッピーで手に入れてからは毎日プログラミングしていたのは懐かしいおもひで
641 :
名前は開発中のものです。 :2005/08/15(月) 21:01:52 ID:Bbh+qhM2
642 :
Z :2005/08/15(月) 23:23:31 ID:Gue0lvFU
>>636 winAPIと言うのはkんたんにいうとウインドウズを動かす命令。
初心者がこれに手を出すのはムボー。まぁ俺はやったけどな。
まずはコマンドラインプログラムから始めれ。
絵は出ないけどCの基本的なプログラムは全部これで出来る。
つうかAPIを使うのは基本的に入出力に対応する部分だけだ。
643 :
Z :2005/08/15(月) 23:36:29 ID:Gue0lvFU
>>637 おれは学生やってるが片手間にプログラム勉強してWINAPIでしょぼいシューティングを作れたのはプログラムの勉強一から始めてから大体一年か一年半くらいだ。
ま、俺より習得が早い奴はいっぱいいると思うが、凡人はこれくらいかかると思う。
それなりにしんどい。
が、自分の書いた絵が自分のプログラムで自分の思った通りに動いた時はマジで感動した。
ゲーム企画する奴等の殆どはゲーム考えるのはいいけど作るのはめんどい、とか思ってるだろーが、ゲーム作るのはゲームやるよりゲーム企画するより何倍も面白い。
>>643 あれだけ時間がかかったのは俺だけかと思ってた(´Д`)
そうか、やっぱり似たような者はいるものなのだなあ
すぐ完成させたいなら携帯アプリがいいと思う。
携帯アプリはJavaだけでしかできないん?
メーカー等できちんとライセンスを持って開発しているのなら、 JAVAだけとは限りません。
JavaかBREW
649 :
名前は開発中のものです。 :2005/08/22(月) 17:29:45 ID:fa4xGUL6
CとAPIでゲーム作ってます。 プレイヤーに見せたくないデータ(セーブや敵キャラの能力)ってどう扱えばいいんですか? テキストからだた読み取るだけでは見えてしまいます。 APIはwindowsゲームプログラミングを読んだだけの初心者です。
暗号化する やりかたは知らん('A`)
数値でそのままファイルに書き込めばいいよ。
652 :
名前は開発中のものです。 :2005/08/22(月) 18:56:01 ID:zc7K9NgN
バイナリ形式で保存してみたら? struct { ... } CData; CData data; fwrite(fp, &data, sizeof(CData)); // 多分 バイナリエディタで読み込まれたら終わりだけど★ まあ、公開鍵暗号を使わないと、理論的に完璧な暗号化は無理だし〜 こんなんでいいんとちゃう?
拡張子をTXT以外にするだけでいいんじゃね? datとか。それだけで大抵の香具師は読まない。
>>652 >まあ、公開鍵暗号を使わないと、理論的に完璧な暗号化は無理だし〜
別に。文字コードに1足すだけでも、それをわざわざ解析してやろうとか
思う香具師は皆無だろ。顧客の個人情報を管理するソフトとか作ろうって
わけじゃないんだし。たとえ解析した香具師がいたとしても製作者のサイト
のランキングページが荒れるだけだろ。
そもそも通信しているわけでもないのに、何故公開鍵? 馬鹿の一つ覚えで言ってみたかっただけだろう。 fwriteの使い方も間違えてるし。
656 :
名前は開発中のものです。 :2005/08/22(月) 19:50:42 ID:fa4xGUL6
>>650 >>651 >>652 >>653 レスありがとうございます。
暗号化って以外に難しいんですね。
653さんが仰ってるやり方が簡単そうでいいと思うんですが、
拡張子をdatに変えた場合、ファイルの操作方法はどうなるんでしょうか?
>>656 拡張子なんて、ファイル名の一部に過ぎないでしょ。拡張子でフォーマットが決まるわけではない
拡張子は、Windowsの場合OSと関連付けされていて、ダブルクリックしたときに開くプログラムが決まっているだけです。 たとえば、.mp3ならWindowsMediaPlayer、.txtならメモ帳、.docならWord というように プログラム内でファイルをfopen()などで開いて書き込んだりする場合は、拡張子はファイル名の一部の様なものなので、気にする必要はないです 暗号化は、 char chr='a'; printf("%c\n", chr); printf("%d\n", chr); これを実行すれば分かるけれど char型っていうのは出力時に「文字で出力するよ」っていうだけで、中身はint型のように数字で出来てる これを暗号化用関数と復号化用関数を作って変換させるんですよ
拡張子は、Windowsの場合OSと関連付けされていて、ダブルクリックしたときに開くプログラムが決まっているだけです。 >OSと ではなくて >OS(レジストリ)で起動すべきプログラムと だった
エロい人にはそれがわからんのです
661 :
656 :2005/08/23(火) 00:30:50 ID:KDjDsV1v
>>657 >>658 CじゃなくてAPIで操作したいのですが、
その場合も拡張子はファイル名の一部のようなものでしょうか?
ゲームつくり他逸す
>>661 一部な上ファイル名そのもの。切れない。
665 :
656 :2005/08/23(火) 20:47:08 ID:KDjDsV1v
>>663 >>664 ありがとうございます。ファイル名そのものですね。
データを編集したいときはテキストで開けば簡単に数値を変更できますし便利です。
666 :
656 :2005/08/24(水) 00:25:18 ID:WpgnZb3T
すみません。もうひとつ質問させてください。 敵キャラの数値をファイルにまとめて読み取る時などは SetFilePointer()を使ってファイルポインタを動かして ReadFile()で読み取る以外に方法はないでしょうか?
>>666 その方法に何か問題点があるなら、それに応じた代替策を提案できるかもしれないけど、
問題ないならそのまま使ったら?
大きく異なる手法を上げるとすれば、
・起動時(またはステージ開始時)に全ての(またはステージ単位の)敵パラメータを読み取っておく
・敵の種類の数だけパラメータファイルを用意する
そのくらいたいした量じゃないから一気に読み込んだらいいと思う。 ファイルは1個単位で読むのを前提で。
HSPでは画像を動かして操作するのは簡単だったんですが、Cはまたさらに一年もかかるんですか?
ほかの言語の経験があるなら一ヶ月もかからないとおもわれ。 そんな難解じゃないっすよ。
安心した・・・
Cの他に、WindowsならWIN32APIの勉強とかもしないといけないから、結構大変だよ。 Cそのものには画像関連の命令は無いから。
やっぱりAPIってのがくるのか・・・
Win32APIってBITMAPの命令しか無くね?
だといいんだが・・
まあ便利なAPIもあるからいいこともある
とりあえずvisual studio .NET2003買ってみたけどさっぱりわからん
第一歩を踏み出したか。 まずは "Hello C World" を出すんだ!
俺もVB.netこのスレに便乗してやるか でもやるんならCの方がいいかも どっちを勧める?
c
C#
>>679 とりあえず、なにか作りたいならVB.net(習得だけで、ゲームは作れるし。2ヶ月あればそこそこいける)
そうじゃないなら、C
ただし、後者の場合C自体の習得に1ヶ月さらにC++とAPIでもう一ヶ月。DirectXでさらに2ヶ月
ぐらいは掛ると思ったほうがいい。その分、できるようになれば、あれもこれも・・・・
まぁ、無難にVBを薦めておく。
初心者でつ。 エロゲを、Nスクとかツール使わずに1からC++で作ろうと思って勉強してますが、難しい…。初心者がコンパイラとサクラエディタだけでやるのは無謀でしょうか? あとC++以外にも必要ですよね?
なんのC++かはわからんが ウィンドウズプログラムが作れるならそれだけでできる。
絵をファイルやリソースから読み込んで表示。 キーボードやマウスの入力に応じてアクション。 とりあえずこれらができればゲームにはなると思うけど。
レスありがとうございます。ウインドウズプログラム…知らない単語なのでググってきます。 何のC++と言ってましたが、種類あるんですか!? 今はコンパイラはボーランドの無料体験のを使って勉強してます。
日本語に種類があるんですか? といえば標準語があって方言がある。 C++ も規格で定められた標準があって、Visual C++ なり Borland C++ なりそれぞれの 処理系でしか使えない方言のようなものがある。また、 あなたのいう「C++以外」がどのようなものを想定しているのかは分からないが。
方言みたいなのは理解できました。ありがとうございます。 C++以外というのは、(私がおそらく勉強しはじめだからと思うんですが)、コンパイルしてできたexeファイルがコマンドプロンプトの画面でしか実行できないんで、何か他のプログラム?(MFCみたいなの)が必要なのかなと思ってるんです。 ちなみに、まだ入門のクラスやらデストラクタをやっているくらいのレベルです。
MFC の C は class の C。だから C++ で書かれたプログラム。 BCC では使えないので今は気にしなくていい。 Windows っぽいプログラムを作るには Win32 API というものを使う。 ↓の MessageBox が API を使う関数。 #include <windows.h> int main() { MessageBox(NULL, "こんにちは", "ご挨拶", MB_OK) ; return 0 ; }
色々ありがとうございました! きっかけがわかったので、あとはググって調べてみたいと思います。 ゲームできるように頑張ります。ありがとうございました。
「猫でもわかるWindowsプログラミング(粂井康孝著2003年初版)」 って本を読んで 最初の「単なるウィンドウを出す」ソースを打ち込んでみました。 ・・エラー二つ出てコンパイル不可。 自分の入力がおかしかったのかと思い 付属ディスクのソースでコンパイル。 ・・やっぱりエラー二つ出て不可orz 始まって9ページ目からつまづきました。 本は買わずに、図書館で借りてきてよかったけれども。 VC++5.0を使っているのですが、こんなこともあるんですね。 とりあえずウィンドウ出してみたいんだけどなあ。 また本探しだ。
>>691 猫でもわかるのソースは新しいコンパイラだとエラーが出るよ
多分キャストされてないからだと思う
GetStockObject(WHITE_BRUSH) を (HBRUSH)GetStockObject(WHITE_BRUSH) とキャストするべし
>>692 ,693
お返事ありがとうございます。
教えていただいたキャストは行われていたようです。
すみませんです^^;
(ソースの冒頭より一部)
#include <windows.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
ATOM InitApp(HINSTANCE);
BOOL InitInstance(HINSTANCE, int);
char szClassName{} = "sample01"; //ウィンドウクラス
int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst,
LPSTR lpsCmdLine, int nCmdShow)
{(←ここでエラー出されてます)
(エラー内容)
無効なトークン '{' が 'szClassName' の宣言の後にあらわれました。
'int' : 指定された型は、識別子の名前を指定せずに宣言されています。
このようなエラー内容なのですが、おかしいのはどこなのでしょうか。
エラーちゃんと読んでる? char配列は {} じゃなくて [] だろう。 Windows云々の前にC言語をちゃんと勉強したほうがいいと思う。
>>695 あ、すみません。打ち間違えですね。
けれど、打ち変えても同じエラーが出るのですが・・
(本付属のディスクのサンプルプログラムを使用しても同じエラーです)
エラーが出るのなら、エラー箇所とエラーメッセージを書いて分かりやすく。 助言したくてもどんな状況か分からないと出来ないよ。 そこは直したって事は別の箇所でしょ?
>>695 で直した[]で、エラーメッセージに変わりはないです。
エラー場所は同じ箇所です。
状況は
>>694 から全く変わっていないです。
>>696 の「同じエラーがでるのですが・・」では意味が通らなかったでしょうか。
すみません。
エエー、そんなはずは。
>>695 の箇所を直せばそのエラーは出ないはず。
ソースの全文上げてみたら? どこがおかしいか分かるかもしれない。
ソース全文が長く貼り付けるには申し訳ありませんので また本読み直したりしてみます。 ご親切に色々お付き合い頂きありがとうございましたm(_ _)m
質問です。 1からC++をはじめたら、エロゲーみたいなのが作れるようになるまでどんくらいかかりますか? あとCPPだけであんなふうにゲーム作れるんでしょうか?
> 1からC++をはじめたら、エロゲーみたいなのが作れるようになるまでどんくらいかかりますか? 人によるとしか言い様がありません。 > あとCPPだけであんなふうにゲーム作れるんでしょうか? CPPとは? C++ のことならプログラミング面でなら C++ の処理系だけで基本的には事足りるでしょう。 「あんなふう」がどんなのなのか具体的に分かりませんが。エロゲーといってもいろいろあるだろうし。
>>701 答えます。
貴方には一生不可能です。断言できます。
だれか聖剣2みたいなアクションRPG作れるように鍛えてくれる型いませんか? 言語はC++ならちょくちょく出来ます。
今どこまでできるん?
706 :
704 :2005/11/28(月) 01:44:03 ID:C7MsayDa
ウィンドウズなら、MSDNをみながら頑張ればほとんどの事は出来ると思います。 時間はかかると思いますが。 でも、設計や実現方法などがよくわからなくて・・・。 ソースを添削したり、ご意見などを頂ければうれしいのですが。 ちなみにこのようなゲームはアクションゲームを参考に作った方が良いのですか?
んー。704タンは、かなりお勉強してる人っぽいですね。 少なくともWin32プログラムに関しては、私よかできるっぽい。 まずはゲーム作りのさわりの部分だけなら、 少しだけお役に立てるかも。てゆか、プログラム晒したらここ見てる 私以外のすぺしゃるなプログラマさんもアドバイスくれるかと。 私はWindowsのDDBとDIBしか知らないので、 それ以外の描画法ではお役に立てないっぽいです。。 さて、では現在以下の事項のどれぐらいが可能ですか? ・窓出す ・絵出す ・Bitmap読み込み関数作れる ・キー入力で絵を動かす ・ダブルバッファリング ・背景を切り抜いてキャラ表示 あ、例がほしいなら言ってくだされ。 ぶっちゃけ超雑魚である私も一緒にお勉強したいから ^^
お、良スレ??
>>707 日曜プログラマー再開した俺も混ぜてクレ
・Bitmap読み込み関数作れる :
これはLoadImageでFile、リソースを読むのと、
BITMAPファイルヘッダBITMAPINFOでDIB作ってそこに読み込むのあるよね。
DIBはMicrosoftのCDibってクラスがネットにころがってるのを利用してる(便利だとおも)
LoadImageでしばらく苦労した。
リソースを読み込む場合
m_hImg1 = ::LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(IDB_BITMAP1),
IMAGE_BITMAP,0,0,LR_LOADTRANSPARENT);
MAKEINTRESOURCE()を使ってやっと読み込めた。これって普通なのかな?
・ダブルバッファリング
やろうとしてそのタイミングで悩みました。MFCでやってるからかな。
今は
void CChildView::PreSubclassWindow() {
...
AfxGetApp()->m_pMainWnd->GetWindowRect(rct); //ClientRectでは駄目みたい
CClientDC dc(this);
m_pdcView = new CDC;
m_pdcView->CreateCompatibleDC(&dc);
m_memView.CreateCompatibleBitmap(&dc,rct.Width(),rct.Height());//適切な大きさってなんだろう?
m_pOldbmp = m_pdcView->SelectObject(&m_memView);
...
}
PresubclassWindow newしてますが他にもっと自然な方法とかありますか?
ゲームはMFC使わんほうがいいと思う。
ゲームを作ろうと思い立ち、HSPを始めた。……15分で挫折した。 なんだこれは。暗号か?嫌がらせか?みんな、こんな難しいことやってんのか? …これからは、どんなにしょぼいゲームでも馬鹿にしないようにしよう…
ひとつ大人になったということだな
>>711 GUIを使わないなら利点を得られないってことかな。
ゲームはWindows特有のコード部分はあまりないんで。
細かいとこもいじりやすいし。
MFCを使える環境ならWTLをお勧めしておく。 あれは意外と良いモノだ。
>>716 WTL7.1はダウソしてありますが、まだ未熟者なのでしばらくMFC環境でシコシコやってました。
でも、704も707も居なくなってしまったんですな…
漏れが混ぜてクレなどと書いたのがいかんかったかなとか思って書き込みやめてみたんですが
つづき 「背景を切り抜いて」 なんですが、これはやぱりモノクロビットマップでマスク用DDBを作りますよね? で、基本はファイルからDIBに読み込んで置いて、からDDBを作って同時にマスク用DDBも作る って感じで DIBとは別にDDBのクラスを作っているところ この場合、別のクラスにしてしまうつもりなんですが、DIBのクラスを継承してDDBイメージも持たせちゃう方がいいですかねぇ?
DIBで読み込むんならDIBのままつかったほうがいいんでないの
>>719 707で
・背景を切り抜いてキャラ表示
なのでてっきりマスクDDB作るのかなあと思ってました。
DIBだけの処理なんですが、学習中なので24bitビットマップ同士とかの処理しかできませんorz
最近DIBからImage本体とMask用のDDBをセットでクリエイトする方法をやってみようとしてたところだったんで
その方向で書いてました。
マスクビットマップあると何気に面白いッス
Visual Studio Expressが発売されたら おれもここに来て勉強するぞー
BETA2おとせばええやん。 無料だよ?
期限があるから使いにくい
うるせー馬鹿
725 :
721 :2005/12/12(月) 17:58:36 ID:jY+k4jNo
>>722 無料で手に入るとは…早速BETA2落としてみました
インストールしたら、しばらくは猫ワカやってみます。
727 :
721 :2005/12/13(火) 21:39:35 ID:+8731oKE
HDDの空き容量足りなくてインストール不可能だった ('`)ァァァァァァ
>>727 EXPRESSでHDDってどれぐらい食うの?
>>728 自己解決 1.3GBだな、漏れはXPのSP2入れてないから…
>>729 また、誰も居なくなってしまったなー
一般的なズブの初心者にはMSの要求スペックは高すぎってことかなと
ズブの初心者が始められる環境を考えてみようと調べてみた。
(漏れも初心者級なので自分のためにもなる)
ズブの初心者でも周りに仲間が居る場合は問題ないのでそうじゃない場合を考えてみる。
OS:OSはWindows系(ありふれた初心者なら) 言語:HSPに行っちゃう方が自然だが9月からの流れはCというかC++ C++でエロゲ、猫でも本のコンパイルが出来ない(これはCなんだがキャストがウザイのはC++風味) なんだかC++以前の気もするが気を取り直してつづきを
733 :
だめぽ :2006/01/04(水) 02:01:11 ID:NsRcQhHm
なでしこじゃ教えてもらえませんか?>OLL
734 :
名前は開発中のものです。 :2006/01/05(木) 12:15:09 ID:opsCm8oA
携帯アプリを作ってるんですけど、自作の曲をフリーで公開しているサイトなどを知ってる方はいませんか? ネット環境が携帯しかないのでなかなか検索にそういうサイトがひっかかりませんors
パソコンにしなはれ
736 :
名前は開発中のものです。 :2006/01/05(木) 18:53:07 ID:wT0vTzhf
HSPって2.61と3.0どっちがオススメでしょうか?
Cが少し分かる程度の初心者ですが、シューティングゲームが作りたいので がんばってみようかと思います。 手元にあるのはVC6.0。何年かかるか分からないけどコツコツいくかー。
がんがれ
頑張ってー
740 :
BM777 :2006/01/06(金) 23:46:58 ID:9HXkPUFz
>>737 漏れも、この間からC言語を独学で勉強し始めた
お互いがんがろう
741 :
737 :2006/01/06(金) 23:59:02 ID:B0ZxTwAo
今日はクラスについて勉強した。
継承とかコンストラクタとかいまいち分からん・・・
>>740 がんばろー
C++をやっただけじゃあウインドウズプログラミングはできないのか。 猫さんの最初のソースをビルドしたら、キャスト作れみたいになった。調べたらキャストってC独特みたい。難しい。ビルドできない。最初の壁かも。
実引数と仮引数の型を合わせるだけじゃないの
const char* hoge = "hogehoge"; char* test = (char*)hoge;
>>742 どこの何行目で引っかかってるかを言え。
さすれば道が開けるかもしれん。
746 :
BM777 :2006/01/07(土) 11:07:19 ID:almc6Hht
これから仕事なんで、帰ってきたらつまづいてる所を晒します。 明示的なキャスト…Cの本も必要かな。買ってこよう。
>>742 恐らく、キャストしろってのは
CのソースをC++でコンパイルしているから言われるんだと思う。
ここからはソース見ずに憶測で書くので
見当違いなこと言ってるかもしれんが、ソースの最後の方に
return msg.wParam;
ってのがあって、そこでキャストしろと言われたりしていないか?
そこでは
return (int)msg.wParam;
と直せばうまくいくはず。これでエラーが消えたと思われ。
もしかしたら、HBRUSHにキャストしろというエラーも出てるかもしれんが
これは自分でエラー文見てどこ直せばいいか探してくれ。
749 :
748 :2006/01/07(土) 14:59:28 ID:f7WS+7/d
まあCキャストだけわかってればなんとかなるんだけどな。
確かに、焦りすぎかもしれません。もう一度別の本でC++見なおしてみます。 ちなみにエラーは、HBRUSH関連のキャストでした。
あー、はいはい WinMain の中のやつでしょ。 それたぶん普通にCタイプのキャストすれば通るよん。
>>752 はい。それはわかるんですが、勉強不足のため、どうキャストしたら良いのかわからないんです。
なのでCでキャストについて勉強してみたいと思います。皆さん、御返答ありがとうございました。
>>753 myProg.hbrBackground =(HBRUSH )GetStockObject(WHITE_BRUSH);
>>754 キャストの意味が理解できました。感謝です!
756 :
754 :2006/01/08(日) 00:44:22 ID:o+AQmuYa
>>755 でも.CPPじゃなしに.Cでやってればキャストなしで通ってwindowでたッスよ
(cppでやるぜって気概は買いますが)
>>756 .Cでやると、fatal error LNK1181でファイルが開けませんってエラーが出るんです。
使用環境は、VC2005EEにPSDKとDXSDKを足してやってます。
ちなみに、.CPPでキャストをしたら、ビルドできました。中の文字は意味不明になってましたが順次解決していきます。
>>757 .Cのビルドについては自己解決しました。
あとはこの文字化けをなんとかして先にすすみます。早くゲーム作りたいです。
>>757 LINKエラーの1181はファイルがないよーーってやつでコンパイルはOKだったってことだとオモ
VC2005は持ってないので分かんないけどVC6では普通に一発OKだった。
BCC5.5.1も -WでBCC32で一発OKでした。
VC++ではWIN32Applicatinで空のプロジェクトを作ってそこに入れただけだったんだがなあ。
別のPCにExpressを入れる予定だから入れたらやってみます。
さんざんヒントもらっといて自己解決でもねえだろーがよw
762 :
737 :2006/01/08(日) 22:45:59 ID:RME4f8+W
ようやくクラスの概要が分かったような。うーん、先は長い・・・ 以上チラシの裏
758の文字化けは多分でふぉがUNICODEかどうかなんだろうが、解決したのかね
>>763 お恥ずかしながら、まだ原因を調べてます。
UNICODE関連であることはLPCWSTRとかでわかったのですが、まだ頑張ってます。ゲーム作るためにも技術をものにします。
原因解決!コードじゃなく、プロジェクトのプロパティだったとは…
ピュアネスな初心者がやってまいりました。
どんなにピュアだろうが、初心者だろうが、 ゲーム製作のためにこの板に辿り着いた奴は応援する!! でも、面倒なので、面倒はみませんよ?
でも面倒見てもらえないとなにもできませんよ?
>>769 よーし、それじゃ使用するC++のコンパイラを決めよう
Visual Studio C++ 2005 Express か BCC5.5.1どちかを使うか決めてくれ
(gccやdev-cこのスレでは無理っぽいぞ)
>>770 まー、>737はVC6だが、その上の椰子も一人はVC6後は消えた
俺はVC++で頑張ってます。むずいー。ってかリソースエディタ無いんですね…
>>772 ソリューション エクスプローラで
***.rcをクリックするとリソースビューが出てしまいますよね。
これは腹が立つので、**.rcを右クリックしてとりあえずTextEditorを既定値にしませうw
メニューの追加などは、しばらくエディターでやるしかないんですが
同時にResouce.hを開いて、
#define _APS_NEXT_SYMED_VALUE110
の値をみると110なので追加するときは上で#fdefine ID.... 110以上の値を書いてやる。
それに応じて#define _APS_NEXT..もつじつまがあうように直しておくと良いかも。
これでメニューの追加ぐらいは何とかなりますね。
772を読んでからBCCFormを関連付けしてやってみたら、DialogBoxでウザいことになってしまったorz
すみません。 >772はExpressでつ。最初からリソース自体がグレーアウトしてて選択できないんで、resouce.hも作れないんで自分でヘッダ、リソースファイル書いてます。
>>770 よーしそれじゃ前者だ
ってか有償ソフト必要?
776 :
773 :2006/01/15(日) 21:27:46 ID:+fLmdGs2
>>775 上の方で>721が Visual StudioC++2005 ExpressをダウンロードしたけどHDDの容量不足で泣いたようだ。
自分のPCに合わせてBCC5.5,1かExpressかを選ぶことになる。
PSDKは無料、DirectXSDKも無料だから始めるには無料ですむ。
BCCは無料の開発環境を見つける。BccDev,Visual Windows for BC++,CPad,あたりだと思う。
私もズブの素人なのでこの程度しか知らない。
778 :
774 :2006/01/15(日) 22:11:16 ID:ldWKl/mO
あ、いえPSDKもインストして、設定もいじってしっかりwin32コンソールアプリケーションできます。けどいつも空のオブジェクトからやってるんで、リソースエディタ単体がほしいんです。
779 :
772 :2006/01/15(日) 22:17:02 ID:ldWKl/mO
すみません。
>>773 さんが言ってくださったことは全て終えてます。ちなみにサクラエディタを割り当ててます。
>>779 ああー、余計なお世話だったのね
リソースエディタですが、先ほど言ったBCCFormでMENUとかは行けると思いますよ。
>780 いえ、情報感謝しております。ム板でフリーのリソースエディタ公開してるサイトが貼られていたので、試しにそれも使ってみます。
>>782 それでつ。
お互い頑張りましょう!
ちなみに、私はノベルゲーム作りたく頑張ってます。
784 :
782 :2006/01/17(火) 00:45:38 ID:BXbuCNxJ
ずぶの素人です。趣味でゲーム作りたくて「やさしいC++」ぐらいの初歩の内容なら理解できるようになりました。 すれ違いかもしれませんが次おすすめの本あるでしょうか? ちょっと背伸びすると急に難度が高くなってさっぱりで困ってます。
俺ははじめてのC++ってのを読んで、ポインタから仮想GUIを完璧に理解してから、同じ著者のC++の演習の本読んだよ。そのあとは粂井氏の猫でもわかるウインドウズプログラミングを読み(←今ここ)、最後にダイレクトXへ進む予定です。
>>786 Windowsでのプログラムを前提として答えると
翔泳社 プログラマ養成入門講座 VisualC++(1)山本信雄 が良いかな。
背伸びしなくて行けます
それと折角C++をやってるんだから気分を出すために、オライリーのリファレンス2冊
C++ライブラリ、C++ランゲージ、お金に余裕があるならこの2冊は持っててOk
背伸びしないにしても、読まないにしてもリファレンスは持っていたほうが良いです。
プログラマはいらんのか。音できるけどなぁ。初めてまだ数か月だし…
ズブの初心者スレで募集って、ズブの初心者がスタッフとして必要なのか?
792 :
名前は開発中のものです。 :2006/02/05(日) 09:41:20 ID:c7olZgCS
age
>>789 なんだこれw
タイトルが大仰な所が厨くせえw
794 :
名前は開発中のものです。 :2006/02/05(日) 18:31:02 ID:KXWCIvRf
超初心者ですがC#でプログラムを組むべくVisualC#をインストールしました。 初心者にお勧めの簡単なお題ををお願いいします
>>794 まずブロック崩し
そしてシューティング
が王道じゃね?
>>794 お題をくれてやるから
できたら必ず申告しろ
1:「ゲムデヴ wiki」とぐぐる
2:その中の段階的学習を読んで感想文を書く
798 :
名前は開発中のものです。 :2006/03/13(月) 15:51:09 ID:SdjQ4hhJ
今から俺がゲーム作るまで実況するお まずHSPいれた mes "hello, HSP" F5を押した 「実行用ランタイムファイルが見つかりません。」 挫折した
>>798 ゲーム作るまで実況するんだろ?
そんなことで挫折してどうする
800 :
名前は開発中のものです。 :2006/03/13(月) 16:16:41 ID:SdjQ4hhJ
アンインストールしたら動いた
さっきは3.1βを入れたのがまずかったらしい
過去ログ読んで勉強中
>>32 に感動した
でもそれは3目並べじゃないと思った
801 :
名前は開発中のものです。 :2006/03/13(月) 16:32:48 ID:SdjQ4hhJ
*start
await 1
cls
pos 0,0: mes mousex
pos 0,16: mes mousey
goto *start
うまく動かない
clsとawaitの位置を入れ替えたらうまくいくが理由がわからない
気にしても仕方がないので次いってみよー
>>799 人間は挫折の数だけ賢くなるんやでってあんちゃんがいってた
802 :
名前は開発中のものです。 :2006/03/13(月) 17:19:17 ID:SdjQ4hhJ
screen 0,640,480 map_width=79 map_height=59 dim map, map_width, map_height //一番外の壁 for y, 0, map_height for x, 0, map_width map.x.y=1 next next for y, 1, map_height-1 for x, 1, map_width-1 map.x.y=0 next next //1マス間隔で置く for y, 2, map_height-2, 2 for x, 2, map_width-2, 2 map.x.y=1 next next
803 :
名前は開発中のものです。 :2006/03/13(月) 17:21:43 ID:SdjQ4hhJ
//計算用の補助変数 dim ax,4 dim ay,4 ax.0=0 ax.1=1 ax.2=0 ax.3=-1 ay.0=-1 ay.1=0 ay.2=1 ay.3=0 //1マス間隔の壁のまわりにランダムに置く for y, 2, map_height-2, 2 for x, 2, map_width-2, 2 rx=x+ax.rnd(4) ry=y+ay.rnd(4) map.rx.ry=1 next next for y, 0, map_height for x, 0, map_width if map.x.y=1:boxf x*8, y*8, x*8+7, y*8+7 next next
804 :
名前は開発中のものです。 :2006/03/13(月) 17:30:32 ID:SdjQ4hhJ
805 :
名前は開発中のものです。 :2006/03/13(月) 17:47:11 ID:SdjQ4hhJ
wikiをみてきた
CやDelphiだらけでちょっと焦る
HSPやってる場合じゃないのか・・・・
ジエンの無人島
http://gamdev.org/w/?%5B%5B%A5%B8%A5%A8%A5%F3%A4%CE%CC%B5%BF%CD%C5%E7%5D%5D やっとHSPのソースをみつけた
stick命令の使い方を把握
変数に日本語を使えることに感動
if ゲーム状態==移動モード {
if 入力キー==32 : ゲーム状態=会話モード : gosub *チャット窓表示 : return
if 入力キー==1 : MOVE送信="move,"+NO+",-1,0" : ゲーム状態=待機モード : return
if 入力キー==2 : MOVE送信="move,"+NO+",0,-1" : ゲーム状態=待機モード : return
if 入力キー==4 : MOVE送信="move,"+NO+",1,0" : ゲーム状態=待機モード : return
if 入力キー==8 : MOVE送信="move,"+NO+",0,1" : ゲーム状態=待機モード : return
}
ひょっとしてこれMMORPGですか
スゲー!
806 :
名前は開発中のものです。 :2006/03/13(月) 17:53:06 ID:SdjQ4hhJ
>>805 のソースの手間にこれを追加
stick 入力キー,15,1
807 :
名前は開発中のものです。 :2006/03/13(月) 18:28:11 ID:SdjQ4hhJ
*start await 1 cls boxf x,y,x+8,y+8 stick keyboard,15,1 switch keyboard case 1 x=x-1 swbreak case 2 y=y-1 swbreak case 4 x=x+1 swbreak case 8 y=y+1 swbreak swend goto *start stick命令は把握した 次は画面にbmpファイルとか絵を出す
808 :
名前は開発中のものです。 :2006/03/13(月) 19:00:53 ID:SdjQ4hhJ
screen 2,1024,768,2 //裏画面を作る。P4は非表示なので2 picload "utada.jpg",2 //裏画面に読み込み。これも非表示なので2 screen 0,640,480 //表示する画面は0、大きさを640x480に設定 *start await 1 //これ絶対いれないとフリーズする gcopy 2,i,0,640,480 //画面2からコピーする。コピー先はscreenで指定した画面 i=i+1 goto *start stop screen命令がちょっとやっかいだった これは二種類のことを同時にしてるんだと理解した ・画面をつくる ・描画する画面を切り替える で、疑問に思ったのが切り替えだけする方法がないの?ってこと screen命令だと今まで描いた絵が消されてしまう とにかく入力と描画ができたのでなんかゲームつくりはじめてみる
gsel ,
810 :
名前は開発中のものです。 :2006/03/13(月) 21:32:02 ID:SdjQ4hhJ
>>809 サンキュー
これでチラツキを抑えることができる!
企画書とか設計図とかって書いてる?
意味のある企画書とか設計図とか書けるようになったら、 初心者卒業かと。。。
>>801 マウス座標はwait等でOSにタスクを移した時にmousex,yに代入される
clsは画面だけでなく他の情報もクリアされる
801の場合
await 1 ;マウス座標収得
cls ;マウス座標クリア
当然mousexは0
画面クリアを他の命令で行うか、clsの後にawait 0にする
しかし、clsを使う場合はclsからawait中にマウスの動きが無い場合
マウス座標収得はできない
814 :
名前は開発中のものです。 :2006/03/14(火) 00:36:39 ID:gAnxDyH2
>>812 「設計」って言葉の意味がわからない。
そんなオレのプログラムはいつも途中で破綻しちゃうのさ・・
今STGを作ってるんですが メインループにあれもこれも積んで 1フレーム中にすごい数の処理をするようになってしまいました 必要な時に呼び出すタスクシステムってのを見たんですが むずいですね・・・ あまりにソースがごちゃごちゃなんで今1から作り直してます・・
816 :
名前は開発中のものです。 :2006/03/14(火) 20:16:51 ID:BjyEc4sd
企画書=他人を説得するもの=個人製作には不要 設計図=フローチャートや変数表とか?UMLってやつもそうなのかな だいたいこんな理解だ
817 :
名前は開発中のものです。 :2006/03/14(火) 20:55:57 ID:BjyEc4sd
//裏画面 screen 1,640,480,2 //自機 screen 2,32,32,2 picload "jiki.bmp",2 //敵機 screen 3,128,128,2 picload "teki.bmp",2 //変数 cx=320 cy=400 cx_min=0 cx_max=640-128 tx=100 ty=32 tx_min=0 tx_max=640-128 tx_speed=8 tx_dir=tx_speed
818 :
名前は開発中のものです。 :2006/03/14(火) 20:56:28 ID:BjyEc4sd
screen 0,640,480 cls 4 repeat //敵を動かす tx=tx+tx_dir if tx>tx_max : tx_dir=-1*tx_speed : ty=ty+8 if tx<tx_min : tx_dir= tx_speed : ty=ty+8 //裏画面を作る gsel 1,-1 cls 4 await 1 pos cx,cy: gcopy 2, 0,0 pos tx,ty:gcopy 3, 0,0,128,128 //表画面へコピー gsel 0,1 pos 0,0: gcopy 1,0,0,640,480 loop
819 :
名前は開発中のものです。 :2006/03/14(火) 21:02:21 ID:BjyEc4sd
インベーダー風のゲームを作ることにした やっぱ作りながら覚えるのがプログラミングですよね 昨日教えてもらった命令を使ってチラツキ対策完了 敵が左右に動くところまで作った 次は自機の操作を作ってくる
820 :
名前は開発中のものです。 :2006/03/14(火) 21:26:18 ID:BjyEc4sd
//自機操作 stick keyboard,15,1 switch keyboard case 1 cx=cx-cx_speed swbreak case 4 cx=cx+cx_speed swbreak case 64 if benable=0 { benable=1 bx=cx+16 by=cy } swend if cx>cx_max : cx=cx-cx_speed if cx<cx_min : cx=cx+cx_speed //自機弾 if benable=1 { by=by-bspeed if by<0 : benable=0 }
821 :
名前は開発中のものです。 :2006/03/14(火) 21:33:19 ID:BjyEc4sd
822 :
名前は開発中のものです。 :2006/03/14(火) 23:19:42 ID:BjyEc4sd
//裏画面 screen 1,640,480,2 //自機 screen 2,32,32,2 picload "jiki.bmp",2 //敵機 screen 3,128,128,2 picload "teki.bmp",2 //変数 cx=320 cy=400 cx_min=0 cx_max=640-32 cx_speed=4 tx=100 ty=32 tx_min=0 tx_max=640-128 tx_speed=8 tx_dir=tx_speed dim bx,10 dim by,10 dim bspeed,10 dim blength,10 dim benable,10
823 :
名前は開発中のものです。 :2006/03/14(火) 23:20:26 ID:BjyEc4sd
for i,0,10 bspeed.i=16 blength.i=16 benable.i=0 next screen 0,640,480 cls 4 repeat //敵を動かす tx=tx+tx_dir if tx>tx_max : tx_dir=-1*tx_speed : ty=ty+8 if tx<tx_min : tx_dir= tx_speed : ty=ty+8 //自機操作 stick keyboard,15,1 switch keyboard case 1 cx=cx-cx_speed swbreak case 4 cx=cx+cx_speed swbreak case 64 for i, 0, 10 if benable.i=0 { benable.i=1 bx.i=cx+16 by.i=cy goto *fire_end }
824 :
名前は開発中のものです。 :2006/03/14(火) 23:20:57 ID:BjyEc4sd
next *fire_end swend if cx>cx_max : cx=cx-cx_speed if cx<cx_min : cx=cx+cx_speed //自機弾 for i,0,10 if benable.i=1 { by.i=by.i-bspeed if by.i<0 : benable.i=0 } next //裏画面を作る gsel 1,-1 cls 4 await 1 pos cx,cy: gcopy 2, 0,0 pos tx,ty:gcopy 3, 0,0,128,128 for i,0,10 if benable.i=1 : color 255,255,255: line bx.i, by.i, bx.i, by.i+blength.i next //表画面へコピー gsel 0,1 pos 0,0: gcopy 1,0,0,640,480 loop
825 :
名前は開発中のものです。 :2006/03/14(火) 23:45:46 ID:BjyEc4sd
弾をたくさん出せるようになった
配列確保して弾を使い終わったらフラグをオフにしてる
ソース
>>822-824 最高何発まで出せるかが配列に制限される
これをなんとかしたい
案1.配列をたくさん確保しておく
何の解決にもなってないけど今の知識では現実的な妥協点
メリット:実現の目処が立っている
デメリット:必要な配列数を事前に計算する必要がある
あまりデメリットはないかもしれない
案2.動的に確保する(線形リスト)
思いついたコードがこれ
pNext=5
dim task, 5
dim a.pNext, 5
配列に配列を入れるっていう方法で線形リストを作れないか試したけど失敗
案3.動的に確保する(動的配列)
まず2つの配列を用意する
増減があるたびにdimで配列を確保してコピーする
増減が多いと配列全体のコピーが頻発するからゲームには向かないっぽい
増減が少ない場合は空の配列をチェックしなくて済むので案1.より高速
どれもいまいちピンとこない
プログラムで処理しようって時に、上限を設けないってのは難しいので 案1でとりあえずはいいんじゃないか。
妥協せずに 案3でいけ
828 :
名前は開発中のものです。 :2006/03/15(水) 22:53:10 ID:CsslkguR
疑似タスクシステム思いついた
829 :
名前は開発中のものです。 :2006/03/15(水) 23:43:00 ID:CsslkguR
タスクシステムというのはタスクで構成されたタスクリストのこと
タスクは次の情報をもっている
・キャラクタ1体の情報(X、Y座標やHPなど)
・キャラクタの振る舞い(どのサブルーチンを呼ぶか)
・次のキャラクタ(次にどのタスクを実行すればいいか)
タスクが繋がった状態のデータ構造をタスクリストという
タスクシステムは次の機能をもっている
・タスクの追加
・タスクの削除
ほかの言語だと「次のキャラクタ」にポインタを使う
そうすれば動的に確保したタスクを使えるからだ
でもHSPにはポインタがない
代わりに配列の添え字を使う
もし配列のサイズが足りなくなれば案3(
>>825 )の方法で配列を大きくする
ただし頻繁にサイズを変更するとデータのコピーに時間が時間がかかる
そこでサイズを変更するときは1つずつ増やすのではなく一気にたくさん増やす
まとめ終わり
とりあえず今考えてることをまとめてみた
Dim命令で配列サイズ変更すると内容がすべて0クリアされるのが痛い
「1つずつ増やすのではなく〜」の部分はこれを書いている最中に思いついた
これさえうまく組めばサイズ可変は速度低下ほぼなしでいけそう
830 :
名前は開発中のものです。 :2006/03/16(木) 03:29:18 ID:gXQpHvOV
831 :
名前は開発中のものです。 :2006/03/16(木) 04:04:18 ID:UYzIbXI8
マジな話し、 ズブってなんですか? ゲーム作るのに金かかりますか? 一般人の俺はゲーム作っていいんですか? オンラインアクションゲームを作るのは可能ですか?
俺もタスクやっちゃおっかな
833 :
名前は開発中のものです。 :2006/03/16(木) 10:23:03 ID:Je4b2YY9
GameDevWikiからシューティングのソースDLしてきて見ながらやってる すごいまとまってて参考になる
ゲーム作りたい人はやっぱり専門学校に行くのがベストでしょうか?
>>834 ベストじゃないです。
余程の意思がない限り大学に行くべきです。
俺は専門学生ですが。
837 :
名前は開発中のものです。 :2006/03/16(木) 21:49:10 ID:gXQpHvOV
838 :
名前は開発中のものです。 :2006/03/16(木) 22:02:29 ID:gXQpHvOV
//タスク初期化 gosub *init_task screen 0,640,480 screen 1,640,480,2 repeat gsel 1,-1 cls 4 await 1 color 255,255,255 gosub *task_factory0 //タスクシステム実行 gosub *run_task //デバッグ情報 mes "---sp---" mes sp mes "---np---" mes np mes "---TaskList---" gosub *show_task_busy // gosub *show_task_null // gosub *show_task_all //裏画面を表にコピー gsel 0,1 gcopy 1,0,0,640,480 loop stop
839 :
名前は開発中のものです。 :2006/03/16(木) 22:03:02 ID:gXQpHvOV
//タスクのサブルーチン *sub0 tl.it.2=tl.it.2+cos(tl.it.4/100)*10 tl.it.3=tl.it.3+sin(tl.it.5/100)*10 pset tl.it.2, tl.it.3 if (tl.it.2 < 0) or (tl.it.2 > 640) or (tl.it.3 < 0) or (tl.it.3 > 480) { tl.it.6=1 } return *sub1 return *sub2 return *sub3 return *sub4 return
840 :
名前は開発中のものです。 :2006/03/16(木) 22:03:32 ID:gXQpHvOV
//タスクリスト初期化 *init_task Dim tl,100,10 //タスクリスト 2番目の添え字の0は次のタスクへのポインタ、1は呼び出すサブルーチン、2以降はキャラデータ //2,3座標 4,5加速度 6死亡フラグ sp=0 //使用中タスク先頭 np=1 //空きタスク先頭 0なら残りなし repeat 100 tl.cnt.0=cnt+1 loop tl.0.0=0 tl.99.0=0 //この初期化でリストは次のように繋がる //sp -> 0 //np -> 1 -> 2 -> 3 -> ... -> 0 return
841 :
名前は開発中のものです。 :2006/03/16(木) 22:36:03 ID:gXQpHvOV
//タスク挿入 *add_task //空きタスクが無ければ何もしない if np=0 : return //空きタスクから一つ取り出す tmp=np np=tl.np.0 //新しいタスク(=取りだしたタスク)がどのサブルーチンを呼ぶか設定 tl.tmp.1=add_task_sub //新しいタスクにゲームデータを代入 tl.tmp.2=add_task_2 tl.tmp.3=add_task_3 tl.tmp.4=add_task_4 tl.tmp.5=add_task_5 tl.tmp.6=add_task_6 //取り出したタスクに利用中タスクの先頭ポインタを渡す tl.tmp.0=sp //先頭ポインタを新しく追加したタスクにする sp=tmp return
842 :
名前は開発中のものです。 :2006/03/16(木) 22:36:34 ID:gXQpHvOV
//タスク削除 *del_task //SP直後の要素を書き換える場合はSPを書き換える必要があるので //特別な処理をする if del_task_index=0 { //空タスクに移動 tmp=tl.sp.0 tl.sp.0=np np=sp //切れたタスクリストを繋ぐ sp=tmp return } it=sp repeat del_task_index-1 it=tl.it.0 loop //削除するタスクを待避 tmp=tl.it.0 //待避した穴を埋める tl.it.0=tl.tmp.0 //待避したタスクを空リストに入れる tl.tmp.0=np np=tmp return
843 :
名前は開発中のものです。 :2006/03/16(木) 22:37:07 ID:gXQpHvOV
//タスクリストの状態表示 全体(Debug用) 最後まで表示されないorz *show_task_all repeat 100 mes tl.cnt.0 loop return //タスクリストの状態表示 使用中タスク(Debug用) *show_task_busy its=sp while its ! 0 mes tl.its.0 its=tl.its.0 wend return //タスクリストの状態表示 空きタスク(Debug用) *show_task_null its=np while its ! 0 mes tl.its.0 its=tl.its.0 wend return
844 :
名前は開発中のものです。 :2006/03/16(木) 22:37:39 ID:gXQpHvOV
//タスクシステム実行 *run_task it=sp while it ! 0 switch tl.it.1 case 0 gosub *sub0 swbreak case 1 gosub *sub1 swbreak case 2 gosub *sub2 swbreak case 3 gosub *sub3 swbreak case 4 gosub *sub4 swbreak swend it=tl.it.0 wend gosub *check_kill return *check_kill return
845 :
名前は開発中のものです。 :2006/03/16(木) 22:38:22 ID:gXQpHvOV
*task_factory0 add_task_sub=0 add_task_2=320 add_task_3=240 add_task_4=rnd(628) add_task_5=rnd(628) add_task_6=0 gosub *add_task return *task_factory1 add_task_sub=1 gosub *add_task return *task_factory2 add_task_sub=2 gosub *add_task return *task_factory3 add_task_sub=3 gosub *add_task return *task_factory4 add_task_sub=4 gosub *add_task return
テキストファイルにしてアップすればいいのに
>>846 そんな知能ないんだろ
黙って猿の曲芸を見守ってようぜww
848 :
名前は開発中のものです。 :2006/03/17(金) 00:17:11 ID:sXFQVN9i
849 :
名前は開発中のものです。 :2006/03/17(金) 00:37:57 ID:sXFQVN9i
850 :
名前は開発中のものです。 :2006/03/17(金) 00:57:18 ID:sXFQVN9i
>>847 :;' /:/ `メ、 i: ハ: i: : ii:i ヽ: i: :ii; : : : :iヽ: :
i: :i: i: i/,ィ=ミヽi: iヽNi:i_`iL:H---i:i: ヽ
i: :i :i / {.iトgj:i ヽ! lルィ丁゙)‐ミ「!: :ii/: : i
;':/ヾム⊂つ'´ i:.;{iil1:ソ i:i:::i !: : i:
: i: /: iト 、,,ミニっ /i/゚: o i .
: i:/: : i 、`_  ̄/.:/: : : i: :
: /: .::ハ ゙llllllル `ヽ //. : :/! i: . <あやまれ!お猿さんにあやまれっ
/: .::/:::/`、 lll/: : : : :} /〃:./: /i iハ!
i. ::/i::/::::::i::ヽ`三ー 'ノ , イ/: /: /.::i i::::::
::::///::::::::i:::i:..ヽ---<::::/:::/: :/: : i iヽ::
851 :
名前は開発中のものです。 :2006/03/17(金) 22:57:46 ID:sXFQVN9i
だめだ・・・・難しすぎる・・・・・
852 :
名前は開発中のものです。 :2006/03/18(土) 00:09:23 ID:UdlfWr/S
#module機能覚えた でもこれ名前つけられるようになってる意味がわからん
853 :
名前は開発中のものです。 :2006/03/18(土) 00:26:22 ID:UdlfWr/S
逆に考えるんだ・・・・タスクシステムはいらない・・・・ ・・・・ひとつの配列ですべての種類のデータを格納できれば・・・・いらないはず・・・・ 配列の増減をDimでするなら・・・・・・ポインタで繋ぐ意味はない・・・・
854 :
名前は開発中のものです。 :2006/03/18(土) 01:15:18 ID:UdlfWr/S
タスク管理の方法をおおざっぱに3種類にわけてまとめてみた ■タスクシステム ・すべての種類のデータを一つのリスト構造に納めることができる ・データの増減が可能 ・HSPで擬似的に実現してるために前者はワーク領域のデータ型が制限される、 ・後者は増減時に時間がかかってしまうのでメリットは少ない ■フラグ法 ・タスクの利用可否をフラグで判断する方法 ・実行時に配列すべてを走査する必要がある ・平均実行時間がタスクリストの最大実行時間と同じ程度になる ■最大値可変法 ・擬似的な動的配列を実現する方法 ・追加するときは配列の最大値を加算し末尾に代入する 削除するときは削除するタスクに末尾のタスクを上書きコピーし配列の最大値を減算する ・平均実行時間はタスクリストと同じ程度
とりあえず、HSPやってるならタスクシステムは不必要だと HSP暦1年6ヶ月の漏れからアドバイスだ
856 :
名前は開発中のものです。 :2006/03/18(土) 09:15:01 ID:UdlfWr/S
了解した
>>854 HSPは2.6? 3.0からは配列変数は越えた分は自動確保されますよ。いきなり読み込むと
エラーになりますが。
858 :
名前は開発中のものです。 :2006/03/18(土) 10:53:43 ID:UdlfWr/S
誰かプラグインつくってなかった? タスクシステムの。
860 :
名前は開発中のものです。 :2006/03/18(土) 22:38:18 ID:UdlfWr/S
#define MAX 100 turn=0 //変数 Dim tl,MAX,3 //敵 repeat MAX tl.cnt.0=1 //利用中(0=否) tl.cnt.1=0 //呼び出すサブルーチン tl.cnt.2=(cnt*64)\640 //X座標 tl.cnt.3=(cnt*64)/640*64 //Y座標 loop cx=320 cy=440 //裏画面 screen 1,640,480,2 //自機 screen 2,32,32,2 picload "jiki.bmp",2 //敵機 screen 3,32,32,2 picload "teki.bmp",2 screen 0,640,480
861 :
名前は開発中のものです。 :2006/03/18(土) 22:38:49 ID:UdlfWr/S
cls 4 repeat //裏画面を作る gsel 1,-1 cls 4 await 1 //自機 cx_speed=8 stick keyboard,15,1 switch keyboard case 1 cx=cx-cx_speed if cx<0 : cx=0 swbreak case 4 cx=cx+cx_speed if cx>639-32 : cx=639-32 swbreak case 64 if benable=0 { benable=1 bx=cx+16 by=cy } swend pos cx,cy: gcopy 2, 0,0
862 :
名前は開発中のものです。 :2006/03/18(土) 22:41:48 ID:UdlfWr/S
//自機弾 if benable=1 { by=by-8 if by<0 : benable=0 color 255,255,255 line bx, by, bx, by-16 } //敵機 turn=0 ndir=dir repeat MAX if tl.cnt.0 = 1 { pos tl.cnt.2,tl.cnt.3:gcopy 3, 0,0,32,32 tl.cnt.2 = tl.cnt.2+dir if (tl.cnt.2 <= 0) : ndir=1 if (tl.cnt.2 >= 602) : ndir=-1 //あたり判定 if benable and tl.cnt.2<bx and tl.cnt.2+32>bx and tl.cnt.3<by and tl.cnt.3+32>by: tl.cnt.0 = 0 } loop if dir!ndir { repeat MAX tl.cnt.3=tl.cnt.3+4 loop } dir=ndir
863 :
名前は開発中のものです。 :2006/03/18(土) 22:42:30 ID:UdlfWr/S
//表画面へコピー gsel 0,1 pos 0,0: gcopy 1,0,0,640,480 loop
864 :
名前は開発中のものです。 :2006/03/19(日) 01:32:22 ID:AaENy85a
ここまで出来た
・敵がインベーダーっぽく動く
・自機が左右に動く
・自機が弾を発射できる
・弾が敵に当たると消滅する
ソース
>>860-863 左右移動中にCTRLを押しても弾が撃てないorz
タスクシステムに変わって配列でデータを管理することにした
インベーダーゲームなら敵は減るばかりだから問題はない
タスクシステムと比べて
・単純でデバッグもしやすい
・速度も問題はない
タスクシステムの存在意義がわからなくなってきた
やっぱり
>>855 が結論なのか・・・・
でも
>>859 が気になる
そんなにタスクが好きならCで組めばいいのに。 一人で作る場合タスクはなくてもなんとかなる。 複数人で仕様も変わる状況への対処法だから。 それよりルーチンを切り分けてモジュール化して 一からやり直すハメにならない方が大事だと思う。 メインループから外注に出せば把握できるでしょ。 とかいって「そんなのは嘘だ!」とか ここから1000まで叩かれまくったりして…
そんなのは嘘だ!
>>860 HSP2.xでのscreen 1はスクリーンセーバーとかで使う特殊な画面なので、バッファ用には
2以降を使うのがセオリーです。っと、裏画面がscreenって、ちゃんとbufferという非表示の
スクリーンを作る命令がありますぜい。
>>864 キー入力の判定でswitch命令を使ってるけど、それぞれにswbreakがあるんで、ひとつでも
該当すると構文から抜け出ちゃいます。それにswitch文での比較判定は単純にイコールだけ
になっちゃうので、左を押しながら弾を撃つという状態のチェックができません。
ここは素直にif文で
if keyboard & 1 : cx=cx-cx_speed : if cx < 0 : cx=0
if keyboard & 4 : cx=cx+cx_speed : if cx > 639-32 : cx=639-32
if keyboard & 64 : if benable == 0 : benable=1 : bx=cx+16 : by=cy
というふうに。(=ではなく&で)
868 :
名前は開発中のものです。 :2006/03/20(月) 05:09:20 ID:5iZ2gAyz
#define MAX 50 //初期化 gosub *Boot_Initialize gosub *Play_Initialize *Start repeat //裏画面を作る gsel 2,-1 cls 4 await 1 //自機 cspeed=8 stick keyboard,15,1 if keyboard & 1 { cx=cx-cspeed if cx<0 : cx=0 } if keyboard & 4 { cx=cx+cspeed if cx>639-32 : cx=639-32 } if keyboard & 64 { if benable=0 { benable=1 bx=cx+16 by=cy } }
869 :
名前は開発中のものです。 :2006/03/20(月) 05:12:32 ID:5iZ2gAyz
pos cx,cy: gcopy 3, 0,0 //自機弾 if benable=1 { by=by-8 if by<0 : benable=0 color 255,255,255 line bx, by, bx, by-16 } //敵機 ndir=dir repeat MAX if tl.cnt.0 = 1 { pos tl.cnt.2,tl.cnt.3:gcopy 4, 0,0,32,32 tl.cnt.2 = tl.cnt.2+dir if (tl.cnt.2 <= 0) : ndir=1 if (tl.cnt.2 >= 602) : ndir=-1 //あたり判定 if benable and tl.cnt.2<bx and tl.cnt.2+32>bx and tl.cnt.3<by and tl.cnt.3+32>by: tl.cnt.0 = 0 : Score=Score+10 : Teki_Rest = Teki_Rest - 1 //敵が接地したか if tl.cnt.3 > 448 : invasion = 1 } loop if dir!ndir { repeat MAX tl.cnt.3=tl.cnt.3+4 loop }
870 :
名前は開発中のものです。 :2006/03/20(月) 05:13:03 ID:5iZ2gAyz
dir=ndir Color 255, 255, 255 pos 200,0 : mes "Score" pos 300,0 : mes Score if Score > HighScore : HighScore = Score pos 0,0 : mes "High-Score" pos 100,0 : mes HighScore //表画面へコピー gsel 0,1 pos 0,0: gcopy 2,0,0,640,480 if Teki_Rest=0 : gosub *Stage_Initialize if invasion=1 : gosub *Play_Initialize loop //ステージ初期化 *Stage_Initialize Stage_Num = Stage_Num + 1 Dim tl,MAX,3 //敵 repeat MAX tl.cnt.0 = 1 //利用中(0=否) tl.cnt.1 = 0 //呼び出すサブルーチン(未使用) tl.cnt.2 = ( cnt * 64 ) \ 640 //X座標 tl.cnt.3 = ( cnt * 64 ) / 640 * 64 //Y座標 loop cx=320 cy=440
871 :
名前は開発中のものです。 :2006/03/20(月) 05:13:36 ID:5iZ2gAyz
benable=0 Teki_Rest=MAX invasion = 0 cls 4 Color 255, 255, 255 pos 280,240 : mes "Stage" pos 340,240 : mes Stage_Num AWait 1000 return //プレイ初期化 *Play_Initialize Stage_Num=0 Score=0 gosub *Stage_Initialize return //起動時の初期化 *Boot_Initialize HighScore=74 Score=0 //裏画面 buffer 2,640,480
872 :
名前は開発中のものです。 :2006/03/20(月) 05:14:08 ID:5iZ2gAyz
//自機 buffer 3,32,32 picload "jiki.bmp" //敵機 buffer 4,32,32 picload "teki.bmp" screen 0,640,480 cls 4 return
HSPって管理しづらくない?
しずらいけど、HSPは簡単だからいい。
それって矛盾してね?
でかい規模のアプリには向いてないってことじゃないの?
タスクは色々と後付したり、愉快なシステムを盛り込むのに便利だが HSPでは速度的に辛い 特にswitchで死ねる
>>873 Pascalみたく宣言部つくって、
定数や変数、サブルーチンを宣言しておけば
けっこう大丈夫じゃない?
いや、もちろんしなくていいんだけど
漏れはそうしてるよ。
C++で作ればもっと簡単な気がしないでもない。 やっぱポインタは初心者を遠ざけるのか?
ポインタじゃなくて、導入するまでが面倒なんじゃないかな。 俺がそうだったw
確かにコンパイラとか見つけて使えるようにするまでで大変だもんなぁ。 ましてや統合環境が欲しいならさらに使い方を覚えなくちゃいけないな。 GUIはそんなに難しくないと思うけど? むしろ、GUIに辿り着くまでのが厳しいと思う。 とはいえ、ゲームだからGUIは避けて通れないな
>>879 =882
簡単に作れる というのと
手軽さ というのは違うぞ。
確かにC++やRubyで組んだほうが最終的には
”カンタン”に済ませられるのはモチロン知っているが
この”手軽さ”はやめられない
>>868 気になる点をいくつか。
>//自機
>cspeed=8
これが定数ならば、メインループから外して初期化ルーチンで記述したほうがよいです。
毎フレームで定義されてて無駄な処理になってるんで。
あと、
>pos 200,0 : mes "Score"
>pos 300,0 : mes Score
これは
pos 200,0 : mes "Score : "+Score
でもok(" : "は任意で)なんだけど、なにかしら別の意図が?
awaitの使い方も気になるけど、今のところは実害ある利用方法じゃないので、とりあえず
のちほど。…でもawait 1はPCスペックによって実行速度に差がでるか。
885 :
名前は開発中のものです。 :2006/03/22(水) 08:51:55 ID:4wbvXuWa
月曜日に書こうと思って書き込み制限になったレスを今頃になって投稿してみる
インデントはもう全部タブに書き換えたから大丈夫
さらに続いて撃ち返し弾を実装したソースをうp予定
インデント失敗orz
HSPのエディタはタブが2個並んでると置換されないことがある(メモ帳だとうまくいった)
行頭にタブとスペースが混ざってるのもインデントが崩れた原因
ソース
>>868-872 ・敵を全滅させると次のステージに進む
・スコア、ハイスコア機能追加
・敵が地面にくるとゲームオーバー(ステージ1から再スタート)
・screenを
>>867 で教えてもらったbuffer命令に置き換えた
・移動中に弾がでない不具合を修正(
>>867 )
886 :
名前は開発中のものです。 :2006/03/22(水) 08:54:20 ID:4wbvXuWa
やっぱりタブ2連続だとうまく置換されないや…… 置換されなくなるまで同じ操作を繰り返してスペースを&nbsp;に置換完了
887 :
名前は開発中のものです。 :2006/03/22(水) 08:54:51 ID:4wbvXuWa
#define MAX 50 //敵の数最大 #define cspeed 8 //自機移動速度 #define EBULLET_MAX 50 //敵弾数最大 //初期化 gosub *Boot_Initialize gosub *Play_Initialize *Start repeat //裏画面を作る gsel 2,-1 cls 4 await 1 //自機 stick keyboard,15,1 if keyboard & 1 { cx=cx-cspeed if cx<0 : cx=0 } if keyboard & 4 { cx=cx+cspeed if cx>639-32 : cx=639-32 } if keyboard & 64 { if benable=0 { benable=1 bx=cx+16
888 :
名前は開発中のものです。 :2006/03/22(水) 08:55:38 ID:4wbvXuWa
by=cy } } pos cx,cy: gcopy 3, 0,0 //自機弾 if benable=1 { by=by-8 if by<0 : benable=0 color 255,255,255 line bx, by, bx, by-16 } //敵機 ndir=dir repeat MAX if tl.cnt.0 = 1 { pos tl.cnt.2,tl.cnt.3:gcopy 4, 0,0,32,32 tl.cnt.2 = tl.cnt.2+dir if (tl.cnt.2 <= 0) : ndir=1 if (tl.cnt.2 >= 602) : ndir=-1
889 :
名前は開発中のものです。 :2006/03/22(水) 08:56:09 ID:4wbvXuWa
//あたり判定 if benable and tl.cnt.2<bx and tl.cnt.2+32>bx and tl.cnt.3<by and tl.cnt.3+32>by { tl.cnt.0 = 0 Score = Score + 10 Teki_Rest = Teki_Rest - 1 gosub *Enemy_Fire } //敵が接地したか if tl.cnt.3 > 448 : invasion = 1 } loop if dir!ndir { repeat MAX tl.cnt.3=tl.cnt.3+4 loop } dir=ndir
890 :
名前は開発中のものです。 :2006/03/22(水) 10:49:46 ID:4wbvXuWa
//敵弾 repeat EBULLET_MAX color 255,255,255 if bl.cnt.0 = 1 { line bl.cnt.2, bl.cnt.3, bl.cnt.2, bl.cnt.3 + 16 //描画 bl.cnt.3 = bl.cnt.3 + 8 //移動 if bl.cnt.3 > 480 : bl.cnt.0 = 0 //画面外なら使用終了 if bl.cnt.2 > cx and bl.cnt.2 < cx + 32 and bl.cnt.3 > cy and bl.cnt.3 < cy+32 : Dead = 1 //自機との当たり判定 } loop Color 255, 255, 255 pos 200,0 : mes "Score : " + Score if Score > HighScore : HighScore = Score pos 0,0 : mes "High-Score : " + HighScore //表画面へコピー gsel 0,1 pos 0,0: gcopy 2,0,0,640,480 if Teki_Rest=0 : gosub *Stage_Initialize if invasion=1 or Dead = 1 : gosub *Play_Initialize loop
891 :
名前は開発中のものです。 :2006/03/22(水) 13:19:37 ID:DEs7Ykun
HSPって変数定義とかいらないの? Cの半分くらいの時間でソース書けるんだが 短すぎて書いた気がしない
892 :
名前は開発中のものです。 :2006/03/22(水) 16:53:56 ID:4wbvXuWa
//ステージ初期化 *Stage_Initialize Stage_Num = Stage_Num + 1 Dim tl, MAX, 3 //敵 Dim bl, EBULLET_MAX, 3 //敵の弾 repeat MAX tl.cnt.0 = 1 //利用中(0=否) tl.cnt.1 = 0 //呼び出すサブルーチン(未使用) tl.cnt.2 = ( cnt * 64 ) \ 640 //X座標 tl.cnt.3 = ( cnt * 64 ) / 640 * 64 //Y座標 loop cx=320 cy=440 benable=0 Teki_Rest=MAX invasion = 0 Dead = 0 cls 4 Color 255, 255, 255 pos 280,240 : mes "Stage " + Stage_Num AWait 1000 return
893 :
名前は開発中のものです。 :2006/03/22(水) 16:54:27 ID:4wbvXuWa
//プレイ初期化 *Play_Initialize Stage_Num=0 Score=0 gosub *Stage_Initialize return //起動時の初期化 *Boot_Initialize HighScore=74 Score=0 //裏画面 buffer 2,640,480 //自機 buffer 3,32,32 picload "jiki.bmp" //敵機 buffer 4,32,32 picload "teki.bmp" screen 0,640,480 cls 4 return
894 :
名前は開発中のものです。 :2006/03/22(水) 16:54:57 ID:4wbvXuWa
//敵が弾を発射 *Enemy_Fire // bl.cnt.0 //使用中かどうか // bl.cnt.1 //弾道サブルーチン(未使用) // bl.cnt.2 //X座標 // bl.cnt.3 //Y座標 teki_num=cnt repeat EBULLET_MAX if bl.cnt.0 = 0 { bl.cnt.0 = 1 bl.cnt.2 = tl.teki_num.2+16 bl.cnt.3 = tl.teki_num.3 break } loop return
895 :
名前は開発中のものです。 :2006/03/22(水) 19:50:05 ID:4wbvXuWa
ソース
>>887-894 文字列が足し算できるなんて・・・メチャクチャ楽じゃないか・・・
スレの流れ的にC++まんせーですね
今ちょうど区切りがいいので移植に挑戦してみようかな
グラフィックの複雑さがネック
dupptrやvarptrを使えばHSPでもポインタが使えるみたいなので
ひょっとしてタスクシステム作れるかもしれない
前回は無計画に作って想定してない箇所(タスクの削除がうまく作れなかった)でハマったので
今度は計画的に
敵や敵弾のバリエーションを増やしてギャラクシアン風に作り替えたい
動きにバリエーションをつけるのは初めから考えていたこと
いかにもゲームらしい部分なのでおもしろそう
やりたいことが3つもできてしまったのでとりあえず寝てきます
どれから手をつけようか……
DXライブラリ触った時、描画関係はHSPとほぼ同じくらいの感覚で扱えるなと思ったよ。 まぁポリゴンとかは出来ないけどさ。
897 :
名前は開発中のものです。 :2006/03/23(木) 10:01:54 ID:5WNqQ2iY
#define _CRT_SECURE_NO_DEPRECATE #define MAX 50 //敵の数最大 #define cspeed 8 //自機移動速度 #define EBULLET_MAX 50 //敵弾数最大 #include "DxLib.h" //プロトタイプ宣言 void Boot_Initialize(); void Play_Initialize(); void Stage_Initialize(); void Enemy_Fire(int cnt); //変数宣言 int tl[MAX][4]; //敵 int bl[EBULLET_MAX][4]; //敵の弾 int cx=0, cy=0; int bx=0, by=0, benable=0; int ndir=0, dir=0; int tspeed=0, Teki_Rest=0; int Score=0, HighScore=0; int Dead=0, invasion=0; int Stage_Num=0; int HGJiki=0; int HGTeki=0;
898 :
名前は開発中のものです。 :2006/03/23(木) 10:02:25 ID:5WNqQ2iY
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } //初期化 Boot_Initialize(); Play_Initialize(); //裏画面 SetDrawScreen( DX_SCREEN_BACK ) ; //*Start while (1) { ClsDrawScreen() ; WaitTimer( 1 ) ; //自機 if( CheckHitKey( KEY_INPUT_LEFT ) == 1 ) { cx=cx-cspeed; if (cx<0) cx=0; }
899 :
名前は開発中のものです。 :2006/03/23(木) 10:03:24 ID:5WNqQ2iY
if( CheckHitKey( KEY_INPUT_RIGHT ) == 1 ) { cx=cx+cspeed; if (cx>639-32) cx=639-32; } if( CheckHitKey( KEY_INPUT_LCONTROL ) == 1 ) { if (benable == 0) { benable=1; bx=cx+16; by=cy; } } DrawGraph( cx , cy , HGJiki , FALSE ) ; //自機弾 if (benable == 1) { by=by-8; if (by<0) benable=0; DrawLine(bx, by, bx, by-16, GetColor(255,255,255)); }
900 :
名前は開発中のものです。 :2006/03/23(木) 10:04:13 ID:5WNqQ2iY
//敵機 ndir=dir; for (int cnt=0 ; cnt<MAX ; cnt++) { if (tl[cnt][0] == 1) { DrawGraph( tl[cnt][2], tl[cnt][3], HGTeki , FALSE ) ; tl[cnt][2] = tl[cnt][2]+dir; if (tl[cnt][2] <= 0) ndir = tspeed; if (tl[cnt][2] >= 602) ndir = -tspeed; //あたり判定 if (benable && (tl[cnt][2] < bx) && ((tl[cnt][2] + 32) > bx) && (tl[cnt][3] < by) && ((tl[cnt][3]+32) > by) ) { tl[cnt][0] = 0; Score = Score + 10; Teki_Rest = Teki_Rest - 1;
901 :
名前は開発中のものです。 :2006/03/23(木) 10:04:46 ID:5WNqQ2iY
Enemy_Fire(cnt); } //敵が接地したか if (tl[cnt][3] > 448) invasion = 1; } } if (dir != ndir) { for (int cnt=0 ; cnt<MAX ; cnt++) { tl[cnt][3] = tl[cnt][3] + 4; } } dir = ndir;
902 :
名前は開発中のものです。 :2006/03/23(木) 13:33:20 ID:5WNqQ2iY
//敵弾 for (int cnt=0 ; cnt<EBULLET_MAX ; cnt++) { if (bl[cnt][0] == 1) { bl[cnt][3] = bl[cnt][3] + 8; //移動 DrawLine(bl[cnt][2], bl[cnt][3], bl[cnt][2], bl[cnt][3] + 16, GetColor(255,255,255)); //描画 if (bl[cnt][3] > 480) bl[cnt][0] = 0; //画面外なら使用終了 if ((bl[cnt][2] > cx) && (bl[cnt][2] < cx + 32) && (bl[cnt][3] > cy) && (bl[cnt][3] < cy+32)) Dead = 1; //自機との当たり判定 } } DrawFormatString( 200, 0, GetColor(255,255,255), "Score : %d", Score); if (Score > HighScore) HighScore = Score; DrawFormatString( 0, 0, GetColor(255,255,255), "High-Score : %d", HighScore); // 裏画面の内容を表画面に反映させる ScreenFlip() ;
903 :
名前は開発中のものです。 :2006/03/23(木) 13:33:50 ID:5WNqQ2iY
if (Teki_Rest <= 10) tspeed=2; if (Teki_Rest <= 1) tspeed=4; if (Teki_Rest == 0) Stage_Initialize(); if ( (invasion == 1) || (Dead == 1) ) Play_Initialize(); // Windows システムからくる情報を処理する if( ProcessMessage() == -1 ) break ; // ESCキーが押されたらループから抜ける if( CheckHitKey( KEY_INPUT_ESCAPE ) == 1 ) break ; } DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 }
904 :
名前は開発中のものです。 :2006/03/23(木) 13:34:21 ID:5WNqQ2iY
//ステージ初期化 void Stage_Initialize() { Stage_Num = Stage_Num + 1; ZeroMemory(tl, sizeof(tl)); //Dim tl, MAX, 3 //敵 ZeroMemory(bl, sizeof(bl)); //Dim bl, EBULLET_MAX, 3 //敵の弾 for (int cnt=0 ; cnt<MAX ; cnt++) { tl[cnt][0] = 1; //利用中(0=否) tl[cnt][1] = 0; //呼び出すサブルーチン(未使用) tl[cnt][2] = ( cnt * 64 ) % 640; //X座標 tl[cnt][3] = ( cnt * 64 ) / 640 * 64; //Y座標 } cx=320; cy=440; benable=0; tspeed=1;
905 :
名前は開発中のものです。 :2006/03/23(木) 13:34:52 ID:5WNqQ2iY
Teki_Rest=MAX; invasion = 0; Dead = 0; ClsDrawScreen(); DrawFormatString( 280, 240, GetColor(255,255,255), "Stage : %d", Stage_Num); ScreenFlip() ; WaitTimer( 1000 ) ; return; } //プレイ初期化 void Play_Initialize() { Stage_Num=0; Score=0; Stage_Initialize(); return; }
906 :
名前は開発中のものです。 :2006/03/23(木) 13:35:36 ID:5WNqQ2iY
//起動時の初期化 void Boot_Initialize() { HighScore=74; Score=0; HGJiki = LoadGraph( "jiki.bmp" ) ; HGTeki = LoadGraph( "teki.bmp" ) ; ClsDrawScreen(); return; } //敵が弾を発射 void Enemy_Fire(int cnt) { // bl.cnt.0 //使用中かどうか // bl.cnt.1 //弾道サブルーチン(未使用) // bl.cnt.2 //X座標 // bl.cnt.3 //Y座標
>>897 乙。未実装の敵弾以外は普通に動いたよ。
とりあえず、敵のフラグと座標は構造体にしてみては?
908 :
名前は開発中のものです。 :2006/03/24(金) 03:47:56 ID:r2mkgPf1
int teki_num=cnt; for ( cnt=0 ; cnt<EBULLET_MAX ; cnt++) { if (bl[cnt][0] == 0) { bl[cnt][0] = 1; bl[cnt][2] = tl[teki_num][2]+16; bl[cnt][3] = tl[teki_num][3]; break; } } return; }
909 :
名前は開発中のものです。 :2006/03/24(金) 04:43:33 ID:r2mkgPf1
ソース
>>897-908 ・グラフィック
>>896 で出てきたDXライブラリを使っています
ライン命令やフォーマット付きの文字描画があったので
HSPからあまり修正せずに移植できました
・変数宣言
やはり
>>891 で指摘された通りソースが長くなります
しかし移植中に配列サイズを間違っていることに気づきました
実は
>>857 で説明されている機能である
>配列変数は越えた分は自動確保されますよ
に助けられたいたので今まで発覚しなかったのです
Dim tl,MAX,3 //敵
repeat MAX
tl.cnt.0=1 //利用中(0=否)
tl.cnt.1=0 //呼び出すサブルーチン
tl.cnt.2=(cnt*64)\640 //X座標
tl.cnt.3=(cnt*64)/640*64 //Y座標
↑
Dimで3と宣言している(0〜2まで使える)のに0〜3まで使ってる
・C++移植版のバグ
ALT+F4で終了するとエラーがでます
たぶんDxLib_End()を実行してないからだと思います
ゲーム終了時に必ず実行する工夫がないか検討中
910 :
名前は開発中のものです。 :2006/03/24(金) 05:33:06 ID:r2mkgPf1
途中経過 構造体を定義してみた struct stEnemy { int x; int y; bool enable; }; ↓ 自機や弾も使い回しできるな ↓ こういうのって継承すればいいんだっけ ↓ そうだ、classを使おう
911 :
名前は開発中のものです。 :2006/03/24(金) 06:24:23 ID:r2mkgPf1
なんだか、ややこしくなってきた
912 :
名前は開発中のものです。 :2006/03/24(金) 07:45:58 ID:r2mkgPf1
敵のフラグと座標を構造体に書き換えた 座標をxやyで書けるのは見やすくていい HSPには無いのかな、連想配列で似たようなことができそうな気がするけど ついに240行にまで増えた 20行平均で貼り付けても12レスorz 5レスごとに3時間ぐらい待たされるから全うpまで6時間以上orz...
拡張子をphpsに変えれば、ゲムデヴあぷろだにもupできるじゃろ
>>913 同意。
いい加減ウザい。
txtファイルにコピペしてgamdevにうpしろっての
どうしてもしたいならソースをうpするスレッドへ
>>913-915 そう言ってやるな、せっかくスレを盛り上げてくれてるんだ
それとも藻前らが何かネタを投下できるのか?
まぁ所詮
>>909 が上げてる程度のコードも書けないやつらの
嫉妬レスなんだろうな(プゲラッチョ
別にもりあがってないじゃん
>>909 ぐらいのコードなら書けなきゃゲ制作には来ないって
盛り上げてるのではなく 荒らしている。
短いソースはともかく、1レスで書けない長いソースは別ファイルをうpするのがマナーだろ。 見にくいし、試せない。書き出さ無きゃならん時点で見る気もうせる。
921 :
名前は開発中のものです。 :2006/03/25(土) 08:26:50 ID:xoont0lh
#define MAX 50 //敵の数最大 #define cspeed 8 //自機移動速度 #define EBULLET_MAX 50 //敵弾数最大 #include "DxLib.h" //プロトタイプ宣言 void Boot_Initialize(); void Play_Initialize(); void Stage_Initialize(); void Enemy_Fire(int cnt); //変数宣言 struct stEnemy { int enable; int x; int y; }; stEnemy Enemies[MAX]; /*
922 :
名前は開発中のものです。 :2006/03/25(土) 08:27:31 ID:xoont0lh
*/ int bl[EBULLET_MAX][4]; //敵の弾 int cx=0, cy=0; int bx=0, by=0, benable=0; int ndir=0, dir=0; int tspeed=0, Teki_Rest=0; int Score=0, HighScore=0; int Dead=0, invasion=0; int Stage_Num=0; int HGJiki=0; int HGTeki=0; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } /*
923 :
名前は開発中のものです。 :2006/03/25(土) 08:28:25 ID:xoont0lh
*/ //初期化 Boot_Initialize(); Play_Initialize(); //裏画面 SetDrawScreen( DX_SCREEN_BACK ) ; //*Start while (1) { ClsDrawScreen() ; WaitTimer( 1 ) ; //自機 if( CheckHitKey( KEY_INPUT_LEFT ) == 1 ) { cx=cx-cspeed; if (cx<0) cx=0; } /*
924 :
名前は開発中のものです。 :2006/03/25(土) 08:29:18 ID:xoont0lh
*/ if( CheckHitKey( KEY_INPUT_RIGHT ) == 1 ) { cx=cx+cspeed; if (cx>639-32) cx=639-32; } if( CheckHitKey( KEY_INPUT_LCONTROL ) == 1 ) { if (benable == 0) { benable=1; bx=cx+16; by=cy; } } DrawGraph( cx , cy , HGJiki , FALSE ) ; //自機弾 if (benable == 1) { by=by-8; if (by<0) benable=0; DrawLine(bx, by, bx, by-16, GetColor(255,255,255)); } /*
925 :
名前は開発中のものです。 :2006/03/25(土) 08:31:10 ID:xoont0lh
*/ //敵機 ndir=dir; for (int cnt=0 ; cnt<MAX ; cnt++) { if (Enemies[cnt].enable == 1) { DrawGraph( Enemies[cnt].x, Enemies[cnt].y, HGTeki , FALSE ) ; Enemies[cnt].x = Enemies[cnt].x+dir; if (Enemies[cnt].x <= 0) ndir = tspeed; if (Enemies[cnt].x >= 602) ndir = -tspeed; //あたり判定 if (benable && (Enemies[cnt].x < bx) && ((Enemies[cnt].x + 32) > bx) && (Enemies[cnt].y < by) && ((Enemies[cnt].y+32) > by) ) { Enemies[cnt].enable = 0; Score = Score + 10; Teki_Rest = Teki_Rest - 1; /*
ここまで空気読めないと笑うしかないなwwww
( ^∀^)ゲラゲラ
929 :
名前は開発中のものです。 :2006/03/25(土) 15:57:33 ID:xoont0lh
HSPって gcopyやると チラチラして目が痛いンmだけど対策おしえてくれ! あと、指定した色透明とかないの?
>>930 リファレンスと公式のチュートリアルも読めないのか池沼
932 :
名前は開発中のものです。 :2006/03/25(土) 20:58:41 ID:xoont0lh
中途半端なのでうpしてしまいますね */ Enemy_Fire(cnt); } //敵が接地したか if (Enemies[cnt].y > 448) invasion = 1; } } if (dir != ndir) { for (int cnt=0 ; cnt<MAX ; cnt++) { Enemies[cnt].y = Enemies[cnt].y + 4; } } dir = ndir; /*
933 :
名前は開発中のものです。 :2006/03/25(土) 20:59:11 ID:xoont0lh
//敵弾 for (int cnt=0 ; cnt<EBULLET_MAX ; cnt++) { if (bl[cnt][0] == 1) { bl[cnt][3] = bl[cnt][3] + 8; //移動 DrawLine(bl[cnt][2], bl[cnt][3], bl[cnt][2], bl[cnt][3] + 16, GetColor(255,255,255)); //描画 if (bl[cnt][3] > 480) bl[cnt][0] = 0; //画面外なら使用終了 if ((bl[cnt][2] > cx) && (bl[cnt][2] < cx + 32) && (bl[cnt][3] > cy) && (bl[cnt][3] < cy+32)) Dead = 1; //自機との当たり判定 } } DrawFormatString( 200, 0, GetColor(255,255,255), "Score : %d", Score); if (Score > HighScore) HighScore = Score; DrawFormatString( 0, 0, GetColor(255,255,255), "High-Score : %d", HighScore); // 裏画面の内容を表画面に反映させる ScreenFlip() ;
rddraw 0 redraw 1 に挟んだらちらつきなくなりました〜ヤッホー! 第一段階クリアかな。 今、透明探してる。
F1押して出てくるヘルプに gcopy って打ち込めば関連ありそうなの表示されるよ
936 :
名前は開発中のものです。 :2006/03/26(日) 11:29:59 ID:erP5z/In
うちのHSPにはrddrawがないよ(´・ω・`)ショボーン
937 :
名前は開発中のものです。 :2006/03/26(日) 11:35:24 ID:erP5z/In
>>933 にコメント入れ忘れたorz
*/
if (Teki_Rest <= 10) tspeed=2;
if (Teki_Rest <= 1) tspeed=4;
if (Teki_Rest == 0) Stage_Initialize();
if ( (invasion == 1) || (Dead == 1) ) Play_Initialize();
// Windows システムからくる情報を処理する
if( ProcessMessage() == -1 ) break ;
// ESCキーが押されたらループから抜ける
if( CheckHitKey( KEY_INPUT_ESCAPE ) == 1 ) break ;
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
/*
938 :
名前は開発中のものです。 :2006/03/26(日) 11:36:55 ID:erP5z/In
*/ //ステージ初期化 void Stage_Initialize() { Stage_Num = Stage_Num + 1; ZeroMemory(Enemies, sizeof(Enemies)); //敵 ZeroMemory(bl, sizeof(bl)); //敵の弾 for (int cnt=0 ; cnt<MAX ; cnt++) { Enemies[cnt].enable = 1; //利用中(0=否) Enemies[cnt].x = ( cnt * 64 ) % 640; //X座標 Enemies[cnt].y = ( cnt * 64 ) / 640 * 64; //Y座標 } cx=320; cy=440; benable=0; tspeed=1; Teki_Rest=MAX; invasion = 0; Dead = 0; /*
939 :
名前は開発中のものです。 :2006/03/26(日) 11:37:30 ID:erP5z/In
*/ ClsDrawScreen(); DrawFormatString( 280, 240, GetColor(255,255,255), "Stage : %d", Stage_Num); ScreenFlip() ; WaitTimer( 1000 ) ; return; } //プレイ初期化 void Play_Initialize() { Stage_Num=0; Score=0; Stage_Initialize(); return; } /*
940 :
名前は開発中のものです。 :2006/03/26(日) 12:18:50 ID:erP5z/In
*/ //敵が弾を発射 void Enemy_Fire(int cnt) { int teki_num=cnt; for ( cnt=0 ; cnt<EBULLET_MAX ; cnt++) { if (bl[cnt][0] == 0) { bl[cnt][0] = 1; bl[cnt][2] = Enemies[teki_num].x+16; bl[cnt][3] = Enemies[teki_num].y; break; } } return; } /* ここで終了です 開発環境 VC++ DXライブラリ */
941 :
名前は開発中のものです。 :2006/03/26(日) 12:57:44 ID:erP5z/In
>>921-940 をコピペしたらコンパイルできるつもりだったのですが
>>933 の文頭と文末に*/と/*をつけるのを忘れてたのでその追加だけお願いします
それでコンパイル通ります
外部サイトでも平気な人は
>>929 に同等のソースがあります
特に理由がなければこちらをどうぞ
Boot_Initialize関数が見つかりません><
943 :
名前は開発中のものです。 :2006/03/26(日) 13:27:16 ID:erP5z/In
//うっかりさんでごめんこりん>< //起動時の初期化 void Boot_Initialize() { HighScore=74; Score=0; HGJiki = LoadGraph( "jiki.bmp" ) ; HGTeki = LoadGraph( "teki.bmp" ) ; ClsDrawScreen(); return; }
どうしてここにソースを貼り付けるのか 何度言われてもわかんないの?
//うっかりさんでごめんこりん>< だそうです
やったーーー!! 透明発見 その名はgmode ですーーーーーすすすすslすslすslすlす!!!!! これはんまさに透明!!!半透明も簡単うあはぁふあhかゆあじゅhjし最高!!!! 次は球を増やしたいんだけど 変数をどんどん増やしていくの大変なんだけど なんか対策アル?
ソース貼りまくって埋め立てか。次スレはいらないな
948 :
名前は開発中のものです。 :2006/03/27(月) 15:39:02 ID:TSDimYuG
いいこと思いついた トリップつければNGワードで一網打尽
949 :
◆src/N3iz.2 :2006/03/27(月) 15:39:54 ID:TSDimYuG
テスト
950 :
◆src/N3iz.2 :2006/03/27(月) 15:40:39 ID:TSDimYuG
#+OIF=^}^ トリップ置いておくのでみなさん使ってください
951 :
名前は開発中のものです。 :2006/03/27(月) 15:45:46 ID:TSDimYuG
>>946 俺は配列変数使ってます
一緒にがんばりましょーヾ(*´∀`*)ノキャッキャッ
952 :
名前は開発中のものです。 :2006/03/27(月) 15:46:49 ID:TSDimYuG
あ、ちょうどIDがDimだw
953 :
名前は開発中のものです。 :2006/03/28(火) 15:39:57 ID:vBoe6Dt9
弾幕研究はじめる
この貼り付けられたソースはどうして欲しいのかな?
955 :
名前は開発中のものです。 :2006/03/28(火) 17:41:17 ID:9EyZXfZz
本当にズブな質問で悪いのですが DirectXを用いて2Dシューティングを作ろうと思っていたのですが、 まず、C++を学ぶものだと思っていたら 本屋へ行ってDirectXの本を読んだらVISUALC++を用いていたりVISUALC++.NETを使っていたりしていたのですが まず、結局何を学べばよいのでしょうか? あと、出来たらその後の簡単なするべき事の工程を教えてくださるとありがたいのですが
本来XCしかできない漏れは、VC++.NETで開発してますが何か? >ズブ C++もVC++も、ほぼC言語の上位互換だから、 C言語がわかればおk。ポインタを把握すれば完璧。 痒いところの手が届かないとか、簡潔な記述がしたくなったら、 C++の本を見てレパートリーを増やせばいい。 無理して色々な機能を使ったって糞コード量産するだけ。 >工程 DirectXの本のサンプルプログラムを弄って遊ぶのがいいんじゃないだろうか。 とりあえず動くものがあったほうがやる気が湧きやすいし、維持しやすい。 拡張に行き詰まりを感じたら、新規に零からコツコツ書いていって、 DirectXを研究しながら、然るべきタイミングで然るべき処理をするようにする。
>>955 CやC++は言語。VisualC++なんかはIDE。
いくらCやC++の文法や規則を覚えて頭の中でコードがかけても
それをexeファイルとかにできんと何の意味もないだろ。
そのコードの作成を補助したり
実際に実行できるexeファイルにしたりするのが、
コンパイラだったりエディタだったりIDEだったり。
この辺のツールの厳密な意味はググってくれ。
958 :
名前は開発中のものです。 :2006/03/29(水) 10:15:41 ID:0n+YEyJr
//下方向へ直進するだけの弾 buffer 2,640,480 screen 0,640,480 bx=320 by=240 repeat gsel 2,0 cls 4 await 1 color 255, 255, 255 circle bx, by, bx+16, by+16, 1 by=by+8 gsel 0,1 gcopy 2,0,0,640,480 loop 実は狙い撃ち弾の作り方がよくわからない 角度のある弾はsin、cos使えばいいってのはわかる ところで、気づけばもう 情報処理技術者試験まであと18日 そろそろ勉強しなきゃ
atanで角度算出して発射しろ。 昔の2種なら高校時代とったが言わせてもらえば 何の役にもたたん。しいて言うなら自己満足か。 そんな勉強より実践で使えるアルゴリズム類を勉強しとけ。
960 :
◆src/N3iz.2 :2006/03/29(水) 14:42:56 ID:0n+YEyJr
buffer 2,640,480 screen 0,640,480 bx=320 by=240 tx=rnd(640) ty=rnd(480) //rad=atan(tx-bx, ty-by) //計算箇所1 repeat gsel 2,0 cls 4 await 1 color 255, 255, 255 mes rad /*
961 :
◆src/N3iz.2 :2006/03/29(水) 14:43:50 ID:0n+YEyJr
*/ rad=atan(tx-bx, ty-by) //計算箇所2 circle tx, ty, tx+16, ty+16, 1 circle bx, by, bx+16, by+16, 1 bx=bx+sin(rad)*10 by=by+cos(rad)*10 if abs(tx-bx)<16 and abs(ty-by)<16 { tx=rnd(640) ty=rnd(480) rad=atan(tx-bx, ty-by) } gsel 0,1 gcopy 2,0,0,640,480 loop
962 :
名前は開発中のものです。 :2006/03/29(水) 14:52:23 ID:0n+YEyJr
きっとあの人だろうな・・・・(ス・・ ageんな。
964 :
名前は開発中のものです。 :2006/03/29(水) 17:04:38 ID:0n+YEyJr
ブレゼンハムアルゴリズムというのを見つけた
わからなかったorz
>>959 で言ってるアルゴリズムの勉強ってこういうことなのか
965 :
名前は開発中のものです。 :2006/03/29(水) 17:58:04 ID:0n+YEyJr
966 :
名前は開発中のものです。 :2006/03/29(水) 18:18:29 ID:0n+YEyJr
buffer 2,640,480 screen 0,640,480 dim bx,3 dim by,3 dim rad,3 repeat 3 bx.cnt=320 by.cnt=240 loop tx=rnd(640) ty=rnd(480) //計算箇所1 rad.0=atan(tx-bx.0, ty-by.0)-0.5 rad.1=atan(tx-bx.1, ty-by.1) rad.2=atan(tx-bx.2, ty-by.2)+0.5 /*
967 :
名前は開発中のものです。 :2006/03/29(水) 18:19:17 ID:0n+YEyJr
*/ repeat gsel 2,0 cls 4 await 1 color 255, 255, 255 repeat 3 // rad.cnt=atan(tx-bx.cnt, ty-by.cnt) //計算箇所2 circle tx, ty, tx+16, ty+16, 1 circle bx.cnt, by.cnt, bx.cnt+16, by.cnt+16, 1 bx.cnt=bx.cnt+sin(rad.cnt)*10 by.cnt=by.cnt+cos(rad.cnt)*10 if abs(tx-bx.cnt)<16 and abs(ty-by.cnt)<16 { tx=rnd(640) ty=rnd(480) /*
968 :
名前は開発中のものです。 :2006/03/29(水) 18:55:25 ID:0n+YEyJr
*/ bx.0=bx.1 by.0=by.1 bx.2=bx.1 by.2=by.1 rad.0=atan(tx-bx.0, ty-by.0)-0.5 rad.1=atan(tx-bx.1, ty-by.1) rad.2=atan(tx-bx.2, ty-by.2)+0.5 } loop gsel 0,1 gcopy 2,0,0,640,480 loop
969 :
名前は開発中のものです。 :2006/03/29(水) 19:03:06 ID:0n+YEyJr
ソース
>>966-968 今度は3way弾
あ、ソースはトリップつけようと思ってたのに忘れた
これ作って気づいたけど
>>962 の計算箇所2ってただのホーミング弾だorz
狙い撃ち弾を正確に命中させるには、たぶん対策は大きく分けて二つ
・精度をあげる
・アルゴリズムを変える
意外とムズカシス
ああ、コイツか。 ウザス
971 :
名前は開発中のものです。 :2006/03/29(水) 20:28:08 ID:0n+YEyJr
こ、こいつってだれなんだー!
パロディウスにいたな
973 :
名前は開発中のものです。 :2006/03/29(水) 21:43:24 ID:0n+YEyJr
おまえらちょっと隙を見せると雑談はじめやがってw 狙い撃ち弾のやり方わかる奴いねーの?
975 :
名前は開発中のものです。 :2006/03/29(水) 21:56:20 ID:0n+YEyJr
ごめんなさいすみません無理して2ちゃんねらーっぽく振る舞ってしまいました 今は反省してます トークも弾も狙いがことごとくはずれるorz
976 :
名前は開発中のものです。 :2006/03/29(水) 22:01:39 ID:0n+YEyJr
( ´д)ヒソ(´д`)ヒソ(д` )
そりゃおめー、自機のXY座標と砲台のXY座標の差を取って、XYそれぞれの成分を「当たるまでに要するフレーム数」で割って算出、初速として与えてやればいいんでね? 型はfloatがいいな。
なんで目標への単位ベクトルじゃダメなの?
980 :
名前は開発中のものです。 :2006/03/29(水) 22:43:32 ID:0n+YEyJr
>>978 と
>>979 って同じことを言ってるんですよね?
なんとなくわかってきました
角度じゃなくてxとyの移動量で計算するんですね
floatってHSPだとどうなるんだろう……
ズブの素人スレだからだよ 俺も素人。
982 :
名前は開発中のものです。 :2006/03/29(水) 22:49:05 ID:0n+YEyJr
#define MAX 32 buffer 2,640,480 screen 0,640,480 dim bx,MAX dim by,MAX dim rad,MAX repeat MAX bx.cnt=320 by.cnt=240 loop tx=rnd(640) ty=rnd(480) repeat MAX rad.cnt=atan(tx-bx.0, ty-by.0)-6.28/MAX*cnt loop
983 :
名前は開発中のものです。 :2006/03/29(水) 22:49:35 ID:0n+YEyJr
repeat gsel 2,0 cls 4 await 100 color 255, 255, 255 repeat MAX circle tx, ty, tx+16, ty+16, 1 circle bx.cnt, by.cnt, bx.cnt+16, by.cnt+16, 1 bx.cnt=bx.cnt+sin(rad.cnt)*10 by.cnt=by.cnt+cos(rad.cnt)*10 if abs(tx-bx.cnt)<16 and abs(ty-by.cnt)<16 or by.cnt>480 { tx=rnd(640) ty=rnd(480)
984 :
名前は開発中のものです。 :2006/03/29(水) 22:50:07 ID:0n+YEyJr
repeat MAX bx.cnt=320 by.cnt=240 rad.cnt=atan(tx-bx.0, ty-by.0)-6.28/MAX*cnt loop } loop gsel 0,1 gcopy 2,0,0,640,480 loop
HSPで浮動小数 利用 でぐぐるか、Cの勉強を始めなさい。 だが、まず自分で検索することを覚えねば未来は無い。 …だから長いソース貼るなって言われてんだろ!!!!!
986 :
名前は開発中のものです。 :2006/03/29(水) 23:07:31 ID:0n+YEyJr
ソース
>>982-984 http://blog.goo.ne.jp/gamedevhsp/e/6063c8d3fb513f96c332e4f7e748a934 丸く花火のように散る弾です
でも50発ぐらいが限度でそれ以上弾が出てる様子がないです
極端に3000発ぐらいにしても50発のときと変わりませんでした
>>985 HSPplusというプラグインがでてきました
ありがとうございます
ソースを外部にうpすると2chに貼れという人もでてくるので両方にうpしてます
今まではどちらかというとそういう人のほうが多かったので今回の反応にとまどってます
gamdevは例の事件や例のバグもあって絶対踏まない人もいるのでスレが伸びないと思ったんですよ
もう風化してますがひさびさにうpすると早速IPアドレスが漏れたり削除できなくなったりで変わってないなぁと……
ブログのほうはアクセス解析がついてますがIPアドレスは取ってないです
アクセス数が少ないのでやっぱり外部より2chのほうが見やすい(心理的に)のではないかなと分析してます
ご不便をおかけします
誤:ご不便をおかけします 正:ご迷惑をおかけします
>>978 floatは2.6だと要プラグイン。3.0以降なら a=0.0 と初期化宣言すればok。
あと、内部(算出)値を1000倍、出力するときは1000で割るという手法もありますよ。1024とか
512のほうが相性はいいですが。
>>986 変数bx、by、radが実数値になっていませんよ。
>dim bx,MAX
>dim by,MAX
>dim rad,MAX
をそれぞれdimからddimにして、
>repeat MAX
> bx.cnt=320
> by.cnt=240
>loop
は
bx.cnt=320.0
by.cnt=240.0
にしてください(最初のほうとループ内の二箇所)。あと await は16か32で。
Cを学ぶ C++を学ぶ WinAPIとDirectXの存在を知る サンプルプログラムをいじる スケルトンプログラムを利用してちょっとしたゲームを作る←今ココ ・・・ ・・・ 0から自分で作る
最初は先人の知恵を利用しまくった方が良いだろうね。 作り方を覚えたら、自分でつくる部分を多くしていく、と。