[過去ログ] 【初心者】課題をクリアしていくスレ【講習会】 (787レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
209(1): 名前は開発中のものです。 [] 04/06/29 21:15 ID:OSp1CFcf(2/4) AAS
 もの凄い勢いで進行してるのでまとめの意味もあって統計をとってみました 
 抜けてる人がいたらごめんなさい 
  
 JavaScript         ****** 6 
 Ruby..            ****** 6 
 生徒A(Win32API).     ***** 5 
 生徒BLUE (Win32API).  ***** 5 
 Delphi            ***** 5 
 D言語            ** 2 
 LGP             ** 2 
 x≠先生かつx=生徒 ⇒ x=俺(VB) 測定不能 
  
 まとめページ 
 外部リンク:gamdev.org 
 アップローダ 
 外部リンク:gamdev.org 
210(1): x≠先生かつx=生徒 ⇒ x=俺 [sage] 04/06/29 21:28 ID:gNXtRGm+(1) AAS
 >>209 
 VBを使った覚えは無いんですが…というよりVB使えません。 
 >>134のことかな? 
211(1): 名前は開発中のものです。 [sage] 04/06/29 22:14 ID:OSp1CFcf(3/4) AAS
 >>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 測定不能 
212: LGP@課題3赤い四角 [] 04/06/29 22:53 ID:OSp1CFcf(4/4) AAS
 //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 
213(1): 生徒BLUE [] 04/06/30 00:29 ID:HYWm3For(1/4) AAS
 >>181181(1): 名前は開発中のものです。 [sage] 04/06/27 22:58 ID:qWAk5Epz(2/2) AAS
 >>177 
 > 0x8000の意味とかまだよくわかりませんけれど 
 「ANDでマスクとる」とかはわかる? 
  
 定数書いちゃダメとか、staticって書くようにするとか、 
 拡張子がcppなのにC言語風じゃん!とか、 
 バックバッファあたりは毎回生成&破棄しなくても最初に一度だけ 
 作成してしまった方が処理の無駄がないとか、ブラシとペンも。 
>「ANDでマスクとる」とかはわかる?  
 はい、この場合は2進数に直して一番左のビット以外を全部0にするってことですよね 
 MSDN読んだりあれからさらに調べてみたので前よりはちょっとわかったのですが 
 左端のビットが1ならボタンが押されているという程度の理解でいいのでしょうか 
  
 ・定数書いちゃダメ 
 defineを積極的に使ってみました 
 C++の場合だとdefineは使わずにconstを使ったほうがいいと書いてあるホームページも 
 みつけましたがどうなんでしょう? 
  
 ・拡張子がcppなのにC言語風 
 意識せずに全部cppにする習慣がついてたので…… 
 クラスを使う→cpp、使わない→cでいいですか? 
 拡張子の使い分けむずかしい 
  
 ・バックバッファあたりは毎回生成&破棄しなくても最初に一度だけ 
 GetDCを使えばいいんだ!と前回は気づいてませんでした 
WEBの情報をあちこちからつまみ食いしてるので全体的にチグハグな感じに 
 なっていたようで指摘してもらって勉強になります 
 ソースみていただける方は2ちゃんねるに貼り付けとアップローダのどちらが見やすいでしょうか? 
 それとも両方のほうがよい? 
214: 名前は開発中のものです。 [sage] 04/06/30 11:43 ID:0T8fXV58(1) AAS
 そろそろ本気で見にくくなってきたわけだが、 
 ちょっと言語が大杉やしないかい? 
 もうちょっと絞ろうよ 
215(2): 通りすがり人 [sage] 04/06/30 12:46 ID:qBs2hfFg(1) AAS
 >>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 ); 
   } 
  } 
 } 
 スペースをバシッと叩くとわかるんだけど、初回だけ最下位ビットが変化してる。 
 つまり、リピート状態なのかを判断できるわけ。
216(2): 生徒BLUE [] 04/06/30 17:09 ID:HYWm3For(2/4) AAS
 >>215 
 早速、コンパイルして試してみました 
 最下位ビットに注目してみると 
 1000000000100100100100100100...... 
 といったように変化します 
 初回だけということなので10000000......というものを期待していたのですがうまくいかないです 
217: 生徒BLUE [] 04/06/30 17:38 ID:HYWm3For(3/4) AAS
 課題6 当たり判定 
 赤い四角のサイズを元に当たり判定をしました 
  
 //****** 変更箇所 ****** 
  
 //乱数の初期化 
 srand((unsigned)time(NULL)); 
  
 //敵の移動 
 ++ty; 
 if (ty>YMAX) 
 { 
   ty=0; 
   tx=rand()*640/RAND_MAX; 
 } 
  
 //当たり判定 
 if (abs(x-tx)<BOXWIDTH && abs(y-ty)<BOXHEIGHT) 
 { 
   PostQuitMessage(0); 
 } 
  
 外部リンク[zip]:gamdev.org 
