【初心者】課題をクリアしていくスレ【講習会】at GAMEDEV
【初心者】課題をクリアしていくスレ【講習会】 - 暇つぶし2ch18:名前は開発中のものです。
04/06/12 20:15 3RseVDDm.net
課題1
ツクールXPを買え


19:名前は開発中のものです。
04/06/12 20:25 FrFMdSS0.net
>>18
先生!そのソフトの発売日まで1カ月以上ありますが、どうしたらいいんでしょうか?

20:名前は開発中のものです。
04/06/12 20:29 g4kSpUbw.net
ツクールXPで一本作って、それを元にどんどん下に落としていくのはアリかも。
「ゲームに必要な要素」は、ツクールを解析してそれを実装することで体現できる。


21:生徒弐顎
04/06/12 20:33 thSusfHE.net
>>15
こちらこそごめんなさい
売り言葉に買い言葉で熱くなってたようです

>>1さん降臨するまで身動き取れないですね
ゲームに必要な要素といえば……、と考えるだけで1スレ使っちゃいそうです
コンパイラを用意させるっていうことはゲーム(プログラミング)に必要な要素ってことで
アルゴリズムとデータ構造あたりじゃないかと妄想

プログラムの文法や一般的なアルゴリズムまでは覚えても
ゲームとなると参考にできるものがかなり減りますし
「迷路の自動生成」、「3dマップの自動生成」、「倉庫番の自動解き」、「格闘ゲームの敵キャラAI」とか
これらは今思いついただけですけど、答えは一つじゃないものを皆でワイワイ解きつつ
先生がヒントをくれるスレだったらいいなぁとか期待してみるテスト

>>16
よく見たら>>1さんじゃないですか!
トリップがブシとかFFとかちょっと縁起でもない感じですけど

>>18
体験版は購入済み
スクリプトが熱いですね
ツクールでも課題スレができれば楽しいかも



書き込み制限待ちでどんどん長文になっていくorz



22:VshiFFV8@1 ◆g28oS.E2zA
04/06/12 21:17 w+wQoi+K.net
例えば
課題が「新規ウィンドウを開いて、画像を表示させる」であれば
自分の得意な言語(やりたい言語)で課題を無理やりにでもクリアする。
改善点を述べてもらい次の課題へ
(できない場合は先生にやさしくおしえてもらいましょう)

妄想してみました

23:名前は開発中のものです。
04/06/12 22:32 5RZLD90Q.net
要は段階的学習スレと同じってことですか。

24:受験生 ◆3VUXqvbfSY
04/06/12 23:49 g0Zkl09e.net
>>20
ツクールで作り始めると…
プログラミングに移行できずに、終わる予感。

25:名前は開発中のものです。
04/06/13 00:55 QEF1CnCV.net
>>24
目的が「ゲームを作ること」ならそれはそれで幸せな予感

26:名前は開発中のものです。
04/06/13 00:59 QEF1CnCV.net
まあジャンルは様々なので、共通項目からまったりと考えますか。

課題1、ゲーム作成に用いるプログラミング言語を決める

27:名前は開発中のものです。
04/06/13 03:33 T7mosLDP.net
ツクールでつくれないんなら
あきらめた方がいいよ

28:生徒弐顎
04/06/13 15:45 3gckKy9M.net
>>22
先生!はやく次にどうすればいいのか指示ください。
>>11君と同じ疑問はみんな持ってると思います!
ていうか一晩考えたのですがやっぱり>>11君はスレも読まずにケンカを売ったようにしか見えません!!

一応、>>1>>3>>22の中で「新規ウィンドウを開いて、画像を表示させる」をやりたいっぽいのは伝わってきましたが
先生役をやる気がないなら早めのカミングアウトをお願いします。
コンパイラを用意させるとかソースを提出させるとかアイデアはいくつかあがってますが
先生が反応しないとどうしようもないので。

29:名前は開発中のものです。
04/06/13 16:04 QEF1CnCV.net
>>1には
>ゲームに必要な要素を先生が出してくれます
とある。"出してくれます"なので先生役はやらないと思われ


30:生徒弐顎
04/06/13 16:56 3gckKy9M.net
失敬、先生は>>2氏でしたね。
先生!コンパイラの用意できましたよ。

31:4 ◆3VUXqvbfSY
04/06/13 17:01 QH1r5fl5.net
ん…ランダムを初期化して
ランダムを使い、1~9までの数当てを作ってみましょう。

32:生徒弐顎
04/06/13 20:20 3gckKy9M.net
どこかで見たような課題ですね。
とりあえず言語はC/C++で問題ないですか?
採点のポイントをあらかじめ教えてくれるとやりやすいのですが。

33:4
04/06/13 20:35 QH1r5fl5.net
何でもOKですよ。
どの環境でも大差ないですから。

34:名前は開発中のものです。
04/06/13 21:08 UiqEecMu.net
うんこスレ発見

35:生徒A
04/06/14 12:48 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 6UsS7uqF.net
多分OKです。
今携帯から何で、確認できませんがw

ただし。randomに同様な確からしさを求めるならば、rand()*10/RAND_MAXの方が良いでしょう。
rand()%10だと…帰ってきた値とrandが返す最大値の関係が無視される事となり、従って、返す値が同様に確からしいかを確認できなくなります。

37:名前は開発中のものです。
04/06/14 16:42 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 9xiGisv8.net
uses
SysUtils;
ここは不要でした

39:4 ◆3VUXqvbfSY
04/06/14 16:57 6UsS7uqF.net
やば…
>>35
二回ランダム使ってるよ…、ていうか、当てようがねぇ…
何か変数用意して、一回代入したら、もうランダム使っちゃダメだよ。毎回違う値がでるw

>>38
出来てますよ…うん。

40:名前は開発中のものです。
04/06/14 18:35 wh7EkBpp.net
君たち勉強不足だよ

41:名前は開発中のものです。
04/06/14 19:01 EUCVAi2R.net
ネット上の解説サイトより勉強するには本のほうがわかりやすいでしょうか?


42:名前は開発中のものです。
04/06/14 19:10 FPxTvBCd.net
>>41
図書館とかに良書が無いか?
正直、2Dならともかく3Dを作りたいなら本は必須だろ。

43:名前は開発中のものです。
04/06/14 21:10 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 D7BWejst.net
どんなソフトを使った方がいいんでしょうか?

45:4 ◆3VUXqvbfSY
04/06/14 23:53 6UsS7uqF.net
>>35
凄く気になったんで、追記します。
何故time.hをインクルードしてるんですか?

46:名前は開発中のものです。
04/06/15 00:16 1cIbBCDp.net
>>45
randのシードに時間入れてるからじゃん
srand((unsigned)time( NULL )); ←この文で。

47:4
04/06/15 00:39 OmG1F0sQ.net
ごめん。俺がアホだった。
許して…


(^~^)oO(酒は飲めども飲まれるな…酔って書くんじゃ無かった…)

48:名前は開発中のものです。
04/06/15 02:39 ZV1P5DyI.net
君たちレベル低いですよ

49:生徒A
04/06/15 03:34 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 fWp+ET9z.net
>>49
そういうことじゃない。
お前が今日やったことを書き並べていくだけの自己満足スレが邪魔だと言ってるだけ。
レベルが低くて見たところで誰も得しないし、
挙句に態度も無茶苦茶悪い。
あんた何様のつもりだ。

51:名前は開発中のものです。
04/06/15 13:15 2D7N5vK5.net
50はこのスレに来なくていいよ

52:名前は開発中のものです。
04/06/15 15:08 VVOVJCXy.net
まぁ、実は云うとこのスレは重複スレであって

  【目標ない奴】おまいらに課題を与える。【集まれ】
  スレリンク(gamedev板)l50

無難に考えれば、上記スレに誘導ということになるわけだが
>>50のような排他厨房が出現して余計な真似をしやがるので
ここはしばらく様子を見守るとするか。


53:名前は開発中のものです。
04/06/15 15:12 VVOVJCXy.net
ただ望むべくは
このスレの利用者がローカルルールに則って自発的に
スレリンク(gamedev板)l50
に移動するような流れを作り出すことである。君等の善意に期待しよう。

