1 名前:名前は開発中のものです。 [04/06/10 18:05 ID:VshiFFV8] ゲームに必要な要素を先生が出してくれます その課題をクリアしていく講習会です
33 名前:4 [04/06/13 20:35 ID:QH1r5fl5] 何でもOKですよ。 どの環境でも大差ないですから。
34 名前:名前は開発中のものです。 mailto:sage [04/06/13 21:08 ID:UiqEecMu] うんこスレ発見
35 名前:生徒A mailto:sage [04/06/14 12:48 ID:Ki7OHh6M] >>31 これでどうですか?一応C言語です #include<stdio.h> #include<stdlib.h> #include<time.h> int main(void){ int num,endflag=0; srand((unsigned)time( NULL )); while(endflag==0){ printf("数値を入力してください。\n");scanf("%d",&num); if(num == rand()%10){printf("正解です。\n");endflag=1;} else if(num>rand()%10){printf("もっと小さいです\n");} else{printf("もっと大きいです\n");} } return 0; }
36 名前:4 ◆3VUXqvbfSY [04/06/14 15:21 ID:6UsS7uqF] 多分OKです。 今携帯から何で、確認できませんがw ただし。randomに同様な確からしさを求めるならば、rand()*10/RAND_MAXの方が良いでしょう。 rand()%10だと…帰ってきた値とrandが返す最大値の関係が無視される事となり、従って、返す値が同様に確からしいかを確認できなくなります。
37 名前:名前は開発中のものです。 mailto:sage [04/06/14 16:42 ID:9xiGisv8] program Project1; {$APPTYPE CONSOLE} uses SysUtils; var I,N,F:Integer; begin Randomize; I := Random(9); Writeln('数字を入力してください'); while F = 0 do try Readln(N); if N = I then begin Writeln('正解です。Enterを押せば終了します。'); Readln; F := 1; end else if N > I then Writeln('もっと小さいです') else if N < I then Writeln('もっと大きいです'); Except Writeln('数字を入力してください'); end; end. こんなんでどうでしょう
38 名前:名前は開発中のものです。 mailto:sage [04/06/14 16:44 ID:9xiGisv8] uses SysUtils; ここは不要でした
39 名前:4 ◆3VUXqvbfSY [04/06/14 16:57 ID:6UsS7uqF] やば… >>35 二回ランダム使ってるよ…、ていうか、当てようがねぇ… 何か変数用意して、一回代入したら、もうランダム使っちゃダメだよ。毎回違う値がでるw >>38 出来てますよ…うん。
40 名前:名前は開発中のものです。 mailto:sage [04/06/14 18:35 ID:wh7EkBpp] 君たち勉強不足だよ
41 名前:名前は開発中のものです。 mailto:sage [04/06/14 19:01 ID:EUCVAi2R] ネット上の解説サイトより勉強するには本のほうがわかりやすいでしょうか?
42 名前:名前は開発中のものです。 mailto:sage [04/06/14 19:10 ID:FPxTvBCd] >>41 図書館とかに良書が無いか? 正直、2Dならともかく3Dを作りたいなら本は必須だろ。
43 名前:名前は開発中のものです。 mailto:sage [04/06/14 21:10 ID:yg+Hb9+4] <body><input id=t type=text><input id=b type=button value=決 onClick=ans()><script> var a = (Math.random() * 9 | 0)+1; function ans(){o = document.getElementById('t').value;if(o==a){window.alert('正解');location.reload();} o>a?window.alert('大'):o<a?window.alert('小'):0;} </script></body>
44 名前:名前は開発中のものです。 mailto:sage [04/06/14 21:47 ID:D7BWejst] どんなソフトを使った方がいいんでしょうか?
45 名前:4 ◆3VUXqvbfSY [04/06/14 23:53 ID:6UsS7uqF] >>35 凄く気になったんで、追記します。 何故time.hをインクルードしてるんですか?
46 名前:名前は開発中のものです。 mailto:sage [04/06/15 00:16 ID:1cIbBCDp] >>45 randのシードに時間入れてるからじゃん srand((unsigned)time( NULL )); ←この文で。
47 名前:4 [04/06/15 00:39 ID:OmG1F0sQ] ごめん。俺がアホだった。 許して… (^〜^)oO(酒は飲めども飲まれるな…酔って書くんじゃ無かった…)
48 名前:名前は開発中のものです。 mailto:sage [04/06/15 02:39 ID:ZV1P5DyI] 君たちレベル低いですよ
49 名前:生徒A [04/06/15 03:34 ID:9w200AiB] >>48 確かにレベルが低い事は認めます。だって、 未だにポインタ&構造体が良く理解できないんで まあ、それは良いとして、4さんありがとうございます。 35から改良したソースを書いときます。 #include<stdio.h> #include<stdlib.h> #include<time.h> int main(void){ int num,endflag=0,ans; srand((unsigned)time( NULL )); ans=rand()*10/RAND_MAX; while(endflag==0){ printf("数値を入力してください。\n");scanf("%d",&num); if(num == ans){printf("正解です。\n");endflag=1;} else if(num>ans){printf("もっと小さいです\n");} else{printf("もっと大きいです\n");} } return 0; }
50 名前:名前は開発中のものです。 mailto:sage [04/06/15 11:35 ID:fWp+ET9z] >>49 そういうことじゃない。 お前が今日やったことを書き並べていくだけの自己満足スレが邪魔だと言ってるだけ。 レベルが低くて見たところで誰も得しないし、 挙句に態度も無茶苦茶悪い。 あんた何様のつもりだ。
51 名前:名前は開発中のものです。 mailto:sage [04/06/15 13:15 ID:2D7N5vK5] 50はこのスレに来なくていいよ
52 名前:名前は開発中のものです。 mailto:sage [04/06/15 15:08 ID:VVOVJCXy] まぁ、実は云うとこのスレは重複スレであって 【目標ない奴】おまいらに課題を与える。【集まれ】 pc5.2ch.net/test/read.cgi/gamedev/1026148930/l50 無難に考えれば、上記スレに誘導ということになるわけだが >>50 のような排他厨房が出現して余計な真似をしやがるので ここはしばらく様子を見守るとするか。
53 名前:名前は開発中のものです。 mailto:sage [04/06/15 15:12 ID:VVOVJCXy] ただ望むべくは このスレの利用者がローカルルールに則って自発的に pc5.2ch.net/test/read.cgi/gamedev/1026148930/l50 に移動するような流れを作り出すことである。君等の善意に期待しよう。
54 名前:名前は開発中のものです。 mailto:sage [04/06/15 15:26 ID:fJJvgQKc] 旧課題スレはリレーで作品を作るスレ このスレは先生がお題を出して採点するスレ そこは間違えるなよ
55 名前:名前は開発中のものです。 mailto:sage [04/06/15 15:32 ID:VVOVJCXy] あーそうなの。微妙なんだね。
56 名前:名前は開発中のものです。 mailto:sage [04/06/15 15:34 ID:VVOVJCXy] ちなみに、俺は旧スレでソースを出していた者だが 別にリレーするスレではなかったので、その意味での 拘束条件はないと思っていい。
57 名前:名前は開発中のものです。 mailto:sage [04/06/15 15:53 ID:jTaFbPw8] >>52-53 >pc5.2ch.net/test/read.cgi/gamedev/1026148930/l50 おー、そんな良スレが既にあったんですね。 >>1 ではありませんが、よく見てなかったです。ゴメンなさい。 個人的にはスレ乱立は本意ではないですし、このスレでなければ 困るという理由も無いんで、移動に一票入れときます。 今、あちらのスレのログを読んでます。とても勉強になります。
58 名前:名前は開発中のものです。 mailto:sage [04/06/15 15:58 ID:VVOVJCXy] >>57 ガンガレー
59 名前:名前は開発中のものです。 mailto:sage [04/06/15 16:47 ID:fJJvgQKc] こういうスレが好みならいっぱいあるぞ もう1つぐらいあった気がする >>1 も行方不明だし移動しない理由もないな ズブの初心者がゲーム作れるまで勉強するスレ pc5.2ch.net/test/read.cgi/gamedev/1005132370/ ■自主製作ゲーム:開発状況報告スレVer0.3■ pc5.2ch.net/test/read.cgi/gamedev/1071809112/ 初心者専用スレ「シミュレーションゲーム」を作らない? pc5.2ch.net/test/read.cgi/gamedev/1079745509/ 初心者専用スレ「パックマン」風ゲーム作らない? pc5.2ch.net/test/read.cgi/gamedev/1014326802/ STGを最初からみんなで作るスレ pc5.2ch.net/test/read.cgi/gamedev/1014709311/ 【Delphi】 ゲームつくるぞ(゚Д゚)ゴルァ 【作れば?】 pc5.2ch.net/test/read.cgi/gamedev/1051110669/
60 名前:名前は開発中のものです。 mailto:sage [04/06/15 16:52 ID:fJJvgQKc] あまりレスがつかなかったスレは貼らなかったが実際はもっと乱立してる これ以上の乱立を防ぐためにもローカルルールで告知しておいたほうがいいんじゃないか?
61 名前:名前は開発中のものです。 mailto:sage [04/06/15 17:29 ID:dz0re3XK] >>59 thx
62 名前:61 mailto:sage [04/06/15 17:32 ID:dz0re3XK] 途中で送信しちゃった。えと、向こうのスレでガンバリまつ!
63 名前:名前は開発中のものです。 mailto:sage [04/06/15 17:36 ID:DDwACq7t] 参加します、HSPだけど・・・ suuzi=1 kazu=0 randomize rnd kazu,10 mes "数値を入力してください。" *main input suuzi button "よし!",*hantei stop *hantei cls if 9<suuzi: mes "1から9までですよ。"goto*main if 1>suuzi: mes "1から9までですよ。"goto*main if kazu>suuzi:mes"もっと大きいよ。"goto*main if kazu<suuzi:mes"もっと小さいよ。"goto*main if kazu=suuzi:mes"あったりー!"
64 名前:4 ◆3VUXqvbfSY [04/06/15 20:16 ID:OmG1F0sQ] >>63 はい、正解です。 さて…次の課題は、素数です。 ゲームとは直接関係有りませんが、プログラムをやるなら、必ず一度は作るらしい!そんな課題です。 どの方法(アルゴリズム)を使っても構いません。 また、速度を追求させもしません。 ただし、速くしたいなら、どんどん高速化してみると楽しいですよ。 とりあえず、小さい方から1000個の素数を見つけるプログラムを作成してください。
65 名前:63 ◆xdaKt6k1XI mailto:sage [04/06/15 20:22 ID:DDwACq7t] >>64 とりあえず素数について調べてきます。
66 名前:63 ◆xdaKt6k1XI mailto:sage [04/06/15 23:24 ID:DDwACq7t] kuri=2 wara=2;割られる数 a=0 hyozi=0 *reset waru=2;割る数 kota=0;答え hante=0;判定 *sosu1000 if kuri-2<1 : goto*owari REPEAT kuri kota=wara/waru if kota!1 : hante+1,break waru+1 LOOP *owari if hante=0 : wara+1,kuri+1,goto*reset hyozi+1 mes ""+wara+"" if hyozi=1000 : stop wara+1 goto*reset ここまで作ってたらなんだか自分で何作ってんのかわからなくなりますた。 作り直します。
67 名前:生徒A mailto:sage [04/06/15 23:36 ID:9w200AiB] >50 僕の発言と態度がそんなに誤解を与えたなら謝りたいと思います。 すいませんでした。 素数ですか…、そういえば「エラトステネスのふるい」のアルゴリズム が有名ですよね 高校の時の先生におおまかな考え方だけ教えてもらったきりですが
68 名前:生徒A mailto:sage [04/06/16 00:25 ID:aSS5sxrF] とりあえず、エラトステネスのふるいを使わないで考えたプログラムです /*1より大きい整数のうち,1と自分自身以外の整数では 割り切れないような整数を素数というらしい*/ #include<stdio.h> int main(void) { /*小さい方から1000個の素数を見つけるプログラム*/ int count=0,chknum; int i,j; /*素数かどうかを判断するには、2からその数値のすぐ下まで全て割り切れないかどうかを判断する*/ for(j=0;count<1000;j++){ chknum=j; for(i=2;i<=chknum;i++){ if(i==chknum){/* この条件が当てはまれば素数になる */ count++;/*カウンタをインクリメント*/ printf(" %d(%d個目発見!)",chknum,count); } else if(chknum%i == 0){ /* i!=chknum の状態で 割り切れるなら */ /*この条件が成り立つ時は、素数じゃないので*/ break;/*内側のループのみ脱出する*/ } } } return (0); }
69 名前:名前は開発中のものです。 mailto:sage [04/06/16 01:31 ID:E0t6wJPT] >>68 動作上は問題ないけど、ヘンなクセがあって読みにくいね。 先生のお手本キボンヌ。
70 名前:名前は開発中のものです。 mailto:sage [04/06/16 01:41 ID:qW9lKpJw] >>68 間違ってる希ガス。 1000までの数の中の素数を上げるんじゃないですよん。 変数chknumが必要かもう一度考え直してみなはれ。(こっちのが見やすいかもしんないけど)
71 名前:4 ◆3VUXqvbfSY [04/06/16 08:42 ID:XOSz7qTz] 模範解答は用意しましたよ。 でも、発表は答えが出そろってからにします。
72 名前:名前は開発中のものです。 mailto:sage [04/06/16 09:07 ID:E0t6wJPT] >>70 最初、オレもそう思ったけど、 問題には、小さい方から1000個って書いてある悪感。 for(j=0;count<1000;j++){ これが紛らわしい。
73 名前:名前は開発中のものです。 [04/06/16 14:41 ID:Zcc4AjKX] ∩ | | | | ∧_∧ | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ´Д`)// < 先生!今から参加していいですか? / / \_______________ / /| / __| | .| | __ \  ̄ ̄ ̄ ̄ ̄ \ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄ || || ̄ ̄ ̄ ̄ ̄ ̄ ̄|| .|| || 数当てゲーム gamdev.org/up/img/706.zip
74 名前:生徒(C++) mailto:sage [04/06/16 15:06 ID:KVxQtTo1] 先生、標準講座C++という本を読み終わった程度ですが参加してみます。 でもアルゴリズムは全然知らないので、総当りです。 #include<iostream> #include<list> using namespace std; int main() {//総当りで素数を探す list<int> prime;//素数 int num=2;//走査する値 while(1) { for(list<int>::iterator itr=prime.begin();itr!=prime.end();itr++) if(num%(*itr)==0)break;//素数以外はループを抜ける if(itr==prime.end())prime.push_back(num);//素数は保存 if(prime.size()==1000)break;//1000個目で終了 num++;//値を1増やす } cout<<"1000個目の素数:"<<(*prime.rbegin())<<endl; return 0; }
75 名前:4 [04/06/16 15:59 ID:XOSz7qTz] 参加は嬉しい限りですよね >>1 さん でもむしろ…先生役やりたい人誰か居ない? 激しく募集中です…
76 名前:名前は開発中のものです。 mailto:sage [04/06/16 18:33 ID:Ls5cfn3b] <html><body><script> function s(n){ for (i=2;i<=n/2;i++)if(n%i==0)return false; return true; } o="2,3,";c=0; for(j=4;;j++){ if (s(j)){c++;o+=j+',';} if (c>999)break; } document.write(o); </script></body></html>
77 名前:63 ◆xdaKt6k1XI mailto:sage [04/06/16 20:42 ID:KZI0wz/S] 挫折しますた・・・orz
78 名前:名前は開発中のものです。 mailto:sage [04/06/16 22:21 ID:uyNGxE8j] >>77 ttp://www.ese.yamanashi.ac.jp/~morisawa/sc2001/Eratosthenes.html
79 名前:名前は開発中のものです。 mailto:sage [04/06/16 23:54 ID:E0t6wJPT] >>77 どこでどう挫折したのか書いてみましょうよ。
80 名前:名前は開発中のものです。 mailto:sage [04/06/17 00:05 ID:AAkEHKib] よし、俺も素数のと数当てやってみる
81 名前:名前は開発中のものです。 mailto:sage [04/06/17 00:44 ID:AAkEHKib] #include <stdio.h> #include <math.h> int IsPrime(int); int main() { int i, n = 1; printf(" 2 "); for(i = 0; i < 999; i++){ for(n+=2; IsPrime(n) == 0; n+=2); printf("%4d ", n); } return 0; } int IsPrime(int n) { int i; if(n % 2 == 0 && n != 2) return 0; for(i = 3; i <= sqrt(n); i += 2) if(n % i == 0) return 0; return 1; } 2を出すべきか出さざるべきか小一時間悩んだ…
82 名前:63 ◆xdaKt6k1XI mailto:sage [04/06/17 07:40 ID:wIlIrMhO] >>78 結構難しそうっすね。 >>79 2から自分自身のまで順番に割ってって計算結果が1以外だったら自分自身の数を1足してやりなおして、計算結果が1だけだったらその数を表示するってようにしたんですが。
83 名前:名前は開発中のものです。 mailto:sage [04/06/17 10:39 ID:qLkBm+a6] その考え方で問題ないか確認してみる。...のあとの数字は余り。 5/1 = 5 ... 0 5/2 = 2 ... 1 5/3 = 1 ... 2 5/4 = 1 ... 1 5/5 = 1 ... 0 6/1 = 6 ... 0 6/2 = 3 ... 0 6/3 = 2 ... 0 6/4 = 1 ... 2 6/5 = 1 ... 1 6/6 = 1 ... 0
84 名前:63 ◆xdaKt6k1XI mailto:sage [04/06/18 15:04 ID:uMGX0XjB] >>83 駄目でしたか・・・・もう一度がんばります!
85 名前:名前は開発中のものです。 mailto:sage [04/06/19 14:57 ID:W8craWnM] #include <stdio.h> void main() { unsigned long cun; int a,i; printf("2\n"); for(i=3;i<=1000;i+=2){ for(a=3;a<i;a+=2){ cun++; if(i%a==0) break; } if(i==a) printf("%d\n"); } } 暇なんで参加
86 名前:85 mailto:sage [04/06/19 14:58 ID:W8craWnM] unsigned long cun; とcun++; は無視で <(_ _)>
87 名前:名前は開発中のものです。 mailto:sage [04/06/19 17:01 ID:olZSV2kJ] >>85-86 Upするまえにテストしよ〜よ。 それから、問題文をちゃんと読むべし。
88 名前:生徒A mailto:sage [04/06/19 19:27 ID:GZf8LDr8] そういえば、新しい課題って無いの?
89 名前:名前は開発中のものです。 mailto:sage [04/06/19 20:08 ID:hqj9xu9C] 素数とかはロジックを考えるのは大切だけど、できてもあまり嬉しくないからなぁ。 かといって特定の分野に特化すると、それぞれの分野には初心者スレがあるし。 「適当なウィンドウを作成してsin波形を描画する」あたりはどう?
90 名前:4 ◆3VUXqvbfSY [04/06/19 21:47 ID:wn6hjF1m] 良いねその課題!…ってチョットレベル上がり杉な… …まあ良いか… でもまずは、640*480のウィンドウに (0,0)320*240の赤い四角を描いてください。
91 名前:4 ◆3VUXqvbfSY [04/06/19 22:17 ID:wn6hjF1m] 前課題解答例 #include <stdio.h> int Check_Prime(long n)//素数判定 { long loops; loops=1; while(loops*loops < n) { if(loops>2)loops+=2; else loops++; if(n%loops==0)return 1; } return 0; } void main(void) { long loops=2,m=1; printf("%ld %ld\n",m,loops); while(m<2000) { m++; printf("%ld %ld\n",m,loops); } if(loops>2)loops+=2; else loops++; }
92 名前:63 ◆xdaKt6k1XI mailto:sage [04/06/19 22:23 ID:D2QJG2Dd] 素数は無理でしたが・・・ >>90 の課題はできました。 WIDTH 640,480 COLOR 255 BOXF 320,240,1,0 stop
93 名前:63 ◆xdaKt6k1XI mailto:sage [04/06/19 22:24 ID:D2QJG2Dd] >>92 BOXF 320,240,1,0 は BOXF 320,240,0,0 です。
94 名前:4 [04/06/19 22:25 ID:wn6hjF1m] ミスった(汗。訂正 void main(void) { long loops=2,m=1; printf("%ld %ld\n",m,loops); while(loops<2000) { if(Check_Prime(loops)==0) { m++; printf("%ld %ld\n",m,loops); } if(loops>2)loops+=2; else loops++; } }
95 名前:生徒A mailto:sage [04/06/20 04:33 ID:9LoKJ5Oe] なんだか、構造体とかポインタとかWin32APIとかGDIとかメッセージループとか 難しすぎなんですけど… できたには、できました。 #include "windows.h" LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow ) { WNDCLASSEX wcex;HWND hWnd;MSG msg; // ウィンドウクラス構造体を設定 wcex.cbSize = sizeof(WNDCLASSEX);wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = (WNDPROC)WndProc;wcex.cbClsExtra = 0; wcex.cbWndExtra = 0;wcex.hInstance = hInstance;wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION); wcex.hCursor = LoadCursor(NULL, IDC_ARROW);wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); wcex.lpszMenuName = NULL;wcex.lpszClassName = "ModelApp"; wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION); // ウインドウクラスを登録 RegisterClassEx(&wcex); // ウインドウを作成 hWnd = CreateWindow(wcex.lpszClassName, "640×480のウィンドウ上の(0,0)へ320×240の赤い四角を描く", WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,640,480,NULL,NULL,hInstance,NULL); ShowWindow(hWnd, nCmdShow);UpdateWindow(hWnd); // メッセージループ while(GetMessage(&msg, NULL, 0, 0)) {TranslateMessage(&msg);DispatchMessage(&msg);}return msg.wParam; }
96 名前:生徒A mailto:sage [04/06/20 04:33 ID:9LoKJ5Oe] // ウインドウプロシージャ LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam) { HDC hDC;PAINTSTRUCT ps;static HPEN hPen;static HBRUSH hBr; RECT box;box.bottom =480;box.left =0;box.right =640;box.top =0; // メッセージの種類に応じて処理を分岐 switch (message){ case WM_CREATE:hPen=CreatePen(PS_SOLID,1,RGB(255,0,0));hBr=CreateSolidBrush(0x00000000); return 0; case WM_PAINT: hDC=BeginPaint(hWnd,&ps);SelectObject(hDC,hBr);FillRect(hDC,&box,hBr); SelectObject(hDC,hPen);Rectangle(hDC,0,0,320,240);EndPaint(hWnd,&ps);return 0; case WM_DESTROY:PostQuitMessage(0);return 0; default:return DefWindowProc(hWnd, message, wParam, lParam);} }
97 名前:生徒A mailto:sage [04/06/20 04:36 ID:9LoKJ5Oe] 正直、4行で実現できるHSPがうらやましいと思った…
98 名前:名前は開発中のものです。 [04/06/20 04:46 ID:l91pLvEB] ここはJavaでは参加できないですか?
99 名前:名前は開発中のものです。 mailto:sage [04/06/20 07:05 ID:w0wGxy3B] >>98 問題ないと思いますよ
100 名前:名前は開発中のものです。 mailto:sage [04/06/20 07:50 ID:NlSC2nfH] 赤い四角 <html><body><script> s='<body><div style="position:absolute;left:0px;top:0px;background-color:Red;width:320px;height:240;"></div></body>'; window.open('','','width=640,height=480').document.write(s); </script></body></html>
101 名前:名前は開発中のものです。 mailto:sage [04/06/20 07:51 ID:NlSC2nfH] SIN波 <html><body></div><script> var a=[]; for(i=0;i<10000;i++)a[i]=0; for(i=0;i<100;i++)a[(Math.sin(Math.PI/50*i)*50+50|0)*100+i]=1; var s='<body><font face="MS ゴシック" style="font-size:4px;">'; for(i=0;i<100;i++){for(j=0;j<100;j++)s+=a[i*100+j]?'■':' ';s+='<br>';} s+='</font></body>'; window.open('','','width=640,height=480').document.write(s); </script></body></html>
102 名前:名前は開発中のものです。 mailto:sage [04/06/20 11:15 ID:B7NIG/G/] 画面を黒でクリアする方法ってこれでいいんですか? void Clear(void) { SelectObject(hDC , GetStockObject(BLACK_BRUSH)); Rectangle(hDC , 0 , 0 , WIDTH , HEIGHT); }
103 名前:名前は開発中のものです。 mailto:sage [04/06/21 12:47 ID:X4sdLydq] >>102 イイともワルいともいえないというか、 ウィンドウを更新するとか必要だけど、まぁ、そんな感じ。 つーか、先生はどこだ?!
104 名前:4 ◆3VUXqvbfSY [04/06/21 13:24 ID:xh+2kWgx] ココw …まあ、VCの人が出来てんだから、sinの課題も可能か… sinの方の制作もどうぞ。 さて…みなさんに質問です。 これから、ゲーム制作を開始してみます。 次の課題は、インベーダーとテトリス どちらがいいですか? いや…どっちが基本的ですかね? とりあえず、プログラムの特徴は インベーダー:かなり基本的なシューティング。当たり判定とキー判定がネック。また、あの敵の大群を纏めて動かすのも結構めんどい。高速化も要るかも。 テトリス:かなり基本的なパズル。回転の処理、消しの判定、落ち判定がネック。とは言え、これ自体はさして大変ではない。インベーダーより楽に見えるが、向こうより単純な分、テスト回数が少なく、飽きるかもw まあ、どちらも一気にはつくりませんw 方向性が決まったら、ボトムアップに作りましょうw
105 名前:名前は開発中のものです。 mailto:sage [04/06/21 13:30 ID:Z9w22r4l] >>102 DCはグローバルで持ってるのか?引数で渡した方が良いぞ。
106 名前:名前は開発中のものです。 mailto:sage [04/06/21 15:47 ID:6NF9APWD] どちらにせよソースが収まらない悪寒
107 名前:x≠先生かつx=生徒 ⇒ x=俺 mailto:sage [04/06/21 18:09 ID:X+fe3iOx] HSP版 #include "hspext.as" pos 0, 240 repeat 640 emsin sin, cnt\256 line cnt, 240+(sin*240/256) loop stop
108 名前:名前は開発中のものです。 mailto:sage [04/06/21 19:41 ID:/2qctf8W] テトリスは専用スレがあるし、JavaScriptで7行に収まったりと、 ネタが出尽くしているので飽きてます。
109 名前:名前は開発中のものです。 mailto:sage [04/06/21 19:57 ID:8Xx3uQUF] 237 名前:名前は開発中のものです。[sage] 投稿日:03/09/21(日) 18:16 ID:vg0x9Gpj >>227 www.excite.co.jp/world/url/body?wb_url=http%3A%2F%2Fwww.gamedev.net% 2Freference%2Fdesign%2Ffeatures%2Fmakegames%2Fpage2.asp&wb_lp=ENJA&wb_dis=2 テトリス→ブロック崩し→パックマン→スーパーマリオ→ギャラガ がいいらしい リンク先のスーパーマリオ2が違うゲーム(夢工場?)に見えるけどなんなんだろ
110 名前:名前は開発中のものです。 mailto:sage [04/06/21 20:05 ID:B4V2NoLh] メッセージループを使う60fpsのゲームにして欲しい。 後々こっちのほうが役に立つと思う。
111 名前:生徒A mailto:sage [04/06/21 21:54 ID:jNWjDlXF] とりあえず、sinカーブの方を少し遅れたんですが、作ってみました。 一番先頭に#include<math.h>を付けたら、あとはキャプション以外は、ウィンドウプロシージャーしか違わないので そこだけ書く事にしました。 // ウインドウプロシージャ LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam) { HDC hDC;PAINTSTRUCT ps;static HPEN hPen;static HBRUSH hBr; RECT box;box.bottom =480;box.left =0;box.right =640;box.top =0; int x=0,y,k=0; double rad=3.14159/180; // メッセージの種類に応じて処理を分岐 switch (message){ case WM_CREATE: hPen=CreatePen(PS_SOLID,1,RGB(255,0,0));hBr=CreateSolidBrush(0x00000000); return 0; case WM_PAINT: hDC=BeginPaint(hWnd,&ps);SelectObject(hDC,hBr);FillRect(hDC,&box,hBr); for(x=0;x<=640;x++){ y=(int)(sin((double)k*rad)*100.0+240.0); x++; k++; if(k>360)k=0; SelectObject(hDC,hPen); SetPixel(hDC,x,y,RGB(255,0,0)); } EndPaint(hWnd,&ps); return 0; case WM_DESTROY:PostQuitMessage(0);return 0; default:return DefWindowProc(hWnd, message, wParam, lParam);} }
112 名前:生徒A mailto:sage [04/06/21 21:57 ID:jNWjDlXF] 私は、インベーダーの方が良いと思います。
113 名前:名前は開発中のものです。 mailto:sage [04/06/21 22:10 ID:MJraUy6q] 本当に一からやるんだったら、まだまだ基礎的なことはたくさんあるですよ。 o 描いた四角を横に動かし続ける o 画面の端で跳ね返るようにする o 2つの四角を描いてを横に動かし続ける(速度が違うようにする) o 四角同士が衝突したら跳ね返るようにする o 四角を斜めに動かす o 斜めに跳ね返るようにする o 丸を描く o 丸同士を当てたら跳ね返るようにする(ビリヤードみたいなの) o etc, etc, etc...
114 名前:名前は開発中のものです。 mailto:sage [04/06/21 22:13 ID:MJraUy6q] あと、できればバイナリ付きソースをUPして欲しかったり…
115 名前:名前は開発中のものです。 mailto:sage [04/06/21 22:17 ID:8Xx3uQUF] まとめページ 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 アップローダ gamdev.org/up/
116 名前:名前は開発中のものです。 mailto:sage [04/06/21 22:23 ID:Z9w22r4l] 誰かsin関数くらい自前で用意して描画しろよ。
117 名前:生徒A mailto:sage [04/06/21 22:33 ID:jNWjDlXF] sin関数を自前で用意するとなると、テイラー級数展開?が必要になる気がしたんですが… 確か、こんな式だったような sin(x) = x-(x^3/3!)+(x^5/5!)-(x^7/7!)+…
118 名前:名前は開発中のものです。 mailto:sage [04/06/21 23:47 ID:8Xx3uQUF] 赤い四角、Delphiです procedure TForm1.Button1Click(Sender: TObject); begin ClientWidth:=640; ClientHeight:=480; Canvas.Brush.Color:=clRed; Canvas.FillRect(Rect(0,0,320,240)); end;
119 名前:名前は開発中のものです。 mailto:sage [04/06/22 00:43 ID:z3uDPhKo] sin波形、Delphi procedure TForm1.Button1Click(Sender: TObject); var i: Integer; begin ClientWidth:=640; ClientHeight:=480; Canvas.Pen.Color:=clRed; Canvas.MoveTo(0,240); for i:=0 to 627 do begin Canvas.LineTo(i, Trunc(sin(i/100)*100)+240); end; end;
120 名前:4 ◆3VUXqvbfSY [04/06/22 06:00 ID:tegmloOZ] >>113 勿論、選んだ方の基礎からやっていきますから。大丈夫です。ただ、大まかな指針が欲しいだけで。 >>115 ワーイ、まとめページだ!ありがとう! >>ALL マジで、先生増やしてよ〜。僕一人じゃ不安だよ〜
121 名前:名前は開発中のものです。 mailto:sage [04/06/22 08:07 ID:bOsE7Dq6] >>118-119 正解。
122 名前:名前は開発中のものです。 mailto:sage [04/06/22 12:14 ID:vyNZUIcy] >>111 作ったペンとブラシは終了時に開放したほうがいいですよ。
123 名前:名前は開発中のものです。 mailto:sage [04/06/22 13:59 ID:z3uDPhKo] 階級制にしようぜ! *問題に難易度設定 課題にも難易度が設定されていて大佐向け、中尉向けなどがある *昇格資格 課題を一つクリアするたびに昇格 自分の階級より下の問題を解いても昇格しない(大佐は少尉向けの課題を解いても出世はなし) *出題する権利 自分より2つ下向けの課題を出せる(大佐になれば少佐向けを出題できる) *特別昇格 自分より格下の問題を解いた場合、通常は昇格しない しかし、お手本になるようなすばらしい解答、解説をした場合は 昇格の対象となる (上級職の人の任意か下級職の人の過半数の支持が目安) こんな感じでどうよ せっかくだからゲーム感覚でやろうじゃないかと設定してみた ちょっと昇格条件が甘すぎる気もするけど もちろん4 ◆3VUXqvbfSY氏や他の先生役の人はそのまま出題してくれるとありがたい 階級はこれがわかりやすくていい www.special-warfare.net/data_base/102_military_unit/001_military_us/rank_01.html
124 名前:名前は開発中のものです。 mailto:sage [04/06/22 15:06 ID:3E6K9gNw] 階級みたいにポンポンと技術は上がらんからねぇ。 プログラミングの技術って、どちらかというと山登りみたいな感じだと思う。 準備(下積み)がほぼ大半を占めるけど、準備だけしてもだめで 登り方も知らないと駄目だし(変な登り方をすると途中でのたれ死ぬ) なにより体力(根気)が必要。 どれをとっても「これだけやれば大丈夫」という基準が無い。 たまに天才がいて、Tシャツ短パンで一直線にエベレストに登頂したりするけど そういうやつ以外は「大佐のくせにそんなことも知らないのかよ。プッ」って言われるのがオチかも。
125 名前:生徒BLUE@入隊希望 [04/06/22 23:32 ID:ImuZbVzv] 赤い四角の課題解きました 書き込み制限に引っ掛かりますのでのんびり貼り付けていきます 参考にしたのは猫でもわかるプログラミングとSTGを最初からみんなで作るスレです TABやスペースをnbspに変換するツールって欲しい時にはなかなか出てこないですね ム板でたまに見かけた記憶はあるのですが……、持ってる人いたらください それでは貼り付け開始 // 課題 赤い四角 #include <windows.h> #define WIDTH 640 #define HEIGHT 480 LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); char szClassNme[] = "WINDOWCLASSNAME"; int DrawGr(HWND hWnd) { PAINTSTRUCT paint; HDC hdc = BeginPaint(hWnd, &paint); HPEN hPen, hOldPen; RECT rt; GetClientRect(hWnd, &rt); hPen = CreatePen(PS_SOLID, 1, RGB(255, 0, 0)); hOldPen = (HPEN)SelectObject(hdc, hPen); HBRUSH hBrush = CreateSolidBrush( RGB(255, 0, 0)); SelectObject(hdc, hBrush); Rectangle(hdc, 0, 0, 320, 240); SelectObject(hdc, hBrush); DeleteObject(hPen); SelectObject(hdc, hOldPen); DeleteObject(hPen); EndPaint(hWnd, &paint); return 0; }
126 名前:名前は開発中のものです。 mailto:sage [04/06/23 01:15 ID:4HGTxQki] 怖いのは登山ルートが間違った状態で登っていることだ 行き先は崖だったり
127 名前:生徒BLUE@入隊希望 [04/06/23 15:21 ID:G2RbfgcV] >>125 の続き //640x480ってひょっとしてクライアントウィンドウじゃなくてウィンドウのサイズでよかったですか? int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst,LPSTR lpszCmdLine, int nCmdShow) { HWND hWnd; MSG msg; WNDCLASS myProg; if (!hPreInst) { myProg.style =CS_HREDRAW | CS_VREDRAW; myProg.lpfnWndProc =WndProc; myProg.cbClsExtra =0; myProg.cbWndExtra =0; myProg.hInstance =hInstance; myProg.hIcon =NULL; myProg.hCursor =LoadCursor(NULL, IDC_ARROW); myProg.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH); myProg.lpszMenuName =NULL; myProg.lpszClassName =szClassNme; if (!RegisterClass(&myProg)) return FALSE; } RECT rect; rect.top = 0; rect.left = 0; rect.right = WIDTH; rect.bottom = HEIGHT; DWORD style=WS_BORDER | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX; AdjustWindowRect(&rect, style, FALSE); int width = rect.right - rect.left; int height = rect.bottom - rect.top; hWnd=CreateWindow(szClassNme, "【初心者】課題をクリアしていくスレ【講習会】", style, CW_USEDEFAULT,0,width,height,NULL,NULL,hInstance,NULL); ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } return (msg.wParam); }
128 名前:名前は開発中のものです。 [04/06/23 18:23 ID:XpSZny8Q] VBも参加していいですか?
129 名前:名前は開発中のものです。 mailto:sage [04/06/23 19:25 ID:mQ2LYzxk] mingwとかSDLとかHSPとかSDKとかSDLPerlとかが一体なんなのか 理解できない漏れ… とりあえずHelloWorldはできたけどウインドウ表示なんて壁高杉 どうすればいいんだよう…
130 名前:4 ◆3VUXqvbfSY [04/06/23 20:11 ID:YwmthHB/] >>128 ぜんぜんOK!HSPが居るんだから大じょーぶ。 >>129 MSDNライブラリを読む事から始めましょう。 ウィンドウ表示に関しては、VCの最初の壁です。コレがあるからVCは面倒くさいんですが…。 しかし、ウィンドウが表示できれば、簡単なゲームは直ぐ作れるようになりますって。 まあ、難しければHSPに転向しちゃうって手もあります。 スピードが要求されなければ、かなり便利な言語です。 HSPでググってみてください。 >>ALL わかりました。インベーダーで始めましょう。 ただし、インベーダーが一通り作れたら、落ちゲーにも触れますよ(ぷよぷよやドリラー等) 階級制は面白いんですが…判断基準が…微妙…。 昇級試験制にしたらどうでしょう。 たとえば。 問題(if文を使わずに、A=Bなら0。A≠Bなら1を表示するプログラムを作れ) とか
131 名前:名前は開発中のものです。 mailto:sage [04/06/23 20:12 ID:bTZutcV4] 真に初心者であれば分からないのは当然。 とりあえず分からない単語を列挙すれば、誰か暇な人が答えてくれるかもしれない。
132 名前:名前は開発中のものです。 mailto:sage [04/06/23 22:00 ID:dPgxaG/R] >>129 hello worldを何で表示したか分からんからアレだけど、 取り合えずC/C++と仮定した場合、キミがいくべきところはここだ。 www.kumei.jp/c_lang/
133 名前:生徒BLUE@入隊希望 [04/06/23 22:23 ID:G2RbfgcV] >>127 の続き これで完了です LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_DESTROY: PostQuitMessage(0); break; case WM_PAINT: DrawGr(hWnd); break; default: return(DefWindowProc(hWnd, msg, wParam, lParam)); } return (0L); }