[過去ログ] 【初心者】課題をクリアしていくスレ【講習会】 (787レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
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
自分で作ったチャットソフトで皆と繋げられたら楽しそうな予感!
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
数日間ソースとにらめっこしてるのですが、バックバッファーの処理が上手くいかないです…
上下前次1-新書関写板覧索設栞歴
あと 561 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.027s