54:名前は開発中のものです。
04/06/15 15:26 fJJvgQKc.net
旧課題スレはリレーで作品を作るスレ
このスレは先生がお題を出して採点するスレ

そこは間違えるなよ

55:名前は開発中のものです。
04/06/15 15:32 VVOVJCXy.net
あーそうなの。微妙なんだね。

56:名前は開発中のものです。
04/06/15 15:34 VVOVJCXy.net
ちなみに、俺は旧スレでソースを出していた者だが
別にリレーするスレではなかったので、その意味での
拘束条件はないと思っていい。


57:名前は開発中のものです。
04/06/15 15:53 jTaFbPw8.net
>>52-53
スレリンク(gamedev板)l50

おー、そんな良スレが既にあったんですね。
>>1ではありませんが、よく見てなかったです。ゴメンなさい。
個人的にはスレ乱立は本意ではないですし、このスレでなければ
困るという理由も無いんで、移動に一票入れときます。

今、あちらのスレのログを読んでます。とても勉強になります。

58:名前は開発中のものです。
04/06/15 15:58 VVOVJCXy.net
>>57
ガンガレー

59:名前は開発中のものです。
04/06/15 16:47 fJJvgQKc.net
こういうスレが好みならいっぱいあるぞ
もう1つぐらいあった気がする

>>1も行方不明だし移動しない理由もないな

ズブの初心者がゲーム作れるまで勉強するスレ
スレリンク(gamedev板)
■自主製作ゲーム:開発状況報告スレVer0.3■
スレリンク(gamedev板)
初心者専用スレ「シミュレーションゲーム」を作らない?
スレリンク(gamedev板)
初心者専用スレ「パックマン」風ゲーム作らない?
スレリンク(gamedev板)
STGを最初からみんなで作るスレ
スレリンク(gamedev板)
【Delphi】 ゲームつくるぞ(゚Д゚)ゴルァ 【作れば?】
スレリンク(gamedev板)

60:名前は開発中のものです。
04/06/15 16:52 fJJvgQKc.net
あまりレスがつかなかったスレは貼らなかったが実際はもっと乱立してる
これ以上の乱立を防ぐためにもローカルルールで告知しておいたほうがいいんじゃないか?

61:名前は開発中のものです。
04/06/15 17:29 dz0re3XK.net
>>59
thx

62:61
04/06/15 17:32 dz0re3XK.net
途中で送信しちゃった。えと、向こうのスレでガンバリまつ!

63:名前は開発中のものです。
04/06/15 17:36 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 OmG1F0sQ.net
>>63
はい、正解です。



さて…次の課題は、素数です。
ゲームとは直接関係有りませんが、プログラムをやるなら、必ず一度は作るらしい!そんな課題です。

どの方法(アルゴリズム)を使っても構いません。
また、速度を追求させもしません。
ただし、速くしたいなら、どんどん高速化してみると楽しいですよ。

とりあえず、小さい方から1000個の素数を見つけるプログラムを作成してください。

65:63 ◆xdaKt6k1XI
04/06/15 20:22 DDwACq7t.net
>>64
とりあえず素数について調べてきます。

66:63 ◆xdaKt6k1XI
04/06/15 23:24 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 9w200AiB.net
>50

僕の発言と態度がそんなに誤解を与えたなら謝りたいと思います。
すいませんでした。

素数ですか…、そういえば「エラトステネスのふるい」のアルゴリズム
が有名ですよね

高校の時の先生におおまかな考え方だけ教えてもらったきりですが

68:生徒A
04/06/16 00:25 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 E0t6wJPT.net
>>68
動作上は問題ないけど、ヘンなクセがあって読みにくいね。
先生のお手本キボンヌ。

70:名前は開発中のものです。
04/06/16 01:41 qW9lKpJw.net
>>68
間違ってる希ガス。
1000までの数の中の素数を上げるんじゃないですよん。
変数chknumが必要かもう一度考え直してみなはれ。(こっちのが見やすいかもしんないけど)

71:4 ◆3VUXqvbfSY
04/06/16 08:42 XOSz7qTz.net
模範解答は用意しましたよ。
でも、発表は答えが出そろってからにします。

72:名前は開発中のものです。
04/06/16 09:07 E0t6wJPT.net
>>70
最初、オレもそう思ったけど、
問題には、小さい方から1000個って書いてある悪感。

