[過去ログ] 【初心者】課題をクリアしていくスレ【講習会】 (787レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
184(1): 副担任 [sage] 04/06/27 23:48 ID:sIosK61q(2/2) AAS
 先生が帰ってくるまで漏れが面倒みましょうか? 
185: ぷち [] 04/06/28 00:10 ID:W5zBmX8i(1) AAS
186: 名前は開発中のものです。 [sage] 04/06/28 03:20 ID:vjeNxAuN(1) AAS
 落ちこぼし師 
187: 名前は開発中のものです。 [sage] 04/06/28 04:46 ID:AKJFcicb(1) AAS
 >>184 
 お願いします。 
 ソース貼っても、アドバイス求めても生徒ばっかりでレスなくて(´・ω・`)ショボーンです。
188(1): 生徒A [] 04/06/28 06:10 ID:D8BhR1kS(1/3) AAS
 なんとか徹夜して6時間ほど粘ってキー入力まで行ったけど、限界が近い… 
  
 WM_TIMERで画面の更新を行っているんですが、なんかすごくちらつくんですよ 
 あと、DeleteObject(hBr)というのを使うと、何故か画面が白くなるんです… 
 なので、使ってません。 
  
 外部リンク[lzh]:gamdev.org 
189: 4  ◆3VUXqvbfSY  [] 04/06/28 06:20 ID:kLFrYp0l(1/2) AAS
 すみません皆様… 
 ミニ死の行進してました… 
  
 アプロダについて: 
 あっても、別に構いませんが、必要無いようにします。 
 具体的には、トップダウンで(例えばCなら) 
 メインを作る。 
 ↓ 
 個々に使われた関数を作る 
 みたいに、ソースを(出来るだけ解りやすく)分割して、表示しようと企んでいます。 
進行度: 
 自分で出来る方がドンドン進まれるのは、むしろ、喜ばしいです。ただし、課題はあくまで初心者ラインにしておきます。 
 だから、焦らなくて大丈夫。今の課題は、「キーで、赤い四角を動かす」です。 
先生: 
 や、やっと一人…m(_ _)mヨロシクオネガイシマス 
次の課題: 
 当たり判定。 
 先ほどの、「動く赤い四角」を避けゲーに改造しましょう 
 敵は 敵x = rand() % 640;//rand()*640/RAND_MAX 
 で…敵y++;のように動く単純な敵です。 
 当たったら終了と言う仕様で… 
190(1): 副担任 [sage] 04/06/28 10:23 ID:HdfIcXTc(1/3) AAS
 漏れは先生と考え方が違うので一応書いておきます。うざかったらクビにしてください。>先生 
 ・動けば正義(いい設計はできたほうがいいけどまだ求める段階ではないと思う) 
 ・ソースは固めてどこかにアップする(バックアップ、成果としてわかりやすい) 
 ・バイナリは付けて欲しい(開発環境を全てそろえるのは難しい) 
 ・課題によけいなものは付けないでください(初心者が提出したソースを参考にしたとき、必要な機能のみが実装されていたほうがいい) 
  
 あくまで初心者のためのライブラリとしてとらえています。 
 「絵を描くにはこうする」「動かすにはこうする」「…」「…」のサンプルコードの固まりにしたいです。 
  
 課題の方針には賛成なので従います。 
  
 というわけで分からんことがある人は漏れが面倒みます。勉強しながら…。orz 
191: 副担任 [sage] 04/06/28 10:26 ID:HdfIcXTc(2/3) AAS
 訂正すまそ。 
  × ・課題によけいなものは付けないでください(初心者が提出したソースを参考にしたとき、必要な機能のみが実装されていたほうがいい)  
 ○ ・提出したソースにはよけいな機能は付けないでください(初心者が提出したソースを参考にしたとき、必要な機能のみが実装されていたほうがいい)  
192(1): 名前は開発中のものです。 [sage] 04/06/28 10:28 ID:Ten9Dr/x(1/2) AAS
 >>188 
 簡単だが添削。ウィンドウプロシージャだけ。 
  
 DeleteObjectの2行はWM_PAINT内でやってはダメ。 
 WM_PAINTは何度も呼ばれるため、最初の描画が終了した時点で、作ったペンやブラシは 
 無効になるため、色がつかなくなる。DeleteObjectするならWM_DESTROY内で。 
 ちなみにCreateしたものはちゃんと削除するのがお約束。 
  
 SelectObjectしたものに関しても、元に戻しておくのが一応の作法。 
 holdobj = SelectObject(hdc, hobj);// 以前のオブジェクトハンドルを保存 
 // 何か処理 
 holdobj = SelectObject(hdc, holdobj);// 以前のオブジェクトに戻す 
  
 何故か赤く塗りつぶされないというのは、ディスプレイDCに複数回描画を行っていて、それが 
 ちらつきとして現れるから。こういう場合はオフスクリーンに描画し、最後にディスプレイDCに 
 BitBltする。 
193: 名前は開発中のものです。 [sage] 04/06/28 10:30 ID:Ten9Dr/x(2/2) AAS
 ちと訂正・・orz 
  
 ×holdobj = SelectObject(hdc, holdobj);// 以前のオブジェクトに戻す 
 ○SelectObject(hdc, holdobj);// 以前のオブジェクトに戻す 
194(2): 63 ◆xdaKt6k1XI  [sage] 04/06/28 15:51 ID:W33tIq0j(1/2) AAS
 >>190 
 変な質問ですいません 
 バイナリってなんですか? 
195(2): 生徒A [] 04/06/28 16:36 ID:D8BhR1kS(2/3) AAS
 >>194 190じゃないですが、もともとは2進数という意味だと思います。 
 だから、この場合は、1と0の組み合わせで作られた機械語データ 
 (実行ファイル)の意味だと思います。 
 他にも、テキストデータ以外のファイル全てを指す事もあります。 
196: 生徒A [] 04/06/28 16:40 ID:D8BhR1kS(3/3) AAS
 >>192 ありがとうございます。 
 DeleteObjectのやり方は分かったのですが、 
 オフスクリーンのやり方がちょっとよく分からないです。 
 具体的には、オフスクリーンの作成方法です。 
197: 名前は開発中のものです。 [sage] 04/06/28 17:06 ID:cdlT0cfW(1) AAS
 CreateCompatibleBitmap 
198(1): 副担任 [sage] 04/06/28 17:37 ID:HdfIcXTc(3/3) AAS
 >>194 
 Windowsの実行ファイルのことです。"〜.exe" ってやつ。 
 C言語とかはコンパイルして実行ファイルを作らないとプログラムが動きません。 
 HSPはインタプリタ言語なので実行ファイルは作らなくていいみたいですね。 
  
 >>195 
 正解です 
199: Ruby@課題6当たり判定 [] 04/06/28 18:32 ID:1FRiXQWF(1/3) AAS
 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>479if (x-enemyX).abs<32 and (y-enemyY).abs<32 then 
     exit 
   end 
200: Ruby@課題6当たり判定 [] 04/06/28 18:33 ID:1FRiXQWF(2/3) AAS
 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当たり判定(実行ファイル付き) 
 外部リンク[zip]:gamdev.org 
  
 【Rubyスクリプトを実行ファイルにする方法】 
 外部リンク: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添付ドキュメントは旧式の書き方になっているようです 
 サンプルは新しいものだったのでそちらを参考にしました 
201: 63 ◆xdaKt6k1XI  [sage] 04/06/28 20:48 ID:W33tIq0j(2/2) AAS
 >>195 
 >>198 
 ありがとうございました。 
202: 生徒BLUE [] 04/06/28 21:18 ID:mIyMN4GH(1) AAS
 指摘された所を全部直しました 
  
 課題5キー入力再提出 
 外部リンク[zip]:gamdev.org 
203: 4  ◆3VUXqvbfSY  [] 04/06/28 21:39 ID:kLFrYp0l(2/2) AAS
 参考程度に… 
 オフスクリーン: 
 変数宣言 前略 
  
 hdcOFF=CreateCompatibleDC(hdcON);//空の描画ハンドルを作る 
 CopyBitmap=CreateCompatibleBitmap(hdcON,640,480);//表のウィンドウと互換のビットマップをつくる。 
 SelectObject(hdcOFF,CopyBitmap);//んで、設定 
  
 中略 
  
 BitBlt(hdcON,0,0,640,480,hdcOFF,0,0,SRCCOPY);//裏に書かれた内容を、表に上書きする。 
  
 後略 
こんな感じ。…VC++だけでごめんなさい… 
204: LGP@課題1数当て [] 04/06/28 23:47 ID:1FRiXQWF(3/3) AAS
 スクリプト組はあまり時間もかからず有利なので 
 複数言語同時習得を目指してみます 
  
 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数当て(実行ファイル付き)  
 外部リンク[zip]:gamdev.org 
205: 名前は開発中のものです。 [sage] 04/06/29 06:26 ID:Ngmzz0xf(1) AAS
 課題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)>3232(1): 生徒弐顎 [] 04/06/13 20:20 ID:3gckKy9M(3/3) AAS
 どこかで見たような課題ですね。 
 とりあえず言語はC/C++で問題ないですか? 
 採点のポイントをあらかじめ教えてくれるとやりやすいのですが。  
||Math.abs(y-eY)>32)timerID=setTimeout(m,30);} 
 //--></script></body></html>
206: LGP@課題2素数 [] 04/06/29 09:54 ID:OSp1CFcf(1/4) AAS
 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 ) 
207(1): 名前は開発中のものです。 [sage] 04/06/29 13:12 ID:WW/6W0k2(1) AAS
 dpかwinsockでチャット作りたひ。 
208: 名前は開発中のものです。 [] 04/06/29 18:46 ID:vpUdLCjy(1) AAS
 >>207 
 自分で作ったチャットソフトで皆と繋げられたら楽しそうな予感! 
上下前次1-新書関写板覧索設栞歴
あと 579 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.024s