218(1): 名前は開発中のものです。 [sage] 04/06/30 18:49 ID:3iu2d+4i(1/2) AAS
 >>216 
 ん?スペースキーを押すと、こんな風に表示されませんか? 
 ffff8001 
 ffff8000 
 ffff8000 
 ffff8000 
 ffff8000 
 ffff8000 
 ffff8000 
 ffff8000 
 ffff8000 
 ffff8000 
 ffff8000
219(1): 生徒BLUE [] 04/06/30 19:04 ID:HYWm3For(4/4) AAS
 >>218 
 ならないです 
 もうちょっと調べてみます 
220: 名前は開発中のものです。 [sage] 04/06/30 19:39 ID:3iu2d+4i(2/2) AAS
 >>219 
 あ〜、押しっぱなしの場合は違う結果になるかもです。 
 OSのキーボードバッファとか、その辺の兼ね合いだと思うけど。 
221: 名前は開発中のものです。 [sage] 04/06/30 19:52 ID:/EAv0A9z(1) AAS
 >>215試して見たけど確かに>>216の現象が出るな。 
 他の出力で確認したらちゃんと立ち上がりだけ1が出るので 
 printf()絡みでキー状態が変化してるっぽい。 
 普通はこんな使い方しないので気にしなくて良いと思われ。 
222(1): 63 ◆xdaKt6k1XI  [sage] 04/06/30 21:22 ID:qAZjVMDs(1) AAS
 >>211 
 今回のは敵の大きさとか動きとかよくわからないのでやらないです。 
223(1): 名前は開発中のものです。 [] 04/06/30 22:22 ID:j1/sm794(1) AAS
 320x240で一度作ったけど即死しすぎて32x32に縮小したよ 
 サイズ指定してないから何でもいいと思ったけどそのあたりどうなんですか?>先生 
  
 wikiのほうにまとめコーナー作っておいたので各自書きたいことがあったら適当にどうぞ 
 というか書いてくださいおながいします 
 名無しさんを消して自分の名前にして提出状況とかコンパイラは何を使ってるとかそんなのでいいので 
  
 外部リンク:gamdev.org 
224: LGP@課題4sin波形 [] 04/07/01 00:05 ID:TMNGfYFe(1/2) AAS
 //画面初期化、最後を0にすると全画面 
 CH = G@SETUP( 640 , 480 , 16 , 1 ) 
 //ペンの設定、実線、線の幅1、赤色 
 G@GDISETPEN(LG_GDI_PS_SOLID,1,1.0,0,0) 
 //sin波形の始点になる点を描画(LINETOの都合) 
 G@GDILINE(CH,0,239,0,239) 
 FOR I=0 TO 360 
 X=I 
 //SINの引数と戻り値は固定小数点定数(float) 
 //整数を固定小数点定数にキャストするには65536を掛ける 
 //固定小数点定数を整数にキャストするには65536で割る 
 Y=SIN(I*65536)*100/65536+239 
 //最後にG@GDILINEかG@GDILINETOで線を引いた場所からX,Yまで線を引く 
 G@GDILINETO(CH,X,Y) 
 NEXT 
 G@FLIP() 
  
 //無限ループ 
 LOOP 
   S@WAIT() 
 ENDLOOP 
225: 4  ◆3VUXqvbfSY  [] 04/07/01 08:34 ID:KOe6GSoY(1) AAS
 >>222,223 
 サイズは自由で結構です。 
 敵の動きは…だからy++;だけですよ? 
226(1): 生徒A [sage] 04/07/01 14:26 ID:MCi74o/R(1) AAS
 数日間ソースとにらめっこしてるのですが、バックバッファーの処理が上手くいかないです…
227(1): 名前は開発中のものです。 [sage] 04/07/01 15:45 ID:bdPAbTo6(1) AAS
 >>226 
 キミのソースに少し手を加えたやつをうpろだにあげたから試してみれ。780.lzhだ。 
 ただしオフスクリーン処理以外(後始末とか)は端折ってるのでそこは参考にしないように。 
