ゲームに必要な要素を先生が出してくれます
その課題をクリアしていく講習会です
探検
【初心者】課題をクリアしていくスレ【講習会】
■ このスレッドは過去ログ倉庫に格納されています
1名前は開発中のものです。
04/06/10 18:05ID:VshiFFV8163名前は開発中のものです。
04/06/27 02:56ID:fYoguU/V >>162
>このスレはなぜ貼り付けるのが主流なんだw
ダウソして解凍してって面倒なので結構貼り付けいいと思うんだが
普通のレスが見にくい&改行制限が問題だな
2ch型掲示板を設置して生徒一人につき1スレ使ってソースを貼り付けていくっていうのはどうでしょ?
TABの問題が残るかな?
>このスレはなぜ貼り付けるのが主流なんだw
ダウソして解凍してって面倒なので結構貼り付けいいと思うんだが
普通のレスが見にくい&改行制限が問題だな
2ch型掲示板を設置して生徒一人につき1スレ使ってソースを貼り付けていくっていうのはどうでしょ?
TABの問題が残るかな?
164名前は開発中のものです。
04/06/27 06:21ID:6ucDfgWE >>163
神キタ━━━━━━(゚∀゚)━━━━━━ !!
ダウソとか解凍めんどいもんな
ひょっとして過去にうぷされたソースとかもスレ立てて貼りつけてくれれば
うれしいけどそれは望みすぎかな
急がなくていいからがんがれ!
神キタ━━━━━━(゚∀゚)━━━━━━ !!
ダウソとか解凍めんどいもんな
ひょっとして過去にうぷされたソースとかもスレ立てて貼りつけてくれれば
うれしいけどそれは望みすぎかな
急がなくていいからがんがれ!
165名前は開発中のものです。
04/06/27 07:31ID:fYoguU/V166名前は開発中のものです。
04/06/27 09:45ID:sIosK61q ソースをコピペしてコンパイルして実行するほうがはるかにめんどい
167129
04/06/27 10:57ID:BWzYLsUd 今更ながらやっとwindows.hが読める?環境が整ったよ…
>>130-132さんありがとう。
LSI-C86試食でやっていたのですがこの度borlandのなんとかをいれました
次はSDL&Cygwin????
なんかいまだにDelphiとか分からないんですけど何をどうするのが好ましいのでしょうか…?
自分だけ違う次元ですね…。鬱。
>>130-132さんありがとう。
LSI-C86試食でやっていたのですがこの度borlandのなんとかをいれました
次はSDL&Cygwin????
なんかいまだにDelphiとか分からないんですけど何をどうするのが好ましいのでしょうか…?
自分だけ違う次元ですね…。鬱。
168名前は開発中のものです。
04/06/27 12:50ID:1xxqplwj >167
SDLとかCygwinとかDelphiとか気にしなくても良いから
とりあえずborland c++ コンパイラ用意できたということで
Cのお勉強をしてみましょうよ
SDLとかCygwinとかDelphiとか気にしなくても良いから
とりあえずborland c++ コンパイラ用意できたということで
Cのお勉強をしてみましょうよ
169167
04/06/27 13:15ID:BWzYLsUd170課題2@D言語
04/06/27 13:29ID:TlIkOaxm まだβ版だけど先取りして勉強。
素数判定。
const int MAX_COUNT = 1000;
int main() {
int num,check,count;
printf("1\n");
count = 1;
num = 2;
while (count<MAX_COUNT) {
for (check=2;check<num;check++) {
if (num%check==0) break;
}
if (check==num) {
printf("%d\n",num);
count++;
}
num++;
}
return 0;
}
素数判定。
const int MAX_COUNT = 1000;
int main() {
int num,check,count;
printf("1\n");
count = 1;
num = 2;
while (count<MAX_COUNT) {
for (check=2;check<num;check++) {
if (num%check==0) break;
}
if (check==num) {
printf("%d\n",num);
count++;
}
num++;
}
return 0;
}
171名前は開発中のものです。
04/06/27 17:32ID:m6T91X5d >>163
ソース貼り付けのメリットも捨てがたいな
テキストファイルを扱えるあぷろだがあれば閲覧もダウンロードもできて楽かもしれん
スレにソース貼りまくりも妙に楽しいんだが
>>164
,,ヘ ヘ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(,, ゚∇゚) < クレクレ厨逝ってよち!
〜(,,_ノ \_____________
>>165
megaBBSスクリプト( http://pabbs.hp.infoseek.co.jp/haifu.html )が半角、全角、TABを扱えていい感じだった
しかも等幅フォントも使えるみたい
2chでインデントつける方法は教えてもらってきた
http://pc5.2ch.net/test/read.cgi/tech/1088022524/83-92
>>166
だよな、人のソースみて勉強してる立場からすると崩れたソースは辛い
>>167>>169
Win32APIで窓プログラミング汁!
ぬくぬくどころか最難関だw
といっても参加者やわかる人が多い環境でもあるので王道かもしれん
ひたすらたくさんの開発環境を整えてPCの基礎知識を仕入れるのも(・∀・)イイ!
>>170
D言語知らないから間違ってたら悪いんだが
それって1も表示されないか?(1はもちろん素数じゃない)
>>生徒BLUE氏
BRUSHの解放忘れがあるよ
ソース貼り付けのメリットも捨てがたいな
テキストファイルを扱えるあぷろだがあれば閲覧もダウンロードもできて楽かもしれん
スレにソース貼りまくりも妙に楽しいんだが
>>164
,,ヘ ヘ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(,, ゚∇゚) < クレクレ厨逝ってよち!
〜(,,_ノ \_____________
>>165
megaBBSスクリプト( http://pabbs.hp.infoseek.co.jp/haifu.html )が半角、全角、TABを扱えていい感じだった
しかも等幅フォントも使えるみたい
2chでインデントつける方法は教えてもらってきた
http://pc5.2ch.net/test/read.cgi/tech/1088022524/83-92
>>166
だよな、人のソースみて勉強してる立場からすると崩れたソースは辛い
>>167>>169
Win32APIで窓プログラミング汁!
ぬくぬくどころか最難関だw
といっても参加者やわかる人が多い環境でもあるので王道かもしれん
ひたすらたくさんの開発環境を整えてPCの基礎知識を仕入れるのも(・∀・)イイ!
>>170
D言語知らないから間違ってたら悪いんだが
それって1も表示されないか?(1はもちろん素数じゃない)
>>生徒BLUE氏
BRUSHの解放忘れがあるよ
173名前は開発中のものです。
04/06/27 18:31ID:fYoguU/V テスト
というかこんな感じのロダでいいのかな?cppアップ可能に設定してみた
http://cgi.f11.aaacafe.ne.jp/~novarabb/phpup/img/007.cpp
各言語のテキストに対応させればそのままあpできるし。
というかこんな感じのロダでいいのかな?cppアップ可能に設定してみた
http://cgi.f11.aaacafe.ne.jp/~novarabb/phpup/img/007.cpp
各言語のテキストに対応させればそのままあpできるし。
174名前は開発中のものです。
04/06/27 19:00ID:PY8053hi >>169
実際にはWindowsのゲームプログラミングはそれほど難しくないよ。
内部にゲーム画像を作成してキー入力などに応じて更新、それを
描画するだけだからね。ウインドウプログラミングの「流れ」を
掴めれば、パズルゲームやADV/RPGは比較的簡単に作れる。
何からはじめればよいかわからない、ということなら
C++ ゲーム プログラミング
といったキーワードでぐぐるなり、書店で「Windowsプログラミングの本」
を眺めて何をすれば「Windows用プログラム」になるのか、調べてみると
良いかも。
本当に「基礎」をやるなら、高レベルのライブラリではなくまずSDK
ベースのWindowsプログラミングで「Windowsのプログラムの流れ」を
しっかり追った方が良い。
実際にはWindowsのゲームプログラミングはそれほど難しくないよ。
内部にゲーム画像を作成してキー入力などに応じて更新、それを
描画するだけだからね。ウインドウプログラミングの「流れ」を
掴めれば、パズルゲームやADV/RPGは比較的簡単に作れる。
何からはじめればよいかわからない、ということなら
C++ ゲーム プログラミング
といったキーワードでぐぐるなり、書店で「Windowsプログラミングの本」
を眺めて何をすれば「Windows用プログラム」になるのか、調べてみると
良いかも。
本当に「基礎」をやるなら、高レベルのライブラリではなくまずSDK
ベースのWindowsプログラミングで「Windowsのプログラムの流れ」を
しっかり追った方が良い。
04/06/27 19:17ID:v+n6K1pQ
インベーダー途中
http://gamdev.org/up/img/757.zip
http://gamdev.org/up/img/757.zip
176生徒A
04/06/27 19:26ID:WIo25CTE しばらく来ない内にすごい事になってるよ…もう付いていけない
177生徒BLUE
04/06/27 22:04ID:b0jvqBNF あまりソースを貼り付けるのは荒らしっぽい?のでうぷろだにしました
今はまだ170行ですがインベーダーなら500〜1000ぐらいにたぶんなるので
そろそろ切り替えようと思っていたところです
キー入力はGetAsyncKeyStateを使いました
0x8000の意味とかまだよくわかりませんけれど
if ((GetAsyncKeyState( VK_UP ) & 0x8000) == 0x8000)
{
y--;
}
チラチキ対策でダブルバッファを使った描画をしています
参考にしたソースをほぼそのままコピペしていますが内容は理解しています
このあたりは以前、やったことがあるのでまだまだ大丈夫
課題5キー入力
http://gamdev.org/up/img/759.zip
今はまだ170行ですがインベーダーなら500〜1000ぐらいにたぶんなるので
そろそろ切り替えようと思っていたところです
キー入力はGetAsyncKeyStateを使いました
0x8000の意味とかまだよくわかりませんけれど
if ((GetAsyncKeyState( VK_UP ) & 0x8000) == 0x8000)
{
y--;
}
チラチキ対策でダブルバッファを使った描画をしています
参考にしたソースをほぼそのままコピペしていますが内容は理解しています
このあたりは以前、やったことがあるのでまだまだ大丈夫
課題5キー入力
http://gamdev.org/up/img/759.zip
178名前は開発中のものです。
04/06/27 22:28ID:6fdveQpW 画像だけなら簡単だが、音をつける段階で挫折しそうだ。
ダイレクトXを使わずに、WAVを複数同時に鳴らすことがどれほど大変か・・・
ダイレクトXを使わずに、WAVを複数同時に鳴らすことがどれほど大変か・・・
179名前は開発中のものです。
04/06/27 22:41ID:PY8053hi >>178
そうだね。
「自分でPCMバッファを作成し波形を合成、リアルタイムに出力」
なんてことになると結構しんどい(面白いとも言うがw)・・・。
まあ、画像でも同じような場面(自分で管理するバッファを処理し
ながらのリアルタイム出力)はあるわけだが。
そうだね。
「自分でPCMバッファを作成し波形を合成、リアルタイムに出力」
なんてことになると結構しんどい(面白いとも言うがw)・・・。
まあ、画像でも同じような場面(自分で管理するバッファを処理し
ながらのリアルタイム出力)はあるわけだが。
180名前は開発中のものです。
04/06/27 22:48ID:qWAk5Epz ほらほら、先生が仕切らないから、落ちこぼれがでちゃったぞ。
一人は突っ走ってるし。
一人は突っ走ってるし。
181名前は開発中のものです。
04/06/27 22:58ID:qWAk5Epz >>177
> 0x8000の意味とかまだよくわかりませんけれど
「ANDでマスクとる」とかはわかる?
定数書いちゃダメとか、staticって書くようにするとか、
拡張子がcppなのにC言語風じゃん!とか、
バックバッファあたりは毎回生成&破棄しなくても最初に一度だけ
作成してしまった方が処理の無駄がないとか、ブラシとペンも。
> 0x8000の意味とかまだよくわかりませんけれど
「ANDでマスクとる」とかはわかる?
定数書いちゃダメとか、staticって書くようにするとか、
拡張子がcppなのにC言語風じゃん!とか、
バックバッファあたりは毎回生成&破棄しなくても最初に一度だけ
作成してしまった方が処理の無駄がないとか、ブラシとペンも。
04/06/27 23:05ID:v+n6K1pQ
04/06/27 23:07ID:v+n6K1pQ
( ゚д゚)ハッ!もしや、落ちこぼれが俺か!
184副担任
04/06/27 23:48ID:sIosK61q 先生が帰ってくるまで漏れが面倒みましょうか?
185ぷち
04/06/28 00:10ID:W5zBmX8i186名前は開発中のものです。
04/06/28 03:20ID:vjeNxAuN 落ちこぼし師
187名前は開発中のものです。
04/06/28 04:46ID:AKJFcicb188生徒A
04/06/28 06:10ID:D8BhR1kS なんとか徹夜して6時間ほど粘ってキー入力まで行ったけど、限界が近い…
WM_TIMERで画面の更新を行っているんですが、なんかすごくちらつくんですよ
あと、DeleteObject(hBr)というのを使うと、何故か画面が白くなるんです…
なので、使ってません。
http://gamdev.org/up/img/762.lzh
WM_TIMERで画面の更新を行っているんですが、なんかすごくちらつくんですよ
あと、DeleteObject(hBr)というのを使うと、何故か画面が白くなるんです…
なので、使ってません。
http://gamdev.org/up/img/762.lzh
1894 ◆3VUXqvbfSY
04/06/28 06:20ID:kLFrYp0l すみません皆様…
ミニ死の行進してました…
アプロダについて:
あっても、別に構いませんが、必要無いようにします。
具体的には、トップダウンで(例えばCなら)
メインを作る。
↓
個々に使われた関数を作る
みたいに、ソースを(出来るだけ解りやすく)分割して、表示しようと企んでいます。
進行度:
自分で出来る方がドンドン進まれるのは、むしろ、喜ばしいです。ただし、課題はあくまで初心者ラインにしておきます。
だから、焦らなくて大丈夫。今の課題は、「キーで、赤い四角を動かす」です。
先生:
や、やっと一人…m(_ _)mヨロシクオネガイシマス
次の課題:
当たり判定。
先ほどの、「動く赤い四角」を避けゲーに改造しましょう
敵は 敵x = rand() % 640;//rand()*640/RAND_MAX
で…敵y++;のように動く単純な敵です。
当たったら終了と言う仕様で…
ミニ死の行進してました…
アプロダについて:
あっても、別に構いませんが、必要無いようにします。
具体的には、トップダウンで(例えばCなら)
メインを作る。
↓
個々に使われた関数を作る
みたいに、ソースを(出来るだけ解りやすく)分割して、表示しようと企んでいます。
進行度:
自分で出来る方がドンドン進まれるのは、むしろ、喜ばしいです。ただし、課題はあくまで初心者ラインにしておきます。
だから、焦らなくて大丈夫。今の課題は、「キーで、赤い四角を動かす」です。
先生:
や、やっと一人…m(_ _)mヨロシクオネガイシマス
次の課題:
当たり判定。
先ほどの、「動く赤い四角」を避けゲーに改造しましょう
敵は 敵x = rand() % 640;//rand()*640/RAND_MAX
で…敵y++;のように動く単純な敵です。
当たったら終了と言う仕様で…
190副担任
04/06/28 10:23ID:HdfIcXTc 漏れは先生と考え方が違うので一応書いておきます。うざかったらクビにしてください。>先生
・動けば正義(いい設計はできたほうがいいけどまだ求める段階ではないと思う)
・ソースは固めてどこかにアップする(バックアップ、成果としてわかりやすい)
・バイナリは付けて欲しい(開発環境を全てそろえるのは難しい)
・課題によけいなものは付けないでください(初心者が提出したソースを参考にしたとき、必要な機能のみが実装されていたほうがいい)
あくまで初心者のためのライブラリとしてとらえています。
「絵を描くにはこうする」「動かすにはこうする」「…」「…」のサンプルコードの固まりにしたいです。
課題の方針には賛成なので従います。
というわけで分からんことがある人は漏れが面倒みます。勉強しながら…。orz
・動けば正義(いい設計はできたほうがいいけどまだ求める段階ではないと思う)
・ソースは固めてどこかにアップする(バックアップ、成果としてわかりやすい)
・バイナリは付けて欲しい(開発環境を全てそろえるのは難しい)
・課題によけいなものは付けないでください(初心者が提出したソースを参考にしたとき、必要な機能のみが実装されていたほうがいい)
あくまで初心者のためのライブラリとしてとらえています。
「絵を描くにはこうする」「動かすにはこうする」「…」「…」のサンプルコードの固まりにしたいです。
課題の方針には賛成なので従います。
というわけで分からんことがある人は漏れが面倒みます。勉強しながら…。orz
191副担任
04/06/28 10:26ID:HdfIcXTc 訂正すまそ。
× ・課題によけいなものは付けないでください(初心者が提出したソースを参考にしたとき、必要な機能のみが実装されていたほうがいい)
○ ・提出したソースにはよけいな機能は付けないでください(初心者が提出したソースを参考にしたとき、必要な機能のみが実装されていたほうがいい)
× ・課題によけいなものは付けないでください(初心者が提出したソースを参考にしたとき、必要な機能のみが実装されていたほうがいい)
○ ・提出したソースにはよけいな機能は付けないでください(初心者が提出したソースを参考にしたとき、必要な機能のみが実装されていたほうがいい)
192名前は開発中のものです。
04/06/28 10:28ID: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する。
簡単だが添削。ウィンドウプロシージャだけ。
DeleteObjectの2行はWM_PAINT内でやってはダメ。
WM_PAINTは何度も呼ばれるため、最初の描画が終了した時点で、作ったペンやブラシは
無効になるため、色がつかなくなる。DeleteObjectするならWM_DESTROY内で。
ちなみにCreateしたものはちゃんと削除するのがお約束。
SelectObjectしたものに関しても、元に戻しておくのが一応の作法。
holdobj = SelectObject(hdc, hobj);// 以前のオブジェクトハンドルを保存
// 何か処理
holdobj = SelectObject(hdc, holdobj);// 以前のオブジェクトに戻す
何故か赤く塗りつぶされないというのは、ディスプレイDCに複数回描画を行っていて、それが
ちらつきとして現れるから。こういう場合はオフスクリーンに描画し、最後にディスプレイDCに
BitBltする。
193名前は開発中のものです。
04/06/28 10:30ID:Ten9Dr/x ちと訂正・・orz
×holdobj = SelectObject(hdc, holdobj);// 以前のオブジェクトに戻す
○SelectObject(hdc, holdobj);// 以前のオブジェクトに戻す
×holdobj = SelectObject(hdc, holdobj);// 以前のオブジェクトに戻す
○SelectObject(hdc, holdobj);// 以前のオブジェクトに戻す
195生徒A
04/06/28 16:36ID:D8BhR1kS >>194 190じゃないですが、もともとは2進数という意味だと思います。
だから、この場合は、1と0の組み合わせで作られた機械語データ
(実行ファイル)の意味だと思います。
他にも、テキストデータ以外のファイル全てを指す事もあります。
だから、この場合は、1と0の組み合わせで作られた機械語データ
(実行ファイル)の意味だと思います。
他にも、テキストデータ以外のファイル全てを指す事もあります。
196生徒A
04/06/28 16:40ID:D8BhR1kS197名前は開発中のものです。
04/06/28 17:06ID:cdlT0cfW CreateCompatibleBitmap
198副担任
04/06/28 17:37ID:HdfIcXTc199Ruby@課題6当たり判定
04/06/28 18:32ID: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
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
200Ruby@課題6当たり判定
04/06/28 18:33ID: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添付ドキュメントは旧式の書き方になっているようです
サンプルは新しいものだったのでそちらを参考にしました
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添付ドキュメントは旧式の書き方になっているようです
サンプルは新しいものだったのでそちらを参考にしました
202生徒BLUE
04/06/28 21:18ID:mIyMN4GH2034 ◆3VUXqvbfSY
04/06/28 21:39ID:kLFrYp0l 参考程度に…
オフスクリーン:
変数宣言 前略
hdcOFF=CreateCompatibleDC(hdcON);//空の描画ハンドルを作る
CopyBitmap=CreateCompatibleBitmap(hdcON,640,480);//表のウィンドウと互換のビットマップをつくる。
SelectObject(hdcOFF,CopyBitmap);//んで、設定
中略
BitBlt(hdcON,0,0,640,480,hdcOFF,0,0,SRCCOPY);//裏に書かれた内容を、表に上書きする。
後略
こんな感じ。…VC++だけでごめんなさい…
オフスクリーン:
変数宣言 前略
hdcOFF=CreateCompatibleDC(hdcON);//空の描画ハンドルを作る
CopyBitmap=CreateCompatibleBitmap(hdcON,640,480);//表のウィンドウと互換のビットマップをつくる。
SelectObject(hdcOFF,CopyBitmap);//んで、設定
中略
BitBlt(hdcON,0,0,640,480,hdcOFF,0,0,SRCCOPY);//裏に書かれた内容を、表に上書きする。
後略
こんな感じ。…VC++だけでごめんなさい…
204LGP@課題1数当て
04/06/28 23:47ID: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
複数言語同時習得を目指してみます
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
205名前は開発中のものです。
04/06/29 06:26ID:Ngmzz0xf 課題6
実行方法:@メモ帳にコピペ、A名前をつけて保存でinvader.html、Bブラウザに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>
実行方法:@メモ帳にコピペ、A名前をつけて保存でinvader.html、Bブラウザに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>
206LGP@課題2素数
04/06/29 09:54ID: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 )
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名前は開発中のものです。
04/06/29 13:12ID:WW/6W0k2 dpかwinsockでチャット作りたひ。
208名前は開発中のものです。
04/06/29 18:46ID:vpUdLCjy >>207
自分で作ったチャットソフトで皆と繋げられたら楽しそうな予感!
自分で作ったチャットソフトで皆と繋げられたら楽しそうな予感!
209名前は開発中のものです。
04/06/29 21:15ID: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/
抜けてる人がいたらごめんなさい
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/
04/06/29 21:28ID:gNXtRGm+
211名前は開発中のものです。
04/06/29 22:14ID: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 測定不能
混同してました
2人も先行者がいたのかorz
修正しました
HSPのほうはもうやらないの?
JavaScript ****** 6
Ruby.. ****** 6
生徒A(Win32API). ***** 5
生徒BLUE (Win32API). ***** 5
Delphi ***** 5
D言語 ** 2
LGP ** 2
x≠先生かつx=生徒 ⇒ x=俺(Win32API) 測定不能
VB 測定不能
212LGP@課題3赤い四角
04/06/29 22:53ID: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
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生徒BLUE
04/06/30 00:29ID:HYWm3For >>181
>「ANDでマスクとる」とかはわかる?
はい、この場合は2進数に直して一番左のビット以外を全部0にするってことですよね
MSDN読んだりあれからさらに調べてみたので前よりはちょっとわかったのですが
左端のビットが1ならボタンが押されているという程度の理解でいいのでしょうか
・定数書いちゃダメ
defineを積極的に使ってみました
C++の場合だとdefineは使わずにconstを使ったほうがいいと書いてあるホームページも
みつけましたがどうなんでしょう?
・拡張子がcppなのにC言語風
意識せずに全部cppにする習慣がついてたので……
クラスを使う→cpp、使わない→cでいいですか?
拡張子の使い分けむずかしい
・バックバッファあたりは毎回生成&破棄しなくても最初に一度だけ
GetDCを使えばいいんだ!と前回は気づいてませんでした
WEBの情報をあちこちからつまみ食いしてるので全体的にチグハグな感じに
なっていたようで指摘してもらって勉強になります
ソースみていただける方は2ちゃんねるに貼り付けとアップローダのどちらが見やすいでしょうか?
それとも両方のほうがよい?
>「ANDでマスクとる」とかはわかる?
はい、この場合は2進数に直して一番左のビット以外を全部0にするってことですよね
MSDN読んだりあれからさらに調べてみたので前よりはちょっとわかったのですが
左端のビットが1ならボタンが押されているという程度の理解でいいのでしょうか
・定数書いちゃダメ
defineを積極的に使ってみました
C++の場合だとdefineは使わずにconstを使ったほうがいいと書いてあるホームページも
みつけましたがどうなんでしょう?
・拡張子がcppなのにC言語風
意識せずに全部cppにする習慣がついてたので……
クラスを使う→cpp、使わない→cでいいですか?
拡張子の使い分けむずかしい
・バックバッファあたりは毎回生成&破棄しなくても最初に一度だけ
GetDCを使えばいいんだ!と前回は気づいてませんでした
WEBの情報をあちこちからつまみ食いしてるので全体的にチグハグな感じに
なっていたようで指摘してもらって勉強になります
ソースみていただける方は2ちゃんねるに貼り付けとアップローダのどちらが見やすいでしょうか?
それとも両方のほうがよい?
214名前は開発中のものです。
04/06/30 11:43ID:0T8fXV58 そろそろ本気で見にくくなってきたわけだが、
ちょっと言語が大杉やしないかい?
もうちょっと絞ろうよ
ちょっと言語が大杉やしないかい?
もうちょっと絞ろうよ
215通りすがり人
04/06/30 12:46ID: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 );
}
}
}
スペースをバシッと叩くとわかるんだけど、初回だけ最下位ビットが変化してる。
つまり、リピート状態なのかを判断できるわけ。
> 左端のビットが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生徒BLUE
04/06/30 17:09ID:HYWm3For >>215
早速、コンパイルして試してみました
最下位ビットに注目してみると
1000000000100100100100100100......
といったように変化します
初回だけということなので10000000......というものを期待していたのですがうまくいかないです
早速、コンパイルして試してみました
最下位ビットに注目してみると
1000000000100100100100100100......
といったように変化します
初回だけということなので10000000......というものを期待していたのですがうまくいかないです
217生徒BLUE
04/06/30 17:38ID:HYWm3For 課題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);
}
http://gamdev.org/up/img/775.zip
赤い四角のサイズを元に当たり判定をしました
//****** 変更箇所 ******
//乱数の初期化
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);
}
http://gamdev.org/up/img/775.zip
218名前は開発中のものです。
04/06/30 18:49ID:3iu2d+4i >>216
ん?スペースキーを押すと、こんな風に表示されませんか?
ffff8001
ffff8000
ffff8000
ffff8000
ffff8000
ffff8000
ffff8000
ffff8000
ffff8000
ffff8000
ffff8000
ん?スペースキーを押すと、こんな風に表示されませんか?
ffff8001
ffff8000
ffff8000
ffff8000
ffff8000
ffff8000
ffff8000
ffff8000
ffff8000
ffff8000
ffff8000
219生徒BLUE
04/06/30 19:04ID:HYWm3For220名前は開発中のものです。
04/06/30 19:39ID:3iu2d+4i221名前は開発中のものです。
04/06/30 19:52ID:/EAv0A9z223名前は開発中のものです。
04/06/30 22:22ID:j1/sm794 320x240で一度作ったけど即死しすぎて32x32に縮小したよ
サイズ指定してないから何でもいいと思ったけどそのあたりどうなんですか?>先生
wikiのほうにまとめコーナー作っておいたので各自書きたいことがあったら適当にどうぞ
というか書いてくださいおながいします
名無しさんを消して自分の名前にして提出状況とかコンパイラは何を使ってるとかそんなのでいいので
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
サイズ指定してないから何でもいいと思ったけどそのあたりどうなんですか?>先生
wikiのほうにまとめコーナー作っておいたので各自書きたいことがあったら適当にどうぞ
というか書いてくださいおながいします
名無しさんを消して自分の名前にして提出状況とかコンパイラは何を使ってるとかそんなのでいいので
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
224LGP@課題4sin波形
04/07/01 00:05ID:TMNGfYFe //画面初期化、最後を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
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
2254 ◆3VUXqvbfSY
04/07/01 08:34ID:KOe6GSoY226生徒A
04/07/01 14:26ID:MCi74o/R 数日間ソースとにらめっこしてるのですが、バックバッファーの処理が上手くいかないです…
227名前は開発中のものです。
04/07/01 15:45ID:bdPAbTo6228LGP@課題5キー入力
04/07/01 22:17ID:TMNGfYFe 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
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
229LGP@課題6当たり判定
04/07/02 03:30ID:4ZvlEEie 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
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
230LGP@課題6当たり判定
04/07/02 03:30ID:4ZvlEEie 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
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:00ID:UWWF49AF 保守age
04/07/04 11:07ID:3DUC6+Xf
課題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
http://gamdev.org/up/img/801.zip
課題2はヨクワカラナイです。ヒントくれませんか?
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
http://gamdev.org/up/img/801.zip
課題2はヨクワカラナイです。ヒントくれませんか?
233名前は開発中のものです。
04/07/04 11:13ID:dw9vgL9Y234名前は開発中のものです。
04/07/04 11:14ID:dw9vgL9Y 自分未満の整数の間違い
以下だったら自分も含むからね
以下だったら自分も含むからね
235名前は開発中のものです。
04/07/04 12:05ID:WDudAYFD 自分の1/2で十分じゃね?
236名前は開発中のものです。
04/07/04 12:35ID:yqwpjhZT (√自分)でよくない?
237名前は開発中のものです。
04/07/04 12:38ID:WDudAYFD 平方根求めるより楽だし
238名前は開発中のものです。
04/07/04 12:55ID:9GihiSR8 >>236-237
なんで平方根まででいいんだっけ?
なんで平方根まででいいんだっけ?
239名前は開発中のものです。
04/07/04 13:00ID:WDudAYFD それ以上のは今までに計算した分と対応してるだけ
04/07/04 19:58ID:3DUC6+Xf
えと、素数はどういうものかはわかるんですが、プログラムというかHSPでの算出方法が…
04/07/04 20:45ID:WDudAYFD
; 素数判定 with HSP 少しだけ高速版
sdim log, 7000: notesel log
title "素数判定 - Calculating..."
mesbox log, 640, 480
log = "2": n = 1
repeat 999
repeat
n += 2: f = 1
repeat n>>1-1,3
if n \ cnt = 0: f = 0: break
continue cnt+2
loop
if f: break
loop
noteadd ""+n
await
loop
objprm 0, log
title "素数判定"
stop
sdim log, 7000: notesel log
title "素数判定 - Calculating..."
mesbox log, 640, 480
log = "2": n = 1
repeat 999
repeat
n += 2: f = 1
repeat n>>1-1,3
if n \ cnt = 0: f = 0: break
continue cnt+2
loop
if f: break
loop
noteadd ""+n
await
loop
objprm 0, log
title "素数判定"
stop
04/07/04 20:47ID:WDudAYFD
あ、インデントかけるの忘れとった。。。
; 素数判定 with HSP 単純版
sdim log, 7000: notesel log
title "素数判定 - Calculating..."
mesbox log, 640, 480
repeat ,2
n = cnt
repeat cnt-2, 2
if n \ cnt = 0: n = 0: break
loop
if n{
noteadd ""+cnt
i++
if i >= 1000: break
await
}
loop
objprm 0, log
title "素数判定"
stop
; 素数判定 with HSP 単純版
sdim log, 7000: notesel log
title "素数判定 - Calculating..."
mesbox log, 640, 480
repeat ,2
n = cnt
repeat cnt-2, 2
if n \ cnt = 0: n = 0: break
loop
if n{
noteadd ""+cnt
i++
if i >= 1000: break
await
}
loop
objprm 0, log
title "素数判定"
stop
243Ruby@素数高速化
04/07/05 00:33ID:K58VA1M5 以前のバージョン
43.702999830246秒
ループ 31343403回
新しいバージョン(奇数のみ評価、平方根までチェック)
0.921999931335449秒(約47倍)
ループ 225062回(約139倍)
思ったより高速化されてビクーリ
print "2\n"
count=1
loopCount=0
i=3
old=Time.now.to_f;
while count<1000 do
sosu=true
for j in 3..Math.sqrt(i) do
loopCount=loopCount+1
if ( (i % j) == 0)
sosu=false
end
end
if (sosu)
print "#{i}\n"
count=count+1
end
i=i+2
end
print " #{Time.now.to_f - old}秒かかりました\n"
print " #{loopCount}回ループしました\n"
print "素数を#{count}個みつけました\n"
43.702999830246秒
ループ 31343403回
新しいバージョン(奇数のみ評価、平方根までチェック)
0.921999931335449秒(約47倍)
ループ 225062回(約139倍)
思ったより高速化されてビクーリ
print "2\n"
count=1
loopCount=0
i=3
old=Time.now.to_f;
while count<1000 do
sosu=true
for j in 3..Math.sqrt(i) do
loopCount=loopCount+1
if ( (i % j) == 0)
sosu=false
end
end
if (sosu)
print "#{i}\n"
count=count+1
end
i=i+2
end
print " #{Time.now.to_f - old}秒かかりました\n"
print " #{loopCount}回ループしました\n"
print "素数を#{count}個みつけました\n"
244名前は開発中のものです。
04/07/05 01:37ID:o/9mlWPU >>241を改良してみた。
; 素数判定 with HSP 何気に高速版
title "素数判定 - Calculating..."
#const MAX_COUNT 1000
ll_libload dll,"kernel32.dll" :ll_getproc func,"GetTickCount", dll
ll_libfree dll :ll_retset refunc
sdim log, 7 * MAX_COUNT :notesel log
dim result, MAX_COUNT
mesbox log, 640, 480
noteadd "2",0,1 :result.0 = 2 :count = 3 :i = 1
;測定
ll_callfunc temp,0,func
start = refunc
repeat
flg = 1;
repeat i
if count \ result.cnt = 0 : flg = 0 :break
loop
if flg {
noteadd ""+count, -1 :result.i = count
i++ :if i >= MAX_COUNT: break
await
}
count += 2
loop
ll_callfunc temp,0,func
refunc -= start :dialog "" + refunc + "ms"
objprm 0, log :title "素数判定"
stop
; 素数判定 with HSP 何気に高速版
title "素数判定 - Calculating..."
#const MAX_COUNT 1000
ll_libload dll,"kernel32.dll" :ll_getproc func,"GetTickCount", dll
ll_libfree dll :ll_retset refunc
sdim log, 7 * MAX_COUNT :notesel log
dim result, MAX_COUNT
mesbox log, 640, 480
noteadd "2",0,1 :result.0 = 2 :count = 3 :i = 1
;測定
ll_callfunc temp,0,func
start = refunc
repeat
flg = 1;
repeat i
if count \ result.cnt = 0 : flg = 0 :break
loop
if flg {
noteadd ""+count, -1 :result.i = count
i++ :if i >= MAX_COUNT: break
await
}
count += 2
loop
ll_callfunc temp,0,func
refunc -= start :dialog "" + refunc + "ms"
objprm 0, log :title "素数判定"
stop
245名前は開発中のものです。
04/07/05 07:17ID:LZQQVRIy Delphiで素数
http://gamdev.org/up/img/805.zip
http://gamdev.org/up/img/805.zip
246名前は開発中のものです。
04/07/05 13:04ID:LZQQVRIy 最速の素数判定アルゴリズム
http://pc.2ch.net/tech/kako/993/993457354.html
http://pc.2ch.net/tech/kako/993/993457354.html
247名前は開発中のものです。
04/07/05 20:13ID:axn64mRQ すごいスレの流れと違うような気がしますが、
Cで、ウインドウ表示とか(課題3)、できないんですが・・・どうしたらいいんでしょうか?
Cで、ウインドウ表示とか(課題3)、できないんですが・・・どうしたらいいんでしょうか?
248名前は開発中のものです。
04/07/05 20:40ID:q8IB8pY7 できないだけ書かれてもどうしようもない。
249名前は開発中のものです。
04/07/05 20:57ID:0DOOfkU1250名前は開発中のものです。
04/07/05 22:48ID:LZQQVRIy04/07/05 22:51ID:ZZjGGIiZ
sdim m,4000 : notesel m
mesbox m,640,480
noteadd "2" m : noteadd "3" m : noteadd "5" m : noteadd "7" m
n=7
c=4
*judge
n+=2
if n\3=0 : goto *judge
if n\5=0 : goto *judge
if n\7=0 : goto *judge
noteadd "n" m : c+
if c=1000 : goto *s
goto *judge
*s
stop
素数はこれで出るカナと思ったんですが、エラー発生。原因を突き止められませんTT
mesbox m,640,480
noteadd "2" m : noteadd "3" m : noteadd "5" m : noteadd "7" m
n=7
c=4
*judge
n+=2
if n\3=0 : goto *judge
if n\5=0 : goto *judge
if n\7=0 : goto *judge
noteadd "n" m : c+
if c=1000 : goto *s
goto *judge
*s
stop
素数はこれで出るカナと思ったんですが、エラー発生。原因を突き止められませんTT
04/07/05 23:00ID:pTJ3lo22
エラーを読も・・・・・Σ(;゚Д゚)HSPがエラー吐いてない!
noteadd "*" m
~|~
要らない。ここでエラーが出てる。
noteadd "n"
~|~
エラーの原因ではないが、""+nの誤り。
あと、objprm 0, mをstopの前に入れて出力させてあげよう。
noteadd "*" m
~|~
要らない。ここでエラーが出てる。
noteadd "n"
~|~
エラーの原因ではないが、""+nの誤り。
あと、objprm 0, mをstopの前に入れて出力させてあげよう。
04/07/05 23:07ID:ZZjGGIiZ
>>252
thx
でも、4363で終わりますがあってるんでしょうか?
sdim m,4000 : notesel m
mesbox m,640,480
noteadd "2" : noteadd "3" : noteadd "5" : noteadd "7"
n=7
c=4
*judge
n+=2
if n\3=0 : goto *judge
if n\5=0 : goto *judge
if n\7=0 : goto *judge
noteadd ""+n : c+
if c=1000 : goto *s
goto *judge
*s
objprm 0, m
stop
thx
でも、4363で終わりますがあってるんでしょうか?
sdim m,4000 : notesel m
mesbox m,640,480
noteadd "2" : noteadd "3" : noteadd "5" : noteadd "7"
n=7
c=4
*judge
n+=2
if n\3=0 : goto *judge
if n\5=0 : goto *judge
if n\7=0 : goto *judge
noteadd ""+n : c+
if c=1000 : goto *s
goto *judge
*s
objprm 0, m
stop
04/07/05 23:24ID:pTJ3lo22
たしか7919のはずだけど・・・
暇だしPerlとJava版の素数判定作ってみようかな。。。
暇だしPerlとJava版の素数判定作ってみようかな。。。
255名前は開発中のものです。
04/07/05 23:25ID:MIzlaErt256名前は開発中のものです。
04/07/06 00:11ID:hNVuoewj >>247
それは簡単だって!どっかのサイトに張ってあるやつをそのままコピペで完成だぁよぉ!
それは簡単だって!どっかのサイトに張ってあるやつをそのままコピペで完成だぁよぉ!
257名前は開発中のものです。
04/07/06 01:48ID:IHRV3HSb 素数スレになってるのだが・・・
258名前は開発中のものです。
04/07/06 02:29ID:pkSoPn0/ Delphi エラトステネスの篩
http://gamdev.org/up/img/810.zip
http://gamdev.org/up/img/810.zip
04/07/06 07:38ID:BOq5Vq10
#!D:\perl\bin\perl.exe
print "Content-type: text/plain\n\n";
print "Start\n";
print "2\n";
$table[0] = 2;
$i = 1;
for(2..1000){
for($i += 2; ; $i += 2){
if(&IsPrime($i)){ last; }
}
}
print "Finish";
exit(1);
sub IsPrime{
(my $src) = @_;
for($j = 0; $table[$j] <= sqrt($src); $j++){
if($src % $table[$j] == 0){ return 0; }
}
print $src."\n";
push(@table, $src);
return 1;
}
# Perl版。printを取ってみると分かるけどPerlはインタープリタなのに
# 結構処理速いね。。。
print "Content-type: text/plain\n\n";
print "Start\n";
print "2\n";
$table[0] = 2;
$i = 1;
for(2..1000){
for($i += 2; ; $i += 2){
if(&IsPrime($i)){ last; }
}
}
print "Finish";
exit(1);
sub IsPrime{
(my $src) = @_;
for($j = 0; $table[$j] <= sqrt($src); $j++){
if($src % $table[$j] == 0){ return 0; }
}
print $src."\n";
push(@table, $src);
return 1;
}
# Perl版。printを取ってみると分かるけどPerlはインタープリタなのに
# 結構処理速いね。。。
260名前は開発中のものです。
04/07/06 12:03ID:IHRV3HSb261名前は開発中のものです。
04/07/06 16:54ID:pkSoPn0/ C#で素数
static void Main(string[] args)
{
int sosuCount=0;
for (int i = 2; sosuCount<1000; i++)
{
Boolean nososu;
nososu = false;
for (int j = 2; j < i ; j++)
{
if ((i % j) == 0)
{
nososu = true;
break;
}
}
if (!nososu)
{
Console.WriteLine(i);
sosuCount++;
}
}
Console.WriteLine(sosuCount + "個の素数を発見しました");
}
static void Main(string[] args)
{
int sosuCount=0;
for (int i = 2; sosuCount<1000; i++)
{
Boolean nososu;
nososu = false;
for (int j = 2; j < i ; j++)
{
if ((i % j) == 0)
{
nososu = true;
break;
}
}
if (!nososu)
{
Console.WriteLine(i);
sosuCount++;
}
}
Console.WriteLine(sosuCount + "個の素数を発見しました");
}
04/07/06 17:32ID:BOq5Vq10
public class Prime {
public final static int PRIME_MAX = 1000;
static int PrimeTable[] = new int [PRIME_MAX];
static int TableLast = 1;
public static void main(String[] args) {
int l = 1;
PrimeTable[0] = 2;
System.out.println(2);
for(; TableLast < PRIME_MAX; TableLast++)
for(l += 2; ; l += 2)
if(IsPrime(l)) break;
System.out.println("Finish");
}
public static boolean IsPrime(int src) {
for(int i = 0; PrimeTable[i] <= Math.sqrt(src) && i < TableLast; i++)
if(src % PrimeTable[i] == 0) return false;
PrimeTable[TableLast] = src;
System.out.println(src);
return true;
}
}
// Java版。
// あと手を付けてない言語は何だっけ。
// ・・・ひまわりでもやってみるか。
public final static int PRIME_MAX = 1000;
static int PrimeTable[] = new int [PRIME_MAX];
static int TableLast = 1;
public static void main(String[] args) {
int l = 1;
PrimeTable[0] = 2;
System.out.println(2);
for(; TableLast < PRIME_MAX; TableLast++)
for(l += 2; ; l += 2)
if(IsPrime(l)) break;
System.out.println("Finish");
}
public static boolean IsPrime(int src) {
for(int i = 0; PrimeTable[i] <= Math.sqrt(src) && i < TableLast; i++)
if(src % PrimeTable[i] == 0) return false;
PrimeTable[TableLast] = src;
System.out.println(src);
return true;
}
}
// Java版。
// あと手を付けてない言語は何だっけ。
// ・・・ひまわりでもやってみるか。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 反撃の中居正広、一世一代の大勝負へ 元フジ女性アナとは「合意の上での性行為だった」と認識 ★17 [Ailuropoda melanoleuca★]
- 【埼玉】「大丈夫、と言ったのでその場から離れた」 男児4人重軽傷のひき逃げ事件で車を運転していた42歳の中国籍の男逮捕 三郷市 [ぐれ★]
- 【野球】セ・リーグ G 4-7 D [5/18] 中日3年ぶり4本塁打!山本2発、板山2ラン、ボスラー2ラン、松葉6回4失点 巨人3連勝ならず [鉄チーズ烏★]
- 機動戦士ガンダム最新作『GQuuuuuuX(ジークアクス)』乃木坂46ネタで炎上 監督の鶴巻和哉氏は乃木坂ファン ★5 [Anonymous★]
- 突出して低い日本女性の賃金 経済の停滞や少子化にも影響 ★2 [ぐれ★]
- 【日産】従業員「ショック」 諦めも… 神奈川の“日産城下町” 活気失い [煮卵★]
- ナザレンコさん、弱小アカウントのアンチコメにも丁寧に返信 [834922174]
- 自民・森山幹事長「消費税減税を否定する。ポピュリズムの政治をしてしまっては、国は持たない。つけは全て国民に返っていく」 [256556981]
- 【画像】百田尚樹の演説に1200人以上のウヨが集結wwwwwwwwwwwwwww [834922174]
- 永野芽郁、芸能界追放 [918862327]
- 消費税減税「食品だけ」33%、「一律」25%、「廃止」14%、「反対」16% [256556981]
- 週末最後のお🏡