for(j=0;count<1000;j++){
これが紛らわしい。

73:名前は開発中のものです。
04/06/16 14:41 Zcc4AjKX.net

              ∩
             | |
             | |
       ∧_∧  | |    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      ( ´Д`)//  < 先生!今から参加していいですか?
      /     /    \_______________
     / /|    /
  __| | .|     | __
  \   ̄ ̄ ̄ ̄ ̄   \
  ||\            \
  ||\|| ̄ ̄ ̄ ̄ ̄ ̄ ̄|| ̄
  ||  || ̄ ̄ ̄ ̄ ̄ ̄ ̄||
     .||              ||

数当てゲーム
URLリンク(gamdev.org)

74:生徒(C++)
04/06/16 15:06 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 XOSz7qTz.net
参加は嬉しい限りですよね >>1さん
でもむしろ…先生役やりたい人誰か居ない?
激しく募集中です…

76:名前は開発中のものです。
04/06/16 18:33 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 KZI0wz/S.net
挫折しますた・・・orz

78:名前は開発中のものです。
04/06/16 22:21 uyNGxE8j.net
>>77
URLリンク(www.ese.yamanashi.ac.jp)


79:名前は開発中のものです。
04/06/16 23:54 E0t6wJPT.net
>>77
どこでどう挫折したのか書いてみましょうよ。

80:名前は開発中のものです。
04/06/17 00:05 AAkEHKib.net
よし、俺も素数のと数当てやってみる

81:名前は開発中のものです。
04/06/17 00:44 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 wIlIrMhO.net
>>78
結構難しそうっすね。
>>79
2から自分自身のまで順番に割ってって計算結果が1以外だったら自分自身の数を1足してやりなおして、計算結果が1だけだったらその数を表示するってようにしたんですが。

83:名前は開発中のものです。
04/06/17 10:39 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 uMGX0XjB.net
>>83
駄目でしたか・・・・もう一度がんばります!

85:名前は開発中のものです。
04/06/19 14:57 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 W8craWnM.net
unsigned long cun; とcun++;
は無視で <(_ _)>

87:名前は開発中のものです。
04/06/19 17:01 olZSV2kJ.net
>>85-86
Upするまえにテストしよ~よ。
それから、問題文をちゃんと読むべし。

88:生徒A
04/06/19 19:27 GZf8LDr8.net
そういえば、新しい課題って無いの?


89:名前は開発中のものです。
04/06/19 20:08 hqj9xu9C.net
素数とかはロジックを考えるのは大切だけど、できてもあまり嬉しくないからなぁ。
かといって特定の分野に特化すると、それぞれの分野には初心者スレがあるし。
「適当なウィンドウを作成してsin波形を描画する」あたりはどう?


90:4 ◆3VUXqvbfSY
04/06/19 21:47 wn6hjF1m.net
良いねその課題!…ってチョットレベル上がり杉な…
…まあ良いか…
でもまずは、640*480のウィンドウに
(0,0)320*240の赤い四角を描いてください。


91:4 ◆3VUXqvbfSY
04/06/19 22:17 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 D2QJG2Dd.net
素数は無理でしたが・・・
>>90の課題はできました。

WIDTH 640,480
COLOR 255
BOXF 320,240,1,0
stop

93:63 ◆xdaKt6k1XI
04/06/19 22:24 D2QJG2Dd.net
>>92
BOXF 320,240,1,0

BOXF 320,240,0,0
です。

94:4
04/06/19 22:25 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 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 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 9LoKJ5Oe.net
正直、4行で実現できるHSPがうらやましいと思った…

98:名前は開発中のものです。
04/06/20 04:46 l91pLvEB.net
ここはJavaでは参加できないですか?

99:名前は開発中のものです。
04/06/20 07:05 w0wGxy3B.net
>>98
問題ないと思いますよ

100:名前は開発中のものです。
04/06/20 07:50 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 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 B7NIG/G/.net
画面を黒でクリアする方法ってこれでいいんですか?
void Clear(void)
{
SelectObject(hDC , GetStockObject(BLACK_BRUSH));
Rectangle(hDC , 0 , 0 , WIDTH , HEIGHT);
}

103:名前は開発中のものです。
04/06/21 12:47 X4sdLydq.net
>>102
イイともワルいともいえないというか、
ウィンドウを更新するとか必要だけど、まぁ、そんな感じ。

つーか、先生はどこだ?!

104:4 ◆3VUXqvbfSY
04/06/21 13:24 xh+2kWgx.net
ココw
…まあ、VCの人が出来てんだから、sinの課題も可能か…

sinの方の制作もどうぞ。

さて…みなさんに質問です。
これから、ゲーム制作を開始してみます。
次の課題は、インベーダーとテトリス
どちらがいいですか?

いや…どっちが基本的ですかね?
とりあえず、プログラムの特徴は

インベーダー:かなり基本的なシューティング。当たり判定とキー判定がネック。また、あの敵の大群を纏めて動かすのも結構めんどい。高速化も要るかも。

テトリス:かなり基本的なパズル。回転の処理、消しの判定、落ち判定がネック。とは言え、これ自体はさして大変ではない。インベーダーより楽に見えるが、向こうより単純な分、テスト回数が少なく、飽きるかもw

まあ、どちらも一気にはつくりませんw
方向性が決まったら、ボトムアップに作りましょうw

105:名前は開発中のものです。
04/06/21 13:30 Z9w22r4l.net
>>102
DCはグローバルで持ってるのか?引数で渡した方が良いぞ。

106:名前は開発中のものです。
04/06/21 15:47 6NF9APWD.net
どちらにせよソースが収まらない悪寒

107:x≠先生かつx=生徒 ⇒ x=俺
04/06/21 18:09 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 /2qctf8W.net
テトリスは専用スレがあるし、JavaScriptで7行に収まったりと、
ネタが出尽くしているので飽きてます。

109:名前は開発中のものです。
04/06/21 19:57 8Xx3uQUF.net
237 名前:名前は開発中のものです。[sage] 投稿日:03/09/21(日) 18:16 ID:vg0x9Gpj
>>227
URLリンク(www.excite.co.jp)
2Freference%2Fdesign%2Ffeatures%2Fmakegames%2Fpage2.asp&wb_lp=ENJA&wb_dis=2

テトリス→ブロック崩し→パックマン→スーパーマリオ→ギャラガ
がいいらしい

リンク先のスーパーマリオ2が違うゲーム(夢工場?)に見えるけどなんなんだろ


110:名前は開発中のものです。
04/06/21 20:05 B4V2NoLh.net
メッセージループを使う60fpsのゲームにして欲しい。
後々こっちのほうが役に立つと思う。

111:生徒A
04/06/21 21:54 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 jNWjDlXF.net
私は、インベーダーの方が良いと思います。

113:名前は開発中のものです。
04/06/21 22:10 MJraUy6q.net
本当に一からやるんだったら、まだまだ基礎的なことはたくさんあるですよ。

o 描いた四角を横に動かし続ける
o 画面の端で跳ね返るようにする
o 2つの四角を描いてを横に動かし続ける(速度が違うようにする)
o 四角同士が衝突したら跳ね返るようにする
o 四角を斜めに動かす
o 斜めに跳ね返るようにする
o 丸を描く
o 丸同士を当てたら跳ね返るようにする(ビリヤードみたいなの)
o etc, etc, etc...

114:名前は開発中のものです。
04/06/21 22:13 MJraUy6q.net
あと、できればバイナリ付きソースをUPして欲しかったり…

115:名前は開発中のものです。
04/06/21 22:17 8Xx3uQUF.net
まとめページ
URLリンク(gamdev.org)
アップローダ
URLリンク(gamdev.org)

116:名前は開発中のものです。
04/06/21 22:23 Z9w22r4l.net
誰かsin関数くらい自前で用意して描画しろよ。

117:生徒A
04/06/21 22:33 jNWjDlXF.net
sin関数を自前で用意するとなると、テイラー級数展開?が必要になる気がしたんですが…

確か、こんな式だったような

sin(x) = x-(x^3/3!)+(x^5/5!)-(x^7/7!)+…

118:名前は開発中のものです。
04/06/21 23:47 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 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 tegmloOZ.net
>>113
勿論、選んだ方の基礎からやっていきますから。大丈夫です。ただ、大まかな指針が欲しいだけで。

>>115
ワーイ、まとめページだ!ありがとう!


>>ALL
マジで、先生増やしてよ~。僕一人じゃ不安だよ~

121:名前は開発中のものです。
04/06/22 08:07 bOsE7Dq6.net
>>118-119
正解。

122:名前は開発中のものです。
04/06/22 12:14 vyNZUIcy.net
>>111
作ったペンとブラシは終了時に開放したほうがいいですよ。

123:名前は開発中のものです。
04/06/22 13:59 z3uDPhKo.net
階級制にしようぜ!

*問題に難易度設定
課題にも難易度が設定されていて大佐向け、中尉向けなどがある

*昇格資格
課題を一つクリアするたびに昇格
自分の階級より下の問題を解いても昇格しない(大佐は少尉向けの課題を解いても出世はなし)

*出題する権利
自分より2つ下向けの課題を出せる(大佐になれば少佐向けを出題できる)

*特別昇格
自分より格下の問題を解いた場合、通常は昇格しない
しかし、お手本になるようなすばらしい解答、解説をした場合は
昇格の対象となる
(上級職の人の任意か下級職の人の過半数の支持が目安)



こんな感じでどうよ
せっかくだからゲーム感覚でやろうじゃないかと設定してみた
ちょっと昇格条件が甘すぎる気もするけど
もちろん4 ◆3VUXqvbfSY氏や他の先生役の人はそのまま出題してくれるとありがたい

階級はこれがわかりやすくていい
URLリンク(www.special-warfare.net)


124:名前は開発中のものです。
04/06/22 15:06 3E6K9gNw.net
階級みたいにポンポンと技術は上がらんからねぇ。
プログラミングの技術って、どちらかというと山登りみたいな感じだと思う。
準備(下積み)がほぼ大半を占めるけど、準備だけしてもだめで
登り方も知らないと駄目だし(変な登り方をすると途中でのたれ死ぬ)
なにより体力(根気)が必要。
どれをとっても「これだけやれば大丈夫」という基準が無い。

たまに天才がいて、Tシャツ短パンで一直線にエベレストに登頂したりするけど
そういうやつ以外は「大佐のくせにそんなことも知らないのかよ。プッ」って言われるのがオチかも。

125:生徒BLUE@入隊希望
04/06/22 23:32 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 4HGTxQki.net
怖いのは登山ルートが間違った状態で登っていることだ
行き先は崖だったり


127:生徒BLUE@入隊希望
04/06/23 15:21 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 XpSZny8Q.net
VBも参加していいですか?

129:名前は開発中のものです。
04/06/23 19:25 mQ2LYzxk.net
mingwとかSDLとかHSPとかSDKとかSDLPerlとかが一体なんなのか
理解できない漏れ…

とりあえずHelloWorldはできたけどウインドウ表示なんて壁高杉
どうすればいいんだよう…

130:4 ◆3VUXqvbfSY
04/06/23 20:11 YwmthHB/.net
>>128
ぜんぜんOK!HSPが居るんだから大じょーぶ。

>>129
MSDNライブラリを読む事から始めましょう。
ウィンドウ表示に関しては、VCの最初の壁です。コレがあるからVCは面倒くさいんですが…。
しかし、ウィンドウが表示できれば、簡単なゲームは直ぐ作れるようになりますって。

まあ、難しければHSPに転向しちゃうって手もあります。
スピードが要求されなければ、かなり便利な言語です。

HSPでググってみてください。



>>ALL
わかりました。インベーダーで始めましょう。
ただし、インベーダーが一通り作れたら、落ちゲーにも触れますよ(ぷよぷよやドリラー等)

階級制は面白いんですが…判断基準が…微妙…。
昇級試験制にしたらどうでしょう。
たとえば。
問題(if文を使わずに、A=Bなら0。A≠Bなら1を表示するプログラムを作れ)

とか

131:名前は開発中のものです。
04/06/23 20:12 bTZutcV4.net
真に初心者であれば分からないのは当然。
とりあえず分からない単語を列挙すれば、誰か暇な人が答えてくれるかもしれない。

132:名前は開発中のものです。
04/06/23 22:00 dPgxaG/R.net
>>129
hello worldを何で表示したか分からんからアレだけど、
取り合えずC/C++と仮定した場合、キミがいくべきところはここだ。

URLリンク(www.kumei.jp)

133:生徒BLUE@入隊希望
04/06/23 22:23 G2RbfgcV.net
>>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);
}

134:名前は開発中のものです。
04/06/24 00:34 9IgBi+UW.net
>>130 ありがとうございます。C言語でも出来ますけど、あまり自信が無いんです…。

VBでキャラの移動と弾の発射だけやってみました。
←→キーで左右移動、Z or Spaceキーで弾の発射です。
URLリンク(gamdev.org)

135:名前は開発中のものです。
04/06/24 14:35 9ja3YKOg.net
>>134
×押して終了しても、プロセスが残ってるみたい

136:メトロイド オモロイド
04/06/24 21:11 Yq9S/x7T.net
2Dメトロイド&3Dメトロイド作ってみたらどうだ?
難しいがエラー無く完成したら腕上がるぞ。

137:生徒BLUE
04/06/24 23:20 kfww3pCy.net
次はいよいよインベーダーですか

参考にしたサイト:URLリンク(www3.omn.ne.jp)
今回新しく使った関数:MoveToEx、LineTo

>>125>>127>>133の中からDrawGr関数を書き換えて#include <math.h>を追加します。
//課題4sin波
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);
MoveToEx(hdc,0,sin(0.0)*100+240,NULL);
for (float i=0; i<6.28; i+=0.01) {
LineTo(hdc,i*100,sin(i)*100+240);
}
SelectObject(hdc, hBrush);
DeleteObject(hPen);
SelectObject(hdc, hOldPen);
DeleteObject(hPen);
EndPaint(hWnd, &paint);
return 0;
}

138:134
04/06/25 02:41 dGOyDbGP.net
当たり判定などを追加しました。問題のメモリリークのバグも直しました。

URLリンク(gamdev.org)

139:4 ◆3VUXqvbfSY
04/06/25 07:09 va8qXu2v.net
>>134さん
まずは、sinからお願いします。
あんまり爆走すると、先生にしますよ。
むしろ、なって欲し…


>>ALL
次の課題は、基本中の基本。
キー入力です。
先程の赤い四角を使い、カーソル(テンキーでも可)でグリグリ動く物を作ってください。


参考程度に
VC++ GetKeyState();//バーチャルキーの状態取得。
C++ getch();//標準入力
VB _KeyDown(key%,Shift%)//keyにキーコードが返る
HSP getkey p1,p2//p2のキーが押されていると、p1に1が代入される。

140:x≠先生かつx=生徒 ⇒ x=俺
04/06/25 18:25 oIl/kTfS.net
sin波生成
URLリンク(rupan.zive.net)

141:63 ◆xdaKt6k1XI
04/06/25 23:47 BZ++Tyug.net
動かせました。

WIDTH 640,480
*main
BUFFER 2,640,480,1
COLOR 255
BOXF x+320,y+240,x,y
pos x,y
stick a,15
if a&1 : x-1
if a&2 : y-1
if a&4 : x+1
if a&8 : y+1
await 1
GSEL 0
GCOPY 2,0,0,640,480
goto *main
stop

142:生徒142
04/06/26 00:54 NxwPZgd2.net
今日から参加します。
まずは四角
URLリンク(gamdev.org)

キー入力に取りかかります。
赤い四角を動かせばいいんですよね?

143:生徒142
04/06/26 03:19 NxwPZgd2.net
連投
プロシージャのみ貼り付けてみます。

描画がカクカクします、再描画の処理はどうすればきれいに動くのでしょうか?
LRESULT CALLBACK WndProc(HWND hWnd,UINT msg,WPARAM wp,LPARAM lp){
HDC hdc;PAINTSTRUCT ps;HPEN hpen;static int x,y;
switch(msg){case WM_CREATE:x = 0;y = 0;break;
case WM_KEYDOWN:if(wp == VK_RIGHT){if(x < 310){x += 5;}}
if(wp == VK_LEFT){f(x > 0){x -= 5;}}
if(wp == VK_UP){if(y > 0){y -= 5}};
if(wp == VK_DOWN){if(y < 210){ y += 5;}}
InvalidateRect(hWnd,NULL,TRUE);
break;
case WM_PAINT:
hdc = BeginPaint(hWnd,&ps);
hpen = CreatePen(PS_SOLID,3,RGB(255,0,0));
SelectObject(hdc,hpen);
Rectangle(hdc,x,y,x+320,y+240);
DeleteObject(hpen);
EndPaint(hWnd,&ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return(DefWindowProc(hWnd,msg,wp,lp));
}
return 0;
}


144:名前は開発中のものです。
04/06/26 04:14 sMwugFr/.net
if(wp == VK_LEFT){f(x > 0){x -= 5;}}

if(wp == VK_LEFT){if(x > 0){x -= 5;}}

if(wp == VK_UP){if(y > 0){y -= 5}};

if(wp == VK_UP){if(y > 0){y -= 5;}}

145:生徒142
04/06/26 04:30 NxwPZgd2.net
>>144
すみません、ソース書いた時は{使ってなかったもので
ここに貼り付ける時に急遽書きました。

iが消えたり;の前に}書いたり間抜けなことになってますね。
次からはよく確かめます

146:134
04/06/26 05:20 1CizLySr.net
>>139

VBでsinカーブを描画してみました。
そろそろC言語でやりたいとは思うのですが、ポインタの所がいまいちなので…

URLリンク(gamdev.org)

147:名前は開発中のものです。
04/06/26 08:40 K/WyEUE8.net
<html><head><style type="text/css"><!--
.put{background-color:#FF0000;position:absolute;width:320px;height:240px;}
--></style></head>
<body onLoad="main()" onKeyDown="k[event.keyCode]=1" onKeyUp="k[event.keyCode]=0">
<div id=char class=put></div><script language="Javascript">
var timerID,k=[],x=0,y=0,charElm=document.getElementById('char');
function main(){
clearTimeout(timerID);timerID=setTimeout(main,30);
x+=k[37]&&x?-8:k[39]&&x<320?8:0;
y+=k[38]&&y?-8:k[40]&&y<240?8:0;
charElm.style.left=x;charElm.style.top=y;}
</script></body></html>


148:134
04/06/26 10:37 1CizLySr.net
URLリンク(gamdev.org)

キャラ移動です。一応加速度も考慮してあります。

149:名前は開発中のものです。
04/06/26 13:26 wteFDikq.net
Wikiなんかじゃなくて専用のHP作ったら?
ソース貼るのに不憫だろ

150:名前は開発中のものです。
04/06/26 13:31 jYUMekjC.net
>>149
神キタ━━━(゚∀゚)━━━ !!
tabとか半角スペースめんどいもんな
ひょっとして過去にうぷされたソースとかも整形してうぷしてくれれば
うれしいけどそれは望みすぎかな
急がなくていいからがんがれ!

151:名前は開発中のものです。
04/06/26 13:39 CUwn7Ubj.net
強引な150に萌え

152:Ruby@課題1数当て
04/06/26 14:32 jYUMekjC.net
kotae=rand(9)+1
while (true)
print "1~9の数を入力してください\n"
gets
ans=Integer(chop)
if ans==kotae then
print "正解\n"
break
else
print "不正解\n"
end
end

153:149
04/06/26 15:26 wteFDikq.net
俺かYoΣ(´□`;)

154:Ruby@課題2素数
04/06/26 16:17 jYUMekjC.net
count=0
i=2
while count<1000 do
sosu=true
for j in 2..i-1 do
if ( (i % j) == 0)
sosu=false
end
end
if (sosu)
print "#{i}\n"
count=count+1
end
i=i+1
end
print "素数を#{count}個みつけました\n"

155:Ruby/SDL@課題3赤い四角
04/06/26 17:32 jYUMekjC.net
require 'sdl'

SDL.init( SDL::INIT_VIDEO )
screen = SDL.setVideoMode( 640, 480, 16, SDL::SWSURFACE )

screen.fillRect( 0, 0, 320, 240, [ 255, 0, 0 ] )
screen.updateRect( 0, 0, 0, 0 )

loop do
while event = SDL::Event2.poll
case event
when SDL::Event2::Quit, SDL::Event2::KeyDown
exit
end
end
end

156:Ruby/SDL@課題4sin波形
04/06/26 18:50 jYUMekjC.net
require 'sdl' 

SDL.init( SDL::INIT_VIDEO ) 
screen = SDL.setVideoMode( 640, 480, 16, SDL::SWSURFACE )

count=0.0
while count < 6.28
  x=count*100
  y=Math.sin(count)*100+240
  screen.putPixel(x,y,[255,0,0])
  count=count+0.01
end
screen.updateRect( 0, 0, 0, 0 )

loop do  
  while event = SDL::Event2.poll
    case event
    when SDL::Event2::Quit, SDL::Event2::KeyDown
      exit
    end
  end
end

157:Ruby/SDL@課題5キー入力
04/06/26 20:12 jYUMekjC.net
require 'sdl'

SDL.init( SDL::INIT_VIDEO ) 
screen = SDL.setVideoMode( 640, 480, 16, SDL::SWSURFACE ) 

y=0
x=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=319 if x > 319
  y=0 if y<0
  y=239 if y > 239

  screen.fillRect( 0, 0, 640, 480, [ 0, 0, 0 ] )
  screen.fillRect( x, y, 320, 240, [ 255, 0, 0 ] )
  screen.updateRect( 0, 0, 0, 0 )
end

158:名前は開発中のものです。
04/06/26 21:12 4yTlUeBl.net
こりゃある意味、荒らしといえなくもないな

159:名前は開発中のものです。
04/06/26 21:34 jYUMekjC.net
Ruby/SDLインストール方法(Windows)

1.とりあえずコレをダウンロード
URLリンク(www.kmc.gr.jp)

2.解凍して適当なフォルダにコピー

3.[コピーしたフォルダ]\usr\local\binにパスを切る
(たとえばc:\ruby\usr\local\binなど)

以上でインストール終了。

スクリプトをテキストファイルとして保存して(拡張子は.rbが一般的)
ruby [ファイル名]として実行
(たとえばruby sosu.rbなど)

公式サイト
URLリンク(www.kmc.gr.jp)
チュートリアル
URLリンク(www.kmc.gr.jp)

160:名前は開発中のものです。
04/06/26 23:23 VAfJSjue.net
宣伝?

161:名前は開発中のものです。
04/06/26 23:49 PaYEz6W8.net
キー入力、Delphiです
TApplicationEventsとQD3のDDIDEX使ってます

private
Chara: TPoint;

procedure TForm1.ApplicationEvents1Idle(Sender: TObject;
var Done: Boolean);
begin
DDIDEX1.Scan(DI_KEYB);
Chara.X:=Chara.X+DDIDEX1.Stick.X;
Chara.Y:=Chara.Y+DDIDEX1.Stick.Y;
if (Chara.X<0) or (Chara.X>319) then begin
Chara.X:=Chara.X-DDIDEX1.Stick.X;
end;
if (Chara.Y<0) or (Chara.Y>239) then begin
Chara.Y:=Chara.Y-DDIDEX1.Stick.Y;
end;
Canvas.Brush.Color:=clBlack;
Canvas.FillRect(Rect(0,0,ClientWidth,ClientHeight));
Canvas.Brush.Color:=clRed;
Canvas.FillRect(Rect(Chara.X,Chara.Y,Chara.X+320,Chara.Y+240));
Sleep(5);
Done:=False;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
DoubleBuffered:=True;
ClientWidth:=640;
ClientHeight:=480;
end;

162:名前は開発中のものです。
04/06/27 01:17 m6T91X5d.net
>>149
インデントを保ったままソースをうぷしたいなら
ソース置き場やゲムデヴあぷろだをを利用させてもらう手もある
というかこのスレはなぜ貼り付けるのが主流なんだw

ソース置き場
URLリンク(do.sakura.ne.jp)
ゲムデヴあぷろだ
URLリンク(gamdev.org)

>>151
うむ、萌えプロ目指してるからな
参考1) URLリンク(www.bk1.co.jp)
参考2) URLリンク(oshimago.chu.jp)

