[過去ログ] 【初心者】課題をクリアしていくスレ【講習会】 (787レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
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
自分で作ったチャットソフトで皆と繋げられたら楽しそうな予感!
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
134(16): 名前は開発中のものです。 [] 04/06/24 00:34 ID:9IgBi+UW(1) AAS
>>130 ありがとうございます。C言語でも出来ますけど、あまり自信が無いんです…。

VBでキャラの移動と弾の発射だけやってみました。
←→キーで左右移動、Z or Spaceキーで弾の発射です。
外部リンク[lzh]:gamdev.org
のことかな?
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
>>181
181(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
1-
あと 557 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.019s