■ このスレッドは過去ログ倉庫に格納されています
【初心者】課題をクリアしていくスレ【講習会】
- 1 :名前は開発中のものです。:04/06/10 18:05 ID:VshiFFV8.net
- ゲームに必要な要素を先生が出してくれます
その課題をクリアしていく講習会です
- 29 :名前は開発中のものです。:04/06/13 16:04 ID:QEF1CnCV.net
- >>1には
>ゲームに必要な要素を先生が出してくれます
とある。"出してくれます"なので先生役はやらないと思われ
- 30 :生徒弐顎:04/06/13 16:56 ID:3gckKy9M.net
- 失敬、先生は>>2氏でしたね。
先生!コンパイラの用意できましたよ。
- 31 :4 ◆3VUXqvbfSY :04/06/13 17:01 ID:QH1r5fl5.net
- ん…ランダムを初期化して
ランダムを使い、1〜9までの数当てを作ってみましょう。
- 32 :生徒弐顎:04/06/13 20:20 ID:3gckKy9M.net
- どこかで見たような課題ですね。
とりあえず言語はC/C++で問題ないですか?
採点のポイントをあらかじめ教えてくれるとやりやすいのですが。
- 33 :4:04/06/13 20:35 ID:QH1r5fl5.net
- 何でもOKですよ。
どの環境でも大差ないですから。
- 34 :名前は開発中のものです。:04/06/13 21:08 ID:UiqEecMu.net
- うんこスレ発見
- 35 :生徒A:04/06/14 12:48 ID:Ki7OHh6M.net
- >>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.net
- 多分OKです。
今携帯から何で、確認できませんがw
ただし。randomに同様な確からしさを求めるならば、rand()*10/RAND_MAXの方が良いでしょう。
rand()%10だと…帰ってきた値とrandが返す最大値の関係が無視される事となり、従って、返す値が同様に確からしいかを確認できなくなります。
- 37 :名前は開発中のものです。:04/06/14 16:42 ID:9xiGisv8.net
- 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 :名前は開発中のものです。:04/06/14 16:44 ID:9xiGisv8.net
- uses
SysUtils;
ここは不要でした
- 39 :4 ◆3VUXqvbfSY :04/06/14 16:57 ID:6UsS7uqF.net
- やば…
>>35
二回ランダム使ってるよ…、ていうか、当てようがねぇ…
何か変数用意して、一回代入したら、もうランダム使っちゃダメだよ。毎回違う値がでるw
>>38
出来てますよ…うん。
- 40 :名前は開発中のものです。:04/06/14 18:35 ID:wh7EkBpp.net
- 君たち勉強不足だよ
- 41 :名前は開発中のものです。:04/06/14 19:01 ID:EUCVAi2R.net
- ネット上の解説サイトより勉強するには本のほうがわかりやすいでしょうか?
- 42 :名前は開発中のものです。:04/06/14 19:10 ID:FPxTvBCd.net
- >>41
図書館とかに良書が無いか?
正直、2Dならともかく3Dを作りたいなら本は必須だろ。
- 43 :名前は開発中のものです。:04/06/14 21:10 ID:yg+Hb9+4.net
- <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 :名前は開発中のものです。:04/06/14 21:47 ID:D7BWejst.net
- どんなソフトを使った方がいいんでしょうか?
- 45 :4 ◆3VUXqvbfSY :04/06/14 23:53 ID:6UsS7uqF.net
- >>35
凄く気になったんで、追記します。
何故time.hをインクルードしてるんですか?
- 46 :名前は開発中のものです。:04/06/15 00:16 ID:1cIbBCDp.net
- >>45
randのシードに時間入れてるからじゃん
srand((unsigned)time( NULL )); ←この文で。
- 47 :4:04/06/15 00:39 ID:OmG1F0sQ.net
- ごめん。俺がアホだった。
許して…
(^〜^)oO(酒は飲めども飲まれるな…酔って書くんじゃ無かった…)
- 48 :名前は開発中のものです。:04/06/15 02:39 ID:ZV1P5DyI.net
- 君たちレベル低いですよ
- 49 :生徒A:04/06/15 03:34 ID:9w200AiB.net
- >>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 :名前は開発中のものです。:04/06/15 11:35 ID:fWp+ET9z.net
- >>49
そういうことじゃない。
お前が今日やったことを書き並べていくだけの自己満足スレが邪魔だと言ってるだけ。
レベルが低くて見たところで誰も得しないし、
挙句に態度も無茶苦茶悪い。
あんた何様のつもりだ。
- 51 :名前は開発中のものです。:04/06/15 13:15 ID:2D7N5vK5.net
- 50はこのスレに来なくていいよ
- 52 :名前は開発中のものです。:04/06/15 15:08 ID:VVOVJCXy.net
- まぁ、実は云うとこのスレは重複スレであって
【目標ない奴】おまいらに課題を与える。【集まれ】
http://pc5.2ch.net/test/read.cgi/gamedev/1026148930/l50
無難に考えれば、上記スレに誘導ということになるわけだが
>>50のような排他厨房が出現して余計な真似をしやがるので
ここはしばらく様子を見守るとするか。
- 53 :名前は開発中のものです。:04/06/15 15:12 ID:VVOVJCXy.net
- ただ望むべくは
このスレの利用者がローカルルールに則って自発的に
http://pc5.2ch.net/test/read.cgi/gamedev/1026148930/l50
に移動するような流れを作り出すことである。君等の善意に期待しよう。
- 54 :名前は開発中のものです。:04/06/15 15:26 ID:fJJvgQKc.net
- 旧課題スレはリレーで作品を作るスレ
このスレは先生がお題を出して採点するスレ
そこは間違えるなよ
- 55 :名前は開発中のものです。:04/06/15 15:32 ID:VVOVJCXy.net
- あーそうなの。微妙なんだね。
- 56 :名前は開発中のものです。:04/06/15 15:34 ID:VVOVJCXy.net
- ちなみに、俺は旧スレでソースを出していた者だが
別にリレーするスレではなかったので、その意味での
拘束条件はないと思っていい。
- 57 :名前は開発中のものです。:04/06/15 15:53 ID:jTaFbPw8.net
- >>52-53
>http://pc5.2ch.net/test/read.cgi/gamedev/1026148930/l50
おー、そんな良スレが既にあったんですね。
>>1ではありませんが、よく見てなかったです。ゴメンなさい。
個人的にはスレ乱立は本意ではないですし、このスレでなければ
困るという理由も無いんで、移動に一票入れときます。
今、あちらのスレのログを読んでます。とても勉強になります。
- 58 :名前は開発中のものです。:04/06/15 15:58 ID:VVOVJCXy.net
- >>57
ガンガレー
- 59 :名前は開発中のものです。:04/06/15 16:47 ID:fJJvgQKc.net
- こういうスレが好みならいっぱいあるぞ
もう1つぐらいあった気がする
>>1も行方不明だし移動しない理由もないな
ズブの初心者がゲーム作れるまで勉強するスレ
http://pc5.2ch.net/test/read.cgi/gamedev/1005132370/
■自主製作ゲーム:開発状況報告スレVer0.3■
http://pc5.2ch.net/test/read.cgi/gamedev/1071809112/
初心者専用スレ「シミュレーションゲーム」を作らない?
http://pc5.2ch.net/test/read.cgi/gamedev/1079745509/
初心者専用スレ「パックマン」風ゲーム作らない?
http://pc5.2ch.net/test/read.cgi/gamedev/1014326802/
STGを最初からみんなで作るスレ
http://pc5.2ch.net/test/read.cgi/gamedev/1014709311/
【Delphi】 ゲームつくるぞ(゚Д゚)ゴルァ 【作れば?】
http://pc5.2ch.net/test/read.cgi/gamedev/1051110669/
- 60 :名前は開発中のものです。:04/06/15 16:52 ID:fJJvgQKc.net
- あまりレスがつかなかったスレは貼らなかったが実際はもっと乱立してる
これ以上の乱立を防ぐためにもローカルルールで告知しておいたほうがいいんじゃないか?
- 61 :名前は開発中のものです。:04/06/15 17:29 ID:dz0re3XK.net
- >>59
thx
- 62 :61:04/06/15 17:32 ID:dz0re3XK.net
- 途中で送信しちゃった。えと、向こうのスレでガンバリまつ!
- 63 :名前は開発中のものです。:04/06/15 17:36 ID:DDwACq7t.net
- 参加します、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.net
- >>63
はい、正解です。
さて…次の課題は、素数です。
ゲームとは直接関係有りませんが、プログラムをやるなら、必ず一度は作るらしい!そんな課題です。
どの方法(アルゴリズム)を使っても構いません。
また、速度を追求させもしません。
ただし、速くしたいなら、どんどん高速化してみると楽しいですよ。
とりあえず、小さい方から1000個の素数を見つけるプログラムを作成してください。
- 65 :63 ◆xdaKt6k1XI :04/06/15 20:22 ID:DDwACq7t.net
- >>64
とりあえず素数について調べてきます。
- 66 :63 ◆xdaKt6k1XI :04/06/15 23:24 ID:DDwACq7t.net
- 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:04/06/15 23:36 ID:9w200AiB.net
- >50
僕の発言と態度がそんなに誤解を与えたなら謝りたいと思います。
すいませんでした。
素数ですか…、そういえば「エラトステネスのふるい」のアルゴリズム
が有名ですよね
高校の時の先生におおまかな考え方だけ教えてもらったきりですが
- 68 :生徒A:04/06/16 00:25 ID:aSS5sxrF.net
- とりあえず、エラトステネスのふるいを使わないで考えたプログラムです
/*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 :名前は開発中のものです。:04/06/16 01:31 ID:E0t6wJPT.net
- >>68
動作上は問題ないけど、ヘンなクセがあって読みにくいね。
先生のお手本キボンヌ。
- 70 :名前は開発中のものです。:04/06/16 01:41 ID:qW9lKpJw.net
- >>68
間違ってる希ガス。
1000までの数の中の素数を上げるんじゃないですよん。
変数chknumが必要かもう一度考え直してみなはれ。(こっちのが見やすいかもしんないけど)
- 71 :4 ◆3VUXqvbfSY :04/06/16 08:42 ID:XOSz7qTz.net
- 模範解答は用意しましたよ。
でも、発表は答えが出そろってからにします。
- 72 :名前は開発中のものです。:04/06/16 09:07 ID:E0t6wJPT.net
- >>70
最初、オレもそう思ったけど、
問題には、小さい方から1000個って書いてある悪感。
for(j=0;count<1000;j++){
これが紛らわしい。
- 73 :名前は開発中のものです。:04/06/16 14:41 ID:Zcc4AjKX.net
-
∩
| |
| |
∧_∧ | | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´Д`)// < 先生!今から参加していいですか?
/ / \_______________
/ /| /
__| | .| | __
\  ̄ ̄ ̄ ̄ ̄ \
||\ \
||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
|| || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
.|| ||
数当てゲーム
http://gamdev.org/up/img/706.zip
- 74 :生徒(C++):04/06/16 15:06 ID:KVxQtTo1.net
- 先生、標準講座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.net
- 参加は嬉しい限りですよね >>1さん
でもむしろ…先生役やりたい人誰か居ない?
激しく募集中です…
- 76 :名前は開発中のものです。:04/06/16 18:33 ID:Ls5cfn3b.net
- <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 :04/06/16 20:42 ID:KZI0wz/S.net
- 挫折しますた・・・orz
- 78 :名前は開発中のものです。:04/06/16 22:21 ID:uyNGxE8j.net
- >>77
ttp://www.ese.yamanashi.ac.jp/~morisawa/sc2001/Eratosthenes.html
- 79 :名前は開発中のものです。:04/06/16 23:54 ID:E0t6wJPT.net
- >>77
どこでどう挫折したのか書いてみましょうよ。
- 80 :名前は開発中のものです。:04/06/17 00:05 ID:AAkEHKib.net
- よし、俺も素数のと数当てやってみる
- 81 :名前は開発中のものです。:04/06/17 00:44 ID:AAkEHKib.net
- #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 :04/06/17 07:40 ID:wIlIrMhO.net
- >>78
結構難しそうっすね。
>>79
2から自分自身のまで順番に割ってって計算結果が1以外だったら自分自身の数を1足してやりなおして、計算結果が1だけだったらその数を表示するってようにしたんですが。
- 83 :名前は開発中のものです。:04/06/17 10:39 ID:qLkBm+a6.net
- その考え方で問題ないか確認してみる。...のあとの数字は余り。
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 :04/06/18 15:04 ID:uMGX0XjB.net
- >>83
駄目でしたか・・・・もう一度がんばります!
- 85 :名前は開発中のものです。:04/06/19 14:57 ID:W8craWnM.net
- #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:04/06/19 14:58 ID:W8craWnM.net
- unsigned long cun; とcun++;
は無視で <(_ _)>
- 87 :名前は開発中のものです。:04/06/19 17:01 ID:olZSV2kJ.net
- >>85-86
Upするまえにテストしよ〜よ。
それから、問題文をちゃんと読むべし。
- 88 :生徒A:04/06/19 19:27 ID:GZf8LDr8.net
- そういえば、新しい課題って無いの?
- 89 :名前は開発中のものです。:04/06/19 20:08 ID:hqj9xu9C.net
- 素数とかはロジックを考えるのは大切だけど、できてもあまり嬉しくないからなぁ。
かといって特定の分野に特化すると、それぞれの分野には初心者スレがあるし。
「適当なウィンドウを作成してsin波形を描画する」あたりはどう?
- 90 :4 ◆3VUXqvbfSY :04/06/19 21:47 ID:wn6hjF1m.net
- 良いねその課題!…ってチョットレベル上がり杉な…
…まあ良いか…
でもまずは、640*480のウィンドウに
(0,0)320*240の赤い四角を描いてください。
- 91 :4 ◆3VUXqvbfSY :04/06/19 22:17 ID:wn6hjF1m.net
- 前課題解答例
#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 :04/06/19 22:23 ID:D2QJG2Dd.net
- 素数は無理でしたが・・・
>>90の課題はできました。
WIDTH 640,480
COLOR 255
BOXF 320,240,1,0
stop
- 93 :63 ◆xdaKt6k1XI :04/06/19 22:24 ID:D2QJG2Dd.net
- >>92
BOXF 320,240,1,0
は
BOXF 320,240,0,0
です。
- 94 :4:04/06/19 22:25 ID:wn6hjF1m.net
- ミスった(汗。訂正
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:04/06/20 04:33 ID:9LoKJ5Oe.net
- なんだか、構造体とかポインタとか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:04/06/20 04:33 ID:9LoKJ5Oe.net
- // ウインドウプロシージャ
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:04/06/20 04:36 ID:9LoKJ5Oe.net
- 正直、4行で実現できるHSPがうらやましいと思った…
- 98 :名前は開発中のものです。:04/06/20 04:46 ID:l91pLvEB.net
- ここはJavaでは参加できないですか?
- 99 :名前は開発中のものです。:04/06/20 07:05 ID:w0wGxy3B.net
- >>98
問題ないと思いますよ
- 100 :名前は開発中のものです。:04/06/20 07:50 ID:NlSC2nfH.net
- 赤い四角
<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 :名前は開発中のものです。:04/06/20 07:51 ID:NlSC2nfH.net
- 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 :名前は開発中のものです。:04/06/20 11:15 ID:B7NIG/G/.net
- 画面を黒でクリアする方法ってこれでいいんですか?
void Clear(void)
{
SelectObject(hDC , GetStockObject(BLACK_BRUSH));
Rectangle(hDC , 0 , 0 , WIDTH , HEIGHT);
}
- 103 :名前は開発中のものです。:04/06/21 12:47 ID:X4sdLydq.net
- >>102
イイともワルいともいえないというか、
ウィンドウを更新するとか必要だけど、まぁ、そんな感じ。
つーか、先生はどこだ?!
- 104 :4 ◆3VUXqvbfSY :04/06/21 13:24 ID:xh+2kWgx.net
- ココw
…まあ、VCの人が出来てんだから、sinの課題も可能か…
sinの方の制作もどうぞ。
さて…みなさんに質問です。
これから、ゲーム制作を開始してみます。
次の課題は、インベーダーとテトリス
どちらがいいですか?
いや…どっちが基本的ですかね?
とりあえず、プログラムの特徴は
インベーダー:かなり基本的なシューティング。当たり判定とキー判定がネック。また、あの敵の大群を纏めて動かすのも結構めんどい。高速化も要るかも。
テトリス:かなり基本的なパズル。回転の処理、消しの判定、落ち判定がネック。とは言え、これ自体はさして大変ではない。インベーダーより楽に見えるが、向こうより単純な分、テスト回数が少なく、飽きるかもw
まあ、どちらも一気にはつくりませんw
方向性が決まったら、ボトムアップに作りましょうw
- 105 :名前は開発中のものです。:04/06/21 13:30 ID:Z9w22r4l.net
- >>102
DCはグローバルで持ってるのか?引数で渡した方が良いぞ。
- 106 :名前は開発中のものです。:04/06/21 15:47 ID:6NF9APWD.net
- どちらにせよソースが収まらない悪寒
- 107 :x≠先生かつx=生徒 ⇒ x=俺:04/06/21 18:09 ID:X+fe3iOx.net
- HSP版
#include "hspext.as"
pos 0, 240
repeat 640
emsin sin, cnt\256
line cnt, 240+(sin*240/256)
loop
stop
- 108 :名前は開発中のものです。:04/06/21 19:41 ID:/2qctf8W.net
- テトリスは専用スレがあるし、JavaScriptで7行に収まったりと、
ネタが出尽くしているので飽きてます。
- 109 :名前は開発中のものです。:04/06/21 19:57 ID:8Xx3uQUF.net
- 237 名前:名前は開発中のものです。[sage] 投稿日:03/09/21(日) 18:16 ID:vg0x9Gpj
>>227
http://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 :名前は開発中のものです。:04/06/21 20:05 ID:B4V2NoLh.net
- メッセージループを使う60fpsのゲームにして欲しい。
後々こっちのほうが役に立つと思う。
- 111 :生徒A:04/06/21 21:54 ID:jNWjDlXF.net
- とりあえず、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:04/06/21 21:57 ID:jNWjDlXF.net
- 私は、インベーダーの方が良いと思います。
- 113 :名前は開発中のものです。:04/06/21 22:10 ID:MJraUy6q.net
- 本当に一からやるんだったら、まだまだ基礎的なことはたくさんあるですよ。
o 描いた四角を横に動かし続ける
o 画面の端で跳ね返るようにする
o 2つの四角を描いてを横に動かし続ける(速度が違うようにする)
o 四角同士が衝突したら跳ね返るようにする
o 四角を斜めに動かす
o 斜めに跳ね返るようにする
o 丸を描く
o 丸同士を当てたら跳ね返るようにする(ビリヤードみたいなの)
o etc, etc, etc...
- 114 :名前は開発中のものです。:04/06/21 22:13 ID:MJraUy6q.net
- あと、できればバイナリ付きソースをUPして欲しかったり…
- 115 :名前は開発中のものです。:04/06/21 22:17 ID:8Xx3uQUF.net
- まとめページ
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/
- 116 :名前は開発中のものです。:04/06/21 22:23 ID:Z9w22r4l.net
- 誰かsin関数くらい自前で用意して描画しろよ。
- 117 :生徒A:04/06/21 22:33 ID:jNWjDlXF.net
- sin関数を自前で用意するとなると、テイラー級数展開?が必要になる気がしたんですが…
確か、こんな式だったような
sin(x) = x-(x^3/3!)+(x^5/5!)-(x^7/7!)+…
- 118 :名前は開発中のものです。:04/06/21 23:47 ID:8Xx3uQUF.net
- 赤い四角、Delphiです
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientWidth:=640;
ClientHeight:=480;
Canvas.Brush.Color:=clRed;
Canvas.FillRect(Rect(0,0,320,240));
end;
- 119 :名前は開発中のものです。:04/06/22 00:43 ID:z3uDPhKo.net
- 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.net
- >>113
勿論、選んだ方の基礎からやっていきますから。大丈夫です。ただ、大まかな指針が欲しいだけで。
>>115
ワーイ、まとめページだ!ありがとう!
>>ALL
マジで、先生増やしてよ〜。僕一人じゃ不安だよ〜
- 121 :名前は開発中のものです。:04/06/22 08:07 ID:bOsE7Dq6.net
- >>118-119
正解。
- 122 :名前は開発中のものです。:04/06/22 12:14 ID:vyNZUIcy.net
- >>111
作ったペンとブラシは終了時に開放したほうがいいですよ。
- 123 :名前は開発中のものです。:04/06/22 13:59 ID:z3uDPhKo.net
- 階級制にしようぜ!
*問題に難易度設定
課題にも難易度が設定されていて大佐向け、中尉向けなどがある
*昇格資格
課題を一つクリアするたびに昇格
自分の階級より下の問題を解いても昇格しない(大佐は少尉向けの課題を解いても出世はなし)
*出題する権利
自分より2つ下向けの課題を出せる(大佐になれば少佐向けを出題できる)
*特別昇格
自分より格下の問題を解いた場合、通常は昇格しない
しかし、お手本になるようなすばらしい解答、解説をした場合は
昇格の対象となる
(上級職の人の任意か下級職の人の過半数の支持が目安)
こんな感じでどうよ
せっかくだからゲーム感覚でやろうじゃないかと設定してみた
ちょっと昇格条件が甘すぎる気もするけど
もちろん4 ◆3VUXqvbfSY氏や他の先生役の人はそのまま出題してくれるとありがたい
階級はこれがわかりやすくていい
http://www.special-warfare.net/data_base/102_military_unit/001_military_us/rank_01.html
- 124 :名前は開発中のものです。:04/06/22 15:06 ID:3E6K9gNw.net
- 階級みたいにポンポンと技術は上がらんからねぇ。
プログラミングの技術って、どちらかというと山登りみたいな感じだと思う。
準備(下積み)がほぼ大半を占めるけど、準備だけしてもだめで
登り方も知らないと駄目だし(変な登り方をすると途中でのたれ死ぬ)
なにより体力(根気)が必要。
どれをとっても「これだけやれば大丈夫」という基準が無い。
たまに天才がいて、Tシャツ短パンで一直線にエベレストに登頂したりするけど
そういうやつ以外は「大佐のくせにそんなことも知らないのかよ。プッ」って言われるのがオチかも。
- 125 :生徒BLUE@入隊希望:04/06/22 23:32 ID:ImuZbVzv.net
- 赤い四角の課題解きました
書き込み制限に引っ掛かりますのでのんびり貼り付けていきます
参考にしたのは猫でもわかるプログラミングと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 :名前は開発中のものです。:04/06/23 01:15 ID:4HGTxQki.net
- 怖いのは登山ルートが間違った状態で登っていることだ
行き先は崖だったり
- 127 :生徒BLUE@入隊希望:04/06/23 15:21 ID:G2RbfgcV.net
- >>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.net
- VBも参加していいですか?
- 129 :名前は開発中のものです。:04/06/23 19:25 ID:mQ2LYzxk.net
- mingwとかSDLとかHSPとかSDKとかSDLPerlとかが一体なんなのか
理解できない漏れ…
とりあえずHelloWorldはできたけどウインドウ表示なんて壁高杉
どうすればいいんだよう…
総レス数 787
293 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver.24052200