228: LGP@課題5キー入力 [] 04/07/01 22:17 ID:TMNGfYFe(2/2) AAS
  CH = G@SETUP( 640 , 480 , 16 , 1 ) 
  LOOP //無限ループ 
  //赤い四角を黒で塗りつぶして消す 
    G@GDISETBRUSH( 0 , 0 , 0 , 0 ) 
    G@GDIBOXFULL( CH , X, Y, X+320, Y+240 ) 
    I@KEYGET() //キーの状態を得る 
  //I@KEYBTNの引数に調べたいキーをいれ、戻り値が1なら押してる状態 
    IF I@KEYBTN(0xC8)=1 THEN //0xC8はカーソルキー↑ 
      IF Y>0 THEN  
        Y=Y-1 
      ENDIF 
    ENDIF 
    IF I@KEYBTN(0xCB)=1 THEN 
      IF X>0 THEN 
        X=X-1 
      ENDIF 
    ENDIF 
    IF I@KEYBTN(0xCD)=1 THEN 
      IF X<320 THEN 
        X=X+1 
      ENDIF 
    ENDIF 
    IF I@KEYBTN(0xD0)=1 THEN 
      IF Y<240 THEN 
        Y=Y+1 
      ENDIF 
    ENDIF 
   //赤い四角を描く 
    G@GDISETBRUSH( 0 , 1.0 , 0 , 0 ) 
    G@GDIBOXFULL( CH , X, Y, X+320, Y+240 ) 
    G@FLIP() 
  ENDLOOP 
229: LGP@課題6当たり判定 [] 04/07/02 03:30 ID:4ZvlEEie(1/2) AAS
  CH = G@SETUP( 640 , 480 , 16 , 1 ) 
  X=320 
  Y=240 
  //無限ループ 
  LOOP 
  //黒で塗りつぶし 
    G@GDISETBRUSH( 0 , 0 , 0 , 0 ) 
    G@GDIBOXFULL( CH , 0, 0, 640, 480) 
  //キー入力 
  //キーの状態を得る 
    I@KEYGET() 
  //I@KEYBTNの引数に調べたいキーをいれ、戻り値が1なら押してる状態 
  //0xC8はカーソルキー↑ 
    IF I@KEYBTN(0xC8)=1 THEN 
      IF Y>0 THEN  
        Y=Y-1 
      ENDIF 
    ENDIF 
    IF I@KEYBTN(0xCB)=1 THEN 
      IF X>0 THEN 
        X=X-1 
      ENDIF 
    ENDIF
230: LGP@課題6当たり判定 [] 04/07/02 03:30 ID:4ZvlEEie(2/2) AAS
    IF I@KEYBTN(0xCD)=1 THEN 
      IF X<(640-32) THEN 
        X=X+1 
      ENDIF 
    ENDIF 
    IF I@KEYBTN(0xD0)=1 THEN 
      IF Y<(480-32) THEN 
        Y=Y+1 
      ENDIF 
    ENDIF //敵移動 
    TY=TY+1; 
    IF TY>(640-32) THEN 
      TY=0 
      TX=RAND()%(640-32) 
    ENDIF 
   
  //赤い四角を描く 
    G@GDISETBRUSH( 0 , 1.0 , 0 , 0 ) 
    G@GDIBOXFULL( CH , X, Y, X+32, Y+32 ) 
  //敵を描く 
    G@GDISETBRUSH( 0 , 0 , 1.0 , 0 ) 
    G@GDIBOXFULL( CH , TX, TY, TX+32, TY+32 ) 
   
  //当たり判定 
    IF (ABS(X-TX)<32) AND  (ABS(Y-TY)<32) THEN 
      END 
    ENDIF 
   
    G@FLIP() 
  ENDLOOP 
231: 名前は開発中のものです。 [] 04/07/04 00:00 ID:UWWF49AF(1) AAS
 保守age 
232(1): HSPが初プログラム@生徒希望 [sage] 04/07/04 11:07 ID:3DUC6+Xf(1/2) AAS
 課題1 
    title "数当てゲーム" 
    screen 0,150,65   ;ウィンドウのサイズを調整 
    mes "1〜9から一つ入力" 
    input a   ;入力ボックスを出す 
  
 *random 
    rnd b,9   ;0〜8の乱数発生 
    b+=1   ;1〜9にする 
    c=1 
  
 *number 
    button "これだ!",*judge 
    stop 
  
 *judge 
    if a=b:dialog "当たり!",0,""+c+"回目":goto *random 
    if a>b:dialog "もっと小さい",0,""+c+"回目" 
    if a<b:dialog "もっと大きい",0,""+c+"回目" 
    c+=1 
    goto *number 
  
 課題3 
    title "赤い四角の描画" 
    screen 0,640,480,1 
    color 255,0,0:boxf 0,0,320,240 
    stop 
  
 外部リンク[zip]:gamdev.org 
  
 課題2はヨクワカラナイです。ヒントくれませんか? 
233(1): 名前は開発中のものです。 [sage] 04/07/04 11:13 ID:dw9vgL9Y(1/2) AAS
 >>232 
 自分以下で2以上の全ての整数の割り算の余りが0にならなければ素数 
 別の解放にエラトステネスのふるいってのがあるけど別に使わなくていい
上下前次1-新書関写板覧索設栞歴
あと 554 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.021s