>>153
      ☆ チン     マチクタビレタ~
                        マチクタビレタ~
       ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
        ヽ ___\(\・∀・) < 専用のHPまだ~?
            \_/⊂ ⊂_)    \_____________
          / ̄ ̄ ̄ ̄ ̄ ̄ /|
       | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
       |  S p o k e  |
>>158
このスレ自体(ry
まぁ、土曜日を利用してスタートダッシュだ許せ

>>160
おまいらも開発環境や実行環境ぐらい書けよ
ところでRubyって宣伝と思われるほどマイナーなのか?
ちなみにRuby暦1日(もう2日目だな)なので優しくしてくれな

163:名前は開発中のものです。
04/06/27 02:56 fYoguU/V.net
>>162
>このスレはなぜ貼り付けるのが主流なんだw
ダウソして解凍してって面倒なので結構貼り付けいいと思うんだが
普通のレスが見にくい&改行制限が問題だな

2ch型掲示板を設置して生徒一人につき1スレ使ってソースを貼り付けていくっていうのはどうでしょ?
TABの問題が残るかな?

164:名前は開発中のものです。
04/06/27 06:21 6ucDfgWE.net
>>163
神キタ━━━(゚∀゚)━━━ !!
ダウソとか解凍めんどいもんな
ひょっとして過去にうぷされたソースとかもスレ立てて貼りつけてくれれば
うれしいけどそれは望みすぎかな
急がなくていいからがんがれ!

165:名前は開発中のものです。
04/06/27 07:31 fYoguU/V.net
>>164
コピペかよ!ほんとに作るぞ?
aaacafeとかだったらすぐだし

166:名前は開発中のものです。
04/06/27 09:45 sIosK61q.net
ソースをコピペしてコンパイルして実行するほうがはるかにめんどい

167:129
04/06/27 10:57 BWzYLsUd.net
今更ながらやっとwindows.hが読める?環境が整ったよ…
>>130-132さんありがとう。

LSI-C86試食でやっていたのですがこの度borlandのなんとかをいれました
次はSDL&Cygwin????
なんかいまだにDelphiとか分からないんですけど何をどうするのが好ましいのでしょうか…?

自分だけ違う次元ですね…。鬱。

168:名前は開発中のものです。
04/06/27 12:50 1xxqplwj.net
>167
SDLとかCygwinとかDelphiとか気にしなくても良いから
とりあえずborland c++ コンパイラ用意できたということで
Cのお勉強をしてみましょうよ

169:167
04/06/27 13:15 BWzYLsUd.net
>>168
SDLとかいれたほうが楽なのかなと思ったのですが…
やっぱりいきなり窓プログラミングにぶっ飛ぶより基礎からじっくりやるべきですか
基礎でぬくぬくしてられないと思ったもので…反省。


170:課題2@D言語
04/06/27 13:29 TlIkOaxm.net
まだβ版だけど先取りして勉強。
素数判定。

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:32 m6T91X5d.net
>>163
ソース貼り付けのメリットも捨てがたいな
テキストファイルを扱えるあぷろだがあれば閲覧もダウンロードもできて楽かもしれん
スレにソース貼りまくりも妙に楽しいんだが

>>164
   ,,ヘ ヘ    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
   (,, ゚∇゚) < クレクレ厨逝ってよち!
  ~(,,_ノ    \_____________

>>165
megaBBSスクリプト( URLリンク(pabbs.hp.infoseek.co.jp) )が半角、全角、TABを扱えていい感じだった
しかも等幅フォントも使えるみたい

2chでインデントつける方法は教えてもらってきた
スレリンク(tech板:83-92番)

>>166
だよな、人のソースみて勉強してる立場からすると崩れたソースは辛い

>>167>>169
Win32APIで窓プログラミング汁!
ぬくぬくどころか最難関だw
といっても参加者やわかる人が多い環境でもあるので王道かもしれん
ひたすらたくさんの開発環境を整えてPCの基礎知識を仕入れるのも(・∀・)イイ!

>>170
D言語知らないから間違ってたら悪いんだが
それって1も表示されないか?(1はもちろん素数じゃない)

>>生徒BLUE氏
BRUSHの解放忘れがあるよ

172:課題2@D言語
04/06/27 17:41 TlIkOaxm.net
>>171
1と自分以外で割れない数が素数じゃないの?
1と1以外で割れない数だからと思って"わざわざ"付け足したのに orz

173:名前は開発中のものです。
04/06/27 18:31 fYoguU/V.net
テスト 
というかこんな感じのロダでいいのかな?cppアップ可能に設定してみた
URLリンク(cgi.f11.aaacafe.ne.jp)

各言語のテキストに対応させればそのままあpできるし。


174:名前は開発中のものです。
04/06/27 19:00 PY8053hi.net
>>169
実際にはWindowsのゲームプログラミングはそれほど難しくないよ。
内部にゲーム画像を作成してキー入力などに応じて更新、それを
描画するだけだからね。ウインドウプログラミングの「流れ」を
掴めれば、パズルゲームやADV/RPGは比較的簡単に作れる。

何からはじめればよいかわからない、ということなら

C++ ゲーム プログラミング

といったキーワードでぐぐるなり、書店で「Windowsプログラミングの本」
を眺めて何をすれば「Windows用プログラム」になるのか、調べてみると
良いかも。

本当に「基礎」をやるなら、高レベルのライブラリではなくまずSDK
ベースのWindowsプログラミングで「Windowsのプログラムの流れ」を
しっかり追った方が良い。


175:x≠先生かつx=生徒 ⇒ x=俺
04/06/27 19:17 v+n6K1pQ.net
インベーダー途中
URLリンク(gamdev.org)

176:生徒A
04/06/27 19:26 WIo25CTE.net
しばらく来ない内にすごい事になってるよ…もう付いていけない

177:生徒BLUE
04/06/27 22:04 b0jvqBNF.net
あまりソースを貼り付けるのは荒らしっぽい?のでうぷろだにしました
今はまだ170行ですがインベーダーなら500~1000ぐらいにたぶんなるので
そろそろ切り替えようと思っていたところです

キー入力はGetAsyncKeyStateを使いました
0x8000の意味とかまだよくわかりませんけれど
if ((GetAsyncKeyState( VK_UP ) & 0x8000) == 0x8000)
{
y--;
}

チラチキ対策でダブルバッファを使った描画をしています
参考にしたソースをほぼそのままコピペしていますが内容は理解しています
このあたりは以前、やったことがあるのでまだまだ大丈夫

課題5キー入力
URLリンク(gamdev.org)

178:名前は開発中のものです。
04/06/27 22:28 6fdveQpW.net
画像だけなら簡単だが、音をつける段階で挫折しそうだ。

ダイレクトXを使わずに、WAVを複数同時に鳴らすことがどれほど大変か・・・

179:名前は開発中のものです。
04/06/27 22:41 PY8053hi.net
>>178
そうだね。
「自分でPCMバッファを作成し波形を合成、リアルタイムに出力」
なんてことになると結構しんどい(面白いとも言うがw)・・・。

まあ、画像でも同じような場面(自分で管理するバッファを処理し
ながらのリアルタイム出力)はあるわけだが。


180:名前は開発中のものです。
04/06/27 22:48 qWAk5Epz.net
ほらほら、先生が仕切らないから、落ちこぼれがでちゃったぞ。
一人は突っ走ってるし。

181:名前は開発中のものです。
04/06/27 22:58 qWAk5Epz.net
>>177
> 0x8000の意味とかまだよくわかりませんけれど
「ANDでマスクとる」とかはわかる?

定数書いちゃダメとか、staticって書くようにするとか、
拡張子がcppなのにC言語風じゃん!とか、
バックバッファあたりは毎回生成&破棄しなくても最初に一度だけ
作成してしまった方が処理の無駄がないとか、ブラシとペンも。


182:x≠先生かつx=生徒 ⇒ x=俺
04/06/27 23:05 v+n6K1pQ.net
>>180
とりあえず突っ走ってるって俺じゃないよな?

>>134
CPU使用率が70%~80%まで行ったんだけど・・・。

183:x≠先生かつx=生徒 ⇒ x=俺
04/06/27 23:07 v+n6K1pQ.net
( ゚д゚)ハッ!もしや、落ちこぼれが俺か!

184:副担任
04/06/27 23:48 sIosK61q.net
先生が帰ってくるまで漏れが面倒みましょうか?

185:ぷち
04/06/28 00:10 W5zBmX8i.net



186:名前は開発中のものです。
04/06/28 03:20 vjeNxAuN.net
落ちこぼし師

187:名前は開発中のものです。
04/06/28 04:46 AKJFcicb.net
>>184
お願いします。
ソース貼っても、アドバイス求めても生徒ばっかりでレスなくて(´・ω・`)ショボーンです。


188:生徒A
04/06/28 06:10 D8BhR1kS.net
なんとか徹夜して6時間ほど粘ってキー入力まで行ったけど、限界が近い…

WM_TIMERで画面の更新を行っているんですが、なんかすごくちらつくんですよ
あと、DeleteObject(hBr)というのを使うと、何故か画面が白くなるんです…
なので、使ってません。

URLリンク(gamdev.org)

189:4 ◆3VUXqvbfSY
04/06/28 06:20 kLFrYp0l.net
すみません皆様…
ミニ死の行進してました…

アプロダについて:
あっても、別に構いませんが、必要無いようにします。
具体的には、トップダウンで(例えばCなら)
メインを作る。

個々に使われた関数を作る
みたいに、ソースを(出来るだけ解りやすく)分割して、表示しようと企んでいます。


進行度:
自分で出来る方がドンドン進まれるのは、むしろ、喜ばしいです。ただし、課題はあくまで初心者ラインにしておきます。
だから、焦らなくて大丈夫。今の課題は、「キーで、赤い四角を動かす」です。


先生:
や、やっと一人…m(_ _)mヨロシクオネガイシマス


次の課題:
当たり判定。
先ほどの、「動く赤い四角」を避けゲーに改造しましょう
敵は 敵x = rand() % 640;//rand()*640/RAND_MAX
で…敵y++;のように動く単純な敵です。
当たったら終了と言う仕様で…

190:副担任
04/06/28 10:23 HdfIcXTc.net
漏れは先生と考え方が違うので一応書いておきます。うざかったらクビにしてください。>先生
・動けば正義(いい設計はできたほうがいいけどまだ求める段階ではないと思う)
・ソースは固めてどこかにアップする(バックアップ、成果としてわかりやすい)
・バイナリは付けて欲しい(開発環境を全てそろえるのは難しい)
・課題によけいなものは付けないでください(初心者が提出したソースを参考にしたとき、必要な機能のみが実装されていたほうがいい)

あくまで初心者のためのライブラリとしてとらえています。
「絵を描くにはこうする」「動かすにはこうする」「…」「…」のサンプルコードの固まりにしたいです。

課題の方針には賛成なので従います。

というわけで分からんことがある人は漏れが面倒みます。勉強しながら…。orz

191:副担任
04/06/28 10:26 HdfIcXTc.net
訂正すまそ。
× ・課題によけいなものは付けないでください(初心者が提出したソースを参考にしたとき、必要な機能のみが実装されていたほうがいい)
○ ・提出したソースにはよけいな機能は付けないでください(初心者が提出したソースを参考にしたとき、必要な機能のみが実装されていたほうがいい)

192:名前は開発中のものです。
04/06/28 10:28 Ten9Dr/x.net
>>188
簡単だが添削。ウィンドウプロシージャだけ。

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:30 Ten9Dr/x.net
ちと訂正・・orz

×holdobj = SelectObject(hdc, holdobj);// 以前のオブジェクトに戻す
○SelectObject(hdc, holdobj);// 以前のオブジェクトに戻す

194:63 ◆xdaKt6k1XI
04/06/28 15:51 W33tIq0j.net
>>190
変な質問ですいません
バイナリってなんですか?

195:生徒A
04/06/28 16:36 D8BhR1kS.net
>>194 190じゃないですが、もともとは2進数という意味だと思います。
だから、この場合は、1と0の組み合わせで作られた機械語データ
(実行ファイル)の意味だと思います。
他にも、テキストデータ以外のファイル全てを指す事もあります。

196:生徒A
04/06/28 16:40 D8BhR1kS.net
>>192 ありがとうございます。
DeleteObjectのやり方は分かったのですが、
オフスクリーンのやり方がちょっとよく分からないです。
具体的には、オフスクリーンの作成方法です。

197:名前は開発中のものです。
04/06/28 17:06 cdlT0cfW.net
CreateCompatibleBitmap

198:副担任
04/06/28 17:37 HdfIcXTc.net
>>194
Windowsの実行ファイルのことです。"~.exe" ってやつ。
C言語とかはコンパイルして実行ファイルを作らないとプログラムが動きません。
HSPはインタプリタ言語なので実行ファイルは作らなくていいみたいですね。

>>195
正解です

199:Ruby@課題6当たり判定
04/06/28 18:32 1FRiXQWF.net
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

200:Ruby@課題6当たり判定
04/06/28 18:33 1FRiXQWF.net
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当たり判定(実行ファイル付き)
URLリンク(gamdev.org)

【Rubyスクリプトを実行ファイルにする方法】
URLリンク(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添付ドキュメントは旧式の書き方になっているようです
サンプルは新しいものだったのでそちらを参考にしました

201:63 ◆xdaKt6k1XI
04/06/28 20:48 W33tIq0j.net
>>195
>>198
ありがとうございました。

202:生徒BLUE
04/06/28 21:18 mIyMN4GH.net
指摘された所を全部直しました

課題5キー入力再提出
URLリンク(gamdev.org)

203:4 ◆3VUXqvbfSY
04/06/28 21:39 kLFrYp0l.net
参考程度に…
オフスクリーン:
変数宣言 前略

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 1FRiXQWF.net
スクリプト組はあまり時間もかからず有利なので
複数言語同時習得を目指してみます

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数当て(実行ファイル付き)
URLリンク(gamdev.org)

205:名前は開発中のものです。
04/06/29 06:26 Ngmzz0xf.net
課題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)>32||Math.abs(y-eY)>32)timerID=setTimeout(m,30);}
//--></script></body></html>


206:LGP@課題2素数
04/06/29 09:54 OSp1CFcf.net
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:名前は開発中のものです。
04/06/29 13:12 WW/6W0k2.net
dpかwinsockでチャット作りたひ。

208:名前は開発中のものです。
04/06/29 18:46 vpUdLCjy.net
>>207
自分で作ったチャットソフトで皆と繋げられたら楽しそうな予感!

209:名前は開発中のものです。
04/06/29 21:15 OSp1CFcf.net
もの凄い勢いで進行してるのでまとめの意味もあって統計をとってみました
抜けてる人がいたらごめんなさい

JavaScript         ****** 6
Ruby..            ****** 6
生徒A(Win32API).     ***** 5
生徒BLUE (Win32API).  ***** 5
Delphi            ***** 5
D言語            ** 2
LGP             ** 2
x≠先生かつx=生徒 ⇒ x=俺(VB) 測定不能

まとめページ
URLリンク(gamdev.org)
アップローダ
URLリンク(gamdev.org)

210:x≠先生かつx=生徒 ⇒ x=俺
04/06/29 21:28 gNXtRGm+.net
>>209
VBを使った覚えは無いんですが…というよりVB使えません。
>>134のことかな?

211:名前は開発中のものです。
04/06/29 22:14 OSp1CFcf.net
>>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 OSp1CFcf.net
//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:生徒BLUE
04/06/30 00:29 HYWm3For.net
>>181
>「ANDでマスクとる」とかはわかる?
はい、この場合は2進数に直して一番左のビット以外を全部0にするってことですよね
MSDN読んだりあれからさらに調べてみたので前よりはちょっとわかったのですが
左端のビットが1ならボタンが押されているという程度の理解でいいのでしょうか

・定数書いちゃダメ
defineを積極的に使ってみました
C++の場合だとdefineは使わずにconstを使ったほうがいいと書いてあるホームページも
みつけましたがどうなんでしょう?

・拡張子がcppなのにC言語風
意識せずに全部cppにする習慣がついてたので……
クラスを使う→cpp、使わない→cでいいですか?
拡張子の使い分けむずかしい

・バックバッファあたりは毎回生成&破棄しなくても最初に一度だけ
GetDCを使えばいいんだ!と前回は気づいてませんでした


WEBの情報をあちこちからつまみ食いしてるので全体的にチグハグな感じに
なっていたようで指摘してもらって勉強になります
ソースみていただける方は2ちゃんねるに貼り付けとアップローダのどちらが見やすいでしょうか?
それとも両方のほうがよい?

214:名前は開発中のものです。
04/06/30 11:43 0T8fXV58.net
そろそろ本気で見にくくなってきたわけだが、
ちょっと言語が大杉やしないかい?
もうちょっと絞ろうよ

215:通りすがり人
04/06/30 12:46 qBs2hfFg.net
>>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:生徒BLUE
04/06/30 17:09 HYWm3For.net
>>215
早速、コンパイルして試してみました
最下位ビットに注目してみると
1000000000100100100100100100......
といったように変化します
初回だけということなので10000000......というものを期待していたのですがうまくいかないです

217:生徒BLUE
04/06/30 17:38 HYWm3For.net
課題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);
}

URLリンク(gamdev.org)

218:名前は開発中のものです。
04/06/30 18:49 3iu2d+4i.net
>>216
ん?スペースキーを押すと、こんな風に表示されませんか?
ffff8001
ffff8000
ffff8000
ffff8000
ffff8000
ffff8000
ffff8000
ffff8000
ffff8000
ffff8000
ffff8000


219:生徒BLUE
04/06/30 19:04 HYWm3For.net
>>218
ならないです
もうちょっと調べてみます

220:名前は開発中のものです。
04/06/30 19:39 3iu2d+4i.net
>>219
あ~、押しっぱなしの場合は違う結果になるかもです。
OSのキーボードバッファとか、その辺の兼ね合いだと思うけど。

221:名前は開発中のものです。
04/06/30 19:52 /EAv0A9z.net
>>215試して見たけど確かに>>216の現象が出るな。
他の出力で確認したらちゃんと立ち上がりだけ1が出るので
printf()絡みでキー状態が変化してるっぽい。
普通はこんな使い方しないので気にしなくて良いと思われ。

222:63 ◆xdaKt6k1XI
04/06/30 21:22 qAZjVMDs.net
>>211
今回のは敵の大きさとか動きとかよくわからないのでやらないです。

223:名前は開発中のものです。
04/06/30 22:22 j1/sm794.net
320x240で一度作ったけど即死しすぎて32x32に縮小したよ
サイズ指定してないから何でもいいと思ったけどそのあたりどうなんですか?>先生

wikiのほうにまとめコーナー作っておいたので各自書きたいことがあったら適当にどうぞ
というか書いてくださいおながいします
名無しさんを消して自分の名前にして提出状況とかコンパイラは何を使ってるとかそんなのでいいので

URLリンク(gamdev.org)

224:LGP@課題4sin波形
04/07/01 00:05 TMNGfYFe.net
//画面初期化、最後を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 KOe6GSoY.net
>>222,223
サイズは自由で結構です。
敵の動きは…だからy++;だけですよ?

226:生徒A
04/07/01 14:26 MCi74o/R.net
数日間ソースとにらめっこしてるのですが、バックバッファーの処理が上手くいかないです…


227:名前は開発中のものです。
04/07/01 15:45 bdPAbTo6.net
>>226
キミのソースに少し手を加えたやつをうpろだにあげたから試してみれ。780.lzhだ。
ただしオフスクリーン処理以外(後始末とか)は端折ってるのでそこは参考にしないように。

228:LGP@課題5キー入力
04/07/01 22:17 TMNGfYFe.net
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 4ZvlEEie.net
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 4ZvlEEie.net
  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

231:名前は開発中のものです。
04/07/04 00:00 UWWF49AF.net
保守age

232:HSPが初プログラム@生徒希望
04/07/04 11:07 3DUC6+Xf.net
課題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

URLリンク(gamdev.org)

課題2はヨクワカラナイです。ヒントくれませんか?

233:名前は開発中のものです。
04/07/04 11:13 dw9vgL9Y.net
>>232
自分以下で2以上の全ての整数の割り算の余りが0にならなければ素数
別の解放にエラトステネスのふるいってのがあるけど別に使わなくていい


234:名前は開発中のものです。
04/07/04 11:14 dw9vgL9Y.net
自分未満の整数の間違い
以下だったら自分も含むからね

235:名前は開発中のものです。
04/07/04 12:05 WDudAYFD.net
自分の1/2で十分じゃね?



236:名前は開発中のものです。
04/07/04 12:35 yqwpjhZT.net
(√自分)でよくない?

237:名前は開発中のものです。
04/07/04 12:38 WDudAYFD.net
平方根求めるより楽だし

238:名前は開発中のものです。
04/07/04 12:55 9GihiSR8.net
>>236-237
なんで平方根まででいいんだっけ?

239:名前は開発中のものです。
04/07/04 13:00 WDudAYFD.net
それ以上のは今までに計算した分と対応してるだけ

240:HSPが初プログラム@生徒希望
04/07/04 19:58 3DUC6+Xf.net
えと、素数はどういうものかはわかるんですが、プログラムというかHSPでの算出方法が…

241:x≠先生かつx=生徒 ⇒ x=俺
04/07/04 20:45 WDudAYFD.net
; 素数判定 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

242:x≠先生かつx=生徒 ⇒ x=俺
04/07/04 20:47 WDudAYFD.net
あ、インデントかけるの忘れとった。。。

; 素数判定 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

243:Ruby@素数高速化
04/07/05 00:33 K58VA1M5.net
以前のバージョン
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:37 o/9mlWPU.net
>>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

245:名前は開発中のものです。
04/07/05 07:17 LZQQVRIy.net
Delphiで素数
URLリンク(gamdev.org)

246:名前は開発中のものです。
04/07/05 13:04 LZQQVRIy.net
最速の素数判定アルゴリズム
URLリンク(pc.2ch.net)

247:名前は開発中のものです。
04/07/05 20:13 axn64mRQ.net
すごいスレの流れと違うような気がしますが、
Cで、ウインドウ表示とか(課題3)、できないんですが・・・どうしたらいいんでしょうか?

248:名前は開発中のものです。
04/07/05 20:40 q8IB8pY7.net
できないだけ書かれてもどうしようもない。

249:名前は開発中のものです。
04/07/05 20:57 0DOOfkU1.net
>>247
猫でもわかるプログラミング
URLリンク(www.kumei.ne.jp)

このへんでまず勉強してこよう

250:名前は開発中のものです。
04/07/05 22:48 LZQQVRIy.net
>>247
WinMainからはじまって
CreateWindowでウィンドウの設定して
ShowWindowで表示するだけだ

251:HSPが初プログラム@生徒希望
04/07/05 22:51 ZZjGGIiZ.net
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

252:x≠先生かつx=生徒 ⇒ x=俺
04/07/05 23:00 pTJ3lo22.net
エラーを読も・・・・・Σ(;゚Д゚)HSPがエラー吐いてない!

noteadd "*" m
        ~|~
   要らない。ここでエラーが出てる。

noteadd "n"
      ~|~
エラーの原因ではないが、""+nの誤り。

あと、objprm 0, mをstopの前に入れて出力させてあげよう。

253:HSPが初プログラム@生徒希望
04/07/05 23:07 ZZjGGIiZ.net
>>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


254:x≠先生かつx=生徒 ⇒ x=俺
04/07/05 23:24 pTJ3lo22.net
たしか7919のはずだけど・・・

暇だしPerlとJava版の素数判定作ってみようかな。。。

255:名前は開発中のものです。
04/07/05 23:25 MIzlaErt.net
>>253
間違ってるよ・・・
121とかあるし・・・11からの素数の合成数が出まくりやね。

256:名前は開発中のものです。
04/07/06 00:11 hNVuoewj.net
>>247
それは簡単だって!どっかのサイトに張ってあるやつをそのままコピペで完成だぁよぉ!

257:名前は開発中のものです。
04/07/06 01:48 IHRV3HSb.net
素数スレになってるのだが・・・

258:名前は開発中のものです。
04/07/06 02:29 pkSoPn0/.net
Delphi エラトステネスの篩
URLリンク(gamdev.org)

259:x≠先生かつx=生徒 ⇒ x=俺
04/07/06 07:38 BOq5Vq10.net
#!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はインタープリタなのに
# 結構処理速いね。。。

260:名前は開発中のものです。
04/07/06 12:03 IHRV3HSb.net
>>259
Perlは見かけ上インタプリタだけど、
処理はコンパイル後実行だと聞いたことがある。

261:名前は開発中のものです。
04/07/06 16:54 pkSoPn0/.net
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 + "個の素数を発見しました");
}

262:x≠先生かつx=生徒 ⇒ x=俺
04/07/06 17:32 BOq5Vq10.net
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版。
// あと手を付けてない言語は何だっけ。
// ・・・ひまわりでもやってみるか。

263:名前は開発中のものです。
04/07/06 18:09 pkSoPn0/.net
//PHPで素数
<?php
    for ($i=2; $sosuCount<1000; $i++)
    {
        $nososu=false;
        for ($j=2; $j<$i; $j++)
        {
            if (($i % $j) == 0)
            {
                $nososu=true;
                break;
            }
        }
        if (!$nososu)
        {
            echo $i;
            echo "\n";
            $sosuCount++;
        }
    }
    echo $sosuCount + "個の素数を発見しました";
?>

264:名前は開発中のものです。
04/07/06 18:57 pkSoPn0/.net
#Pythonで素数
sosuCount=0
i=2
while sosuCount<1000:
        nososu=False
        j=2
        while j<i:
                if ((i % j) == 0):
                        nososu=True
                        j=99999
                        break
                j=j+1
        if (not nososu):
                print i
                sosuCount=sosuCount+1
        i=i+1
print sosuCount
print "個の素数を発見しました"

265:生徒A
04/07/06 19:10 B1nIIlBn.net
素数スレに変化していたらしい

266:名前は開発中のものです。
04/07/06 19:57 2QvbUldx.net
いろんな言語で素数プログラムつくるとゲーム作れるようになるですか

267:4 ◆3VUXqvbfSY
04/07/06 20:22 sRW7wZ6D.net
>>266
なるわけありませんw

だだし、解らない方をホっといて課題を進める訳には…

うーん…

じゃあ、課題外伝でも出しますか…
余力が有ればどうぞ。

弾道シミュレーション:とは言え、何も波動方程式を使えとはいわない。
真空空間で結構。
画面を横を640kmと仮定し、初速、角度を入力させ、弾の軌道を描いてくれ。
ちなみに、初速は29000m/s以下で
重力加速度は10m/(s^2)でお願いします。

268:x≠先生かつx=生徒 ⇒ x=俺
04/07/06 20:28 BOq5Vq10.net
(;゚Д゚)ノ先生!…まだ高1なので習ってません

269:名前は開発中のものです。
04/07/06 21:30 Oq4N2t0v.net
>>268
高一だけどもう習ったよ

270:名前は開発中のものです。
04/07/06 21:32 tJWPmmxn.net
とりあえず初速度を三角関数でxとyに分解した後、
重力加速度をyに対して適用していきましょう。

しかし初速29000m/sだと、軽々地球を離脱して重力圏外に吹っ飛んでいきそうです。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch