[過去ログ]
【初心者】課題をクリアしていくスレ【講習会】 (787レス)
【初心者】課題をクリアしていくスレ【講習会】 http://mevius.5ch.net/test/read.cgi/gamedev/1086858349/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
191: 副担任 [sage] 04/06/28 10:26 ID:HdfIcXTc 訂正すまそ。 × ・課題によけいなものは付けないでください(初心者が提出したソースを参考にしたとき、必要な機能のみが実装されていたほうがいい) ○ ・提出したソースにはよけいな機能は付けないでください(初心者が提出したソースを参考にしたとき、必要な機能のみが実装されていたほうがいい) http://mevius.5ch.net/test/read.cgi/gamedev/1086858349/191
192: 名前は開発中のものです。 [sage] 04/06/28 10:28 ID:Ten9Dr/x >>188 簡単だが添削。ウィンドウプロシージャだけ。 DeleteObjectの2行はWM_PAINT内でやってはダメ。 WM_PAINTは何度も呼ばれるため、最初の描画が終了した時点で、作ったペンやブラシは 無効になるため、色がつかなくなる。DeleteObjectするならWM_DESTROY内で。 ちなみにCreateしたものはちゃんと削除するのがお約束。 SelectObjectしたものに関しても、元に戻しておくのが一応の作法。 holdobj = SelectObject(hdc, hobj);// 以前のオブジェクトハンドルを保存 // 何か処理 holdobj = SelectObject(hdc, holdobj);// 以前のオブジェクトに戻す 何故か赤く塗りつぶされないというのは、ディスプレイDCに複数回描画を行っていて、それが ちらつきとして現れるから。こういう場合はオフスクリーンに描画し、最後にディスプレイDCに BitBltする。 http://mevius.5ch.net/test/read.cgi/gamedev/1086858349/192
193: 名前は開発中のものです。 [sage] 04/06/28 10:30 ID:Ten9Dr/x ちと訂正・・orz ×holdobj = SelectObject(hdc, holdobj);// 以前のオブジェクトに戻す ○SelectObject(hdc, holdobj);// 以前のオブジェクトに戻す http://mevius.5ch.net/test/read.cgi/gamedev/1086858349/193
194: 63 ◆xdaKt6k1XI [sage] 04/06/28 15:51 ID:W33tIq0j >>190 変な質問ですいません バイナリってなんですか? http://mevius.5ch.net/test/read.cgi/gamedev/1086858349/194
195: 生徒A [] 04/06/28 16:36 ID:D8BhR1kS >>194 190じゃないですが、もともとは2進数という意味だと思います。 だから、この場合は、1と0の組み合わせで作られた機械語データ (実行ファイル)の意味だと思います。 他にも、テキストデータ以外のファイル全てを指す事もあります。 http://mevius.5ch.net/test/read.cgi/gamedev/1086858349/195
196: 生徒A [] 04/06/28 16:40 ID:D8BhR1kS >>192 ありがとうございます。 DeleteObjectのやり方は分かったのですが、 オフスクリーンのやり方がちょっとよく分からないです。 具体的には、オフスクリーンの作成方法です。 http://mevius.5ch.net/test/read.cgi/gamedev/1086858349/196
197: 名前は開発中のものです。 [sage] 04/06/28 17:06 ID:cdlT0cfW CreateCompatibleBitmap http://mevius.5ch.net/test/read.cgi/gamedev/1086858349/197
198: 副担任 [sage] 04/06/28 17:37 ID:HdfIcXTc >>194 Windowsの実行ファイルのことです。"〜.exe" ってやつ。 C言語とかはコンパイルして実行ファイルを作らないとプログラムが動きません。 HSPはインタプリタ言語なので実行ファイルは作らなくていいみたいですね。 >>195 正解です http://mevius.5ch.net/test/read.cgi/gamedev/1086858349/198
199: Ruby@課題6当たり判定 [] 04/06/28 18:32 ID:1FRiXQWF require 'sdl' SDL.init( SDL::INIT_VIDEO ) screen = SDL.setVideoMode( 640, 480, 16, SDL::SWSURFACE ) x=(639-32)/2 y=(479-32)/2 enemyX=rand(639-32) enemyY=0 loop do while event = SDL::Event2.poll case event when SDL::Event2::Quit exit end end SDL::Key.scan y -= 1 if SDL::Key.press?( SDL::Key::UP ) x += 1 if SDL::Key.press?( SDL::Key::RIGHT ) y += 1 if SDL::Key.press?( SDL::Key::DOWN ) x -= 1 if SDL::Key.press?( SDL::Key::LEFT ) x=0 if x<0 x=(639-32) if x>(639-32) y=0 if y<0 y=(479-32) if y>(479-32) enemyY=enemyY+1 enemyY=0 if enemyY>479 if (x-enemyX).abs<32 and (y-enemyY).abs<32 then exit end http://mevius.5ch.net/test/read.cgi/gamedev/1086858349/199
200: Ruby@課題6当たり判定 [] 04/06/28 18:33 ID:1FRiXQWF screen.fillRect( 0, 0, 640, 480, [ 0, 0, 0 ] ) screen.fillRect( x, y, 32, 32, [ 255, 0, 0 ] ) screen.fillRect( enemyX, enemyY, 32, 32, [ 0, 255, 0 ] ) screen.updateRect( 0, 0, 0, 0 ) end 課題6当たり判定(実行ファイル付き) http://gamdev.org/up/img/764.zip 【Rubyスクリプトを実行ファイルにする方法】 http://exerb.sourceforge.jp/ からExerbををダウンロード レシピファイルを書く add_ruby_script[TAB](スクリプト名) add_extension_library[TAB](ライブラリ名)[TAB](パスを含めたライブラリ名) 例) add_ruby_script[TAB]collision.rb add_extension_library[TAB]sdl.so[TAB]sdl.so ※注意 [TAB]はTABキーで入力してください 通常のエディタだと空白と判別できませんので注意 Exerb添付ドキュメントは旧式の書き方になっているようです サンプルは新しいものだったのでそちらを参考にしました http://mevius.5ch.net/test/read.cgi/gamedev/1086858349/200
201: 63 ◆xdaKt6k1XI [sage] 04/06/28 20:48 ID:W33tIq0j >>195 >>198 ありがとうございました。 http://mevius.5ch.net/test/read.cgi/gamedev/1086858349/201
202: 生徒BLUE [] 04/06/28 21:18 ID:mIyMN4GH 指摘された所を全部直しました 課題5キー入力再提出 http://gamdev.org/up/img/766.zip http://mevius.5ch.net/test/read.cgi/gamedev/1086858349/202
203: 4 ◆3VUXqvbfSY [] 04/06/28 21:39 ID:kLFrYp0l 参考程度に… オフスクリーン: 変数宣言 前略 hdcOFF=CreateCompatibleDC(hdcON);//空の描画ハンドルを作る CopyBitmap=CreateCompatibleBitmap(hdcON,640,480);//表のウィンドウと互換のビットマップをつくる。 SelectObject(hdcOFF,CopyBitmap);//んで、設定 中略 BitBlt(hdcON,0,0,640,480,hdcOFF,0,0,SRCCOPY);//裏に書かれた内容を、表に上書きする。 後略 こんな感じ。…VC++だけでごめんなさい… http://mevius.5ch.net/test/read.cgi/gamedev/1086858349/203
204: LGP@課題1数当て [] 04/06/28 23:47 ID:1FRiXQWF スクリプト組はあまり時間もかからず有利なので 複数言語同時習得を目指してみます CH = G@SETUP( 640 , 480 , 16 , 1 ) RANDSET(SYSTIME()) RN = RAND()%9+1 G@PRINT(CH,0,0,"1〜9の数を入力せよ") G@FLIP() LOOP I@KEYGET2( ) IF I@KEYBTN2(1)=2 THEN ANS=I@KEYBTN2(0)-1 IF ANS=RN THEN SYSEXIT() ENDIF IF (ANS>0) AND (ANS<10) THEN N=N+1 G@GDIBOXFULL( CH , 0, 100, 640, 480 ) G@PRINT(CH,0,100,"はずれ"+STR(N)+"回目") ENDIF G@FLIP() ENDIF S@WAIT() ENDLOOP LGP@課題1数当て(実行ファイル付き) http://gamdev.org/up/img/767.zip http://mevius.5ch.net/test/read.cgi/gamedev/1086858349/204
205: 名前は開発中のものです。 [sage] 04/06/29 06:26 ID:Ngmzz0xf 課題6 実行方法:?メモ帳にコピペ、?名前をつけて保存でinvader.html、?ブラウザにD&D <html><head><title>Invader Game?</title><style type="text/css"><!-- .self{background-color:#FF0000;position:absolute;width:32px;height:32px;} .enemy{background-color:#0000FF;position:absolute;width:32px;height:32px;} --></style></head> <body onLoad="m()"onKeyDown="k[event.keyCode]=1"onKeyUp="k[event.keyCode]=0"> <div id=c class=self></div><div id=e class=enemy></div> <script language="Javascript"><!-- var alive=true,timerID,k=[],x=304,y=448,eX,eY= 480; var charElm=document.getElementById('c'),enemyElm=document.getElementById('e'); function m(){clearTimeout(timerID); x+=k[37]&&x?-8:k[39]&&x<608?8:0;y+=k[38]&&y?-8:k[40]&&y<448?8:0; charElm.style.left=x;charElm.style.top=y; eY+=8;if(eY>480){eY=-32;enemyElm.style.left=eX=Math.floor(Math.random()*640);} enemyElm.style.top=eY; if(Math.abs(x-eX)>32||Math.abs(y-eY)>32)timerID=setTimeout(m,30);} //--></script></body></html> http://mevius.5ch.net/test/read.cgi/gamedev/1086858349/205
206: LGP@課題2素数 [] 04/06/29 09:54 ID:OSp1CFcf FH=F@OPEN("PrimeNumber.txt" , 3 ) F@WRITES( FH , STR(2) ) COUNT=COUNT+1 I=3 WHILE COUNT<1000 SOSU=-1 FOR J=3 TO I/2 STEP 2 IF I%J=0 THEN SOSU=0 ENDIF NEXT IF SOSU=-1 THEN F@WRITES( FH , STR(I) ) COUNT=COUNT+1 ENDIF I=I+2 S@WAIT() ENDWHILE F@CLOSE( FH ) http://mevius.5ch.net/test/read.cgi/gamedev/1086858349/206
207: 名前は開発中のものです。 [sage] 04/06/29 13:12 ID:WW/6W0k2 dpかwinsockでチャット作りたひ。 http://mevius.5ch.net/test/read.cgi/gamedev/1086858349/207
208: 名前は開発中のものです。 [] 04/06/29 18:46 ID:vpUdLCjy >>207 自分で作ったチャットソフトで皆と繋げられたら楽しそうな予感! http://mevius.5ch.net/test/read.cgi/gamedev/1086858349/208
209: 名前は開発中のものです。 [] 04/06/29 21:15 ID:OSp1CFcf もの凄い勢いで進行してるのでまとめの意味もあって統計をとってみました 抜けてる人がいたらごめんなさい JavaScript ****** 6 Ruby.. ****** 6 生徒A(Win32API). ***** 5 生徒BLUE (Win32API). ***** 5 Delphi ***** 5 D言語 ** 2 LGP ** 2 x≠先生かつx=生徒 ⇒ x=俺(VB) 測定不能 まとめページ http://gamdev.org/w/?%5B%5B%A1%DA%BD%E9%BF%B4%BC%D4%A1%DB%B2%DD%C2%EA%A4%F2%A5%AF%A5%EA%A5%A2%A4%B7%A4%C6%A4%A4%A4%AF%A5%B9%A5%EC%A1%DA%B9%D6%BD%AC%B2%F1%A1%DB%A4%DE%A4%C8%A4%E1%5D%5D アップローダ http://gamdev.org/up/ http://mevius.5ch.net/test/read.cgi/gamedev/1086858349/209
210: x≠先生かつx=生徒 ⇒ x=俺 [sage] 04/06/29 21:28 ID:gNXtRGm+ >>209 VBを使った覚えは無いんですが…というよりVB使えません。 >>134のことかな? http://mevius.5ch.net/test/read.cgi/gamedev/1086858349/210
211: 名前は開発中のものです。 [sage] 04/06/29 22:14 ID:OSp1CFcf >>210 混同してました 2人も先行者がいたのかorz 修正しました HSPのほうはもうやらないの? JavaScript ****** 6 Ruby.. ****** 6 生徒A(Win32API). ***** 5 生徒BLUE (Win32API). ***** 5 Delphi ***** 5 D言語 ** 2 LGP ** 2 x≠先生かつx=生徒 ⇒ x=俺(Win32API) 測定不能 VB 測定不能 http://mevius.5ch.net/test/read.cgi/gamedev/1086858349/211
212: LGP@課題3赤い四角 [] 04/06/29 22:53 ID:OSp1CFcf //640x480、16ビット色、ウィンドウ画面 CH = G@SETUP( 640 , 480 , 16 , 1 ) //ブラシを赤色に設定(RGBはそれぞれ0〜1.0で設定) G@GDISETBRUSH( 0 , 1.0 , 0 , 0 ) //四角を描画 G@GDIBOXFULL( CH , 0, 0, 320, 240 ) //フリップ G@FLIP() //無限ループ LOOP S@WAIT() ENDLOOP http://mevius.5ch.net/test/read.cgi/gamedev/1086858349/212
213: 生徒BLUE [] 04/06/30 00:29 ID:HYWm3For >>181 >「ANDでマスクとる」とかはわかる? はい、この場合は2進数に直して一番左のビット以外を全部0にするってことですよね MSDN読んだりあれからさらに調べてみたので前よりはちょっとわかったのですが 左端のビットが1ならボタンが押されているという程度の理解でいいのでしょうか ・定数書いちゃダメ defineを積極的に使ってみました C++の場合だとdefineは使わずにconstを使ったほうがいいと書いてあるホームページも みつけましたがどうなんでしょう? ・拡張子がcppなのにC言語風 意識せずに全部cppにする習慣がついてたので…… クラスを使う→cpp、使わない→cでいいですか? 拡張子の使い分けむずかしい ・バックバッファあたりは毎回生成&破棄しなくても最初に一度だけ GetDCを使えばいいんだ!と前回は気づいてませんでした WEBの情報をあちこちからつまみ食いしてるので全体的にチグハグな感じに なっていたようで指摘してもらって勉強になります ソースみていただける方は2ちゃんねるに貼り付けとアップローダのどちらが見やすいでしょうか? それとも両方のほうがよい? http://mevius.5ch.net/test/read.cgi/gamedev/1086858349/213
214: 名前は開発中のものです。 [sage] 04/06/30 11:43 ID:0T8fXV58 そろそろ本気で見にくくなってきたわけだが、 ちょっと言語が大杉やしないかい? もうちょっと絞ろうよ http://mevius.5ch.net/test/read.cgi/gamedev/1086858349/214
215: 通りすがり人 [sage] 04/06/30 12:46 ID:qBs2hfFg >>213 > 左端のビットが1ならボタンが押されているという程度の理解でいいのでしょうか HELPには... 最上位ビットがセットされたときは現在キーが押されていることを示し、 最下位ビットがセットされたときは直前のGetAsyncKeyState関数呼び出し以降に キーが押されたことを示します。 って書いてある。つまり・・・ #include<windows.h> #include<stdio.h> void main() { intRv; for(;;) { Sleep(1); Rv = GetAsyncKeyState(VK_SPACE); if (Rv != 0) { printf("%08x\n", Rv ); } } } スペースをバシッと叩くとわかるんだけど、初回だけ最下位ビットが変化してる。 つまり、リピート状態なのかを判断できるわけ。 http://mevius.5ch.net/test/read.cgi/gamedev/1086858349/215
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 572 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.020s