X



【初心者】課題をクリアしていくスレ【講習会】
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
垢版 |
04/06/10 18:05ID:VshiFFV8
ゲームに必要な要素を先生が出してくれます

その課題をクリアしていく講習会です
0002先生
垢版 |
04/06/10 18:07ID:4pS/jyZe
まずはコンパイラを用意しましょう。
用意できました?
0003VshiFFV8 ◆g28oS.E2zA
垢版 |
04/06/10 18:08ID:VshiFFV8
IDをコテにしてみます
0004受験生 ◆3VUXqvbfSY
垢版 |
04/06/10 23:09ID:aWWFz+nO
言語が解んなきゃ、出しようがないが…

C++ > ウィンドウを作ってみましょう。
VS.NET +VB > ビットマップでも読んでみましょう。
JAVA > …微妙…
0005名前は開発中のものです。
垢版 |
04/06/11 00:07ID:RD6vZgkI
まずツクールXPを買え
0007名前は開発中のものです。
垢版 |
04/06/11 00:53ID:Lftmabuj
HSPなんて使い物にならん
cygwinもしくはmingwでgccにしませう。
SDLを使えば2D表示、キー入力ぐらいは一瞬で出来るから
導入段階での難易度もいい感じだと思ふ。
0009名前は開発中のものです。
垢版 |
04/06/11 15:28ID:9L7vxxOM
君望2関連
・「近日お伝えできると思います」的な表現が今月末頃か雑誌などに
・主人公は白陵の大学生。
・物語中期に主人公が事故で大怪我
・君望2のスタッフは基本的に前作と変わってないらしい
・慎二は大学のサークルの先輩として普通に出てくる。
・病院で文緒がからんでくる、天川はやっぱり死んでる。
・時期設定は君望2章の3年後。
・マブラヴはなかった事になってる
・君望2のヒロインは年下の幼なじみと同じサークルの女子大生。
・物語中盤でどっちかのヒロインが死ぬ構成らしい。
・君望2の発表がまだなのはオルタの発売日が決まらないから。

age(アージュ)新作 〜君が望む永遠2〜 Part10
http://ex5.2ch.net/test/read.cgi/shar/1054887959/


0010生徒弐顎
垢版 |
04/06/12 18:19ID:wgfVLhUX
先生!コンパイラの準備とウィンドウ表示までできました
次は何したらいいですか?

>>4
先輩!RADツールだとBMPの表示まではソース描かなくてよさそうな気がしますよ!いいんですか?
それとVS.NET +VBってVB.NETのことですか?

>>5
7月22日発売

>>6
もちろんです!HSP利用者も一緒に課題をクリアしていきまっしょい!

>>7
OpenGLみたいなものですか?
0011名前は開発中のものです。
垢版 |
04/06/12 18:41ID:g4kSpUbw
「何したらいいですか?」って、おまいは何がしたいんですか。
「ゲームが作りたい」だけじゃ漠然としすぎてる。
0012生徒弐顎
垢版 |
04/06/12 19:35ID:wgfVLhUX
>>11

>1 名前:名前は開発中のものです。 投稿日:04/06/10 18:05 ID:VshiFFV8
>ゲームに必要な要素を先生が出してくれます

>その課題をクリアしていく講習会です

このゲームって選べるの?
じゃあ、リアルタイムストラテジーでお願いします。
「ゲームが作りたい」ってのは暗黙の了解かもしれませんが誰も言ってないですよ。
適当なこと言わないでください。
0013名前は開発中のものです。
垢版 |
04/06/12 19:57ID:g4kSpUbw
「ゲームが作りたい」んじゃないの?
「ゲームは作りたくない」けど「ゲームに必要な要素」とやらをクリアしたいの?

何がしたいの?
0014生徒弐顎
垢版 |
04/06/12 20:05ID:wgfVLhUX
>>13
>>1に聞いてくださいよ(;´Д`)
あげてもない足を取られても対応に困りますよ
ゲームを作るのを見てるだけのスレだったら帰りますよ
0015名前は開発中のものです。
垢版 |
04/06/12 20:09ID:g4kSpUbw
>>14
喧嘩を売ってるわけじゃないのでごめんなさい。

「ゲームに必要な要素」が何を指しているのかさっぱりワカラネーと思ったもので。
0016VshiFFV8 ◆g28oS.E2zA
垢版 |
04/06/12 20:10ID:w+wQoi+K
目標は「最終的にゲームが作れるようになる」です
0020名前は開発中のものです。
垢版 |
04/06/12 20:29ID:g4kSpUbw
ツクールXPで一本作って、それを元にどんどん下に落としていくのはアリかも。
「ゲームに必要な要素」は、ツクールを解析してそれを実装することで体現できる。
0021生徒弐顎
垢版 |
04/06/12 20:33ID:thSusfHE
>>15
こちらこそごめんなさい
売り言葉に買い言葉で熱くなってたようです

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

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

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

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



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

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

妄想してみました
0024受験生 ◆3VUXqvbfSY
垢版 |
04/06/12 23:49ID:g0Zkl09e
>>20
ツクールで作り始めると…
プログラミングに移行できずに、終わる予感。
0026名前は開発中のものです。
垢版 |
04/06/13 00:59ID:QEF1CnCV
まあジャンルは様々なので、共通項目からまったりと考えますか。

課題1、ゲーム作成に用いるプログラミング言語を決める
0028生徒弐顎
垢版 |
04/06/13 15:45ID:3gckKy9M
>>22
先生!はやく次にどうすればいいのか指示ください。
>>11君と同じ疑問はみんな持ってると思います!
ていうか一晩考えたのですがやっぱり>>11君はスレも読まずにケンカを売ったようにしか見えません!!

一応、>>1>>3>>22の中で「新規ウィンドウを開いて、画像を表示させる」をやりたいっぽいのは伝わってきましたが
先生役をやる気がないなら早めのカミングアウトをお願いします。
コンパイラを用意させるとかソースを提出させるとかアイデアはいくつかあがってますが
先生が反応しないとどうしようもないので。
0029名前は開発中のものです。
垢版 |
04/06/13 16:04ID:QEF1CnCV
>>1には
>ゲームに必要な要素を先生が出してくれます
とある。"出してくれます"なので先生役はやらないと思われ
0030生徒弐顎
垢版 |
04/06/13 16:56ID:3gckKy9M
失敬、先生は>>2氏でしたね。
先生!コンパイラの用意できましたよ。
00314 ◆3VUXqvbfSY
垢版 |
04/06/13 17:01ID:QH1r5fl5
ん…ランダムを初期化して
ランダムを使い、1〜9までの数当てを作ってみましょう。
0032生徒弐顎
垢版 |
04/06/13 20:20ID:3gckKy9M
どこかで見たような課題ですね。
とりあえず言語はC/C++で問題ないですか?
採点のポイントをあらかじめ教えてくれるとやりやすいのですが。
00334
垢版 |
04/06/13 20:35ID:QH1r5fl5
何でもOKですよ。
どの環境でも大差ないですから。
0035生徒A
垢版 |
04/06/14 12:48ID: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;

}
00364 ◆3VUXqvbfSY
垢版 |
04/06/14 15:21ID:6UsS7uqF
多分OKです。
今携帯から何で、確認できませんがw

ただし。randomに同様な確からしさを求めるならば、rand()*10/RAND_MAXの方が良いでしょう。
rand()%10だと…帰ってきた値とrandが返す最大値の関係が無視される事となり、従って、返す値が同様に確からしいかを確認できなくなります。
0037名前は開発中のものです。
垢版 |
04/06/14 16:42ID: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.
こんなんでどうでしょう
00394 ◆3VUXqvbfSY
垢版 |
04/06/14 16:57ID:6UsS7uqF
やば…
>>35
二回ランダム使ってるよ…、ていうか、当てようがねぇ…
何か変数用意して、一回代入したら、もうランダム使っちゃダメだよ。毎回違う値がでるw

>>38
出来てますよ…うん。
0043名前は開発中のものです。
垢版 |
04/06/14 21:10ID: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>
00454 ◆3VUXqvbfSY
垢版 |
04/06/14 23:53ID:6UsS7uqF
>>35
凄く気になったんで、追記します。
何故time.hをインクルードしてるんですか?
00474
垢版 |
04/06/15 00:39ID:OmG1F0sQ
ごめん。俺がアホだった。
許して…


(^〜^)oO(酒は飲めども飲まれるな…酔って書くんじゃ無かった…)
0049生徒A
垢版 |
04/06/15 03:34ID: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;
}
0050名前は開発中のものです。
垢版 |
04/06/15 11:35ID:fWp+ET9z
>>49
そういうことじゃない。
お前が今日やったことを書き並べていくだけの自己満足スレが邪魔だと言ってるだけ。
レベルが低くて見たところで誰も得しないし、
挙句に態度も無茶苦茶悪い。
あんた何様のつもりだ。
0052名前は開発中のものです。
垢版 |
04/06/15 15:08ID:VVOVJCXy
まぁ、実は云うとこのスレは重複スレであって

  【目標ない奴】おまいらに課題を与える。【集まれ】
  http://pc5.2ch.net/test/read.cgi/gamedev/1026148930/l50

無難に考えれば、上記スレに誘導ということになるわけだが
>>50のような排他厨房が出現して余計な真似をしやがるので
ここはしばらく様子を見守るとするか。
0054名前は開発中のものです。
垢版 |
04/06/15 15:26ID:fJJvgQKc
旧課題スレはリレーで作品を作るスレ
このスレは先生がお題を出して採点するスレ

そこは間違えるなよ
0056名前は開発中のものです。
垢版 |
04/06/15 15:34ID:VVOVJCXy
ちなみに、俺は旧スレでソースを出していた者だが
別にリレーするスレではなかったので、その意味での
拘束条件はないと思っていい。
0057名前は開発中のものです。
垢版 |
04/06/15 15:53ID:jTaFbPw8
>>52-53
http://pc5.2ch.net/test/read.cgi/gamedev/1026148930/l50

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

今、あちらのスレのログを読んでます。とても勉強になります。
0059名前は開発中のものです。
垢版 |
04/06/15 16:47ID:fJJvgQKc
こういうスレが好みならいっぱいあるぞ
もう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/
0060名前は開発中のものです。
垢版 |
04/06/15 16:52ID:fJJvgQKc
あまりレスがつかなかったスレは貼らなかったが実際はもっと乱立してる
これ以上の乱立を防ぐためにもローカルルールで告知しておいたほうがいいんじゃないか?
006261
垢版 |
04/06/15 17:32ID:dz0re3XK
途中で送信しちゃった。えと、向こうのスレでガンバリまつ!
0063名前は開発中のものです。
垢版 |
04/06/15 17:36ID: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"あったりー!"
00644 ◆3VUXqvbfSY
垢版 |
04/06/15 20:16ID:OmG1F0sQ
>>63
はい、正解です。



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

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

とりあえず、小さい方から1000個の素数を見つけるプログラムを作成してください。
006663 ◆xdaKt6k1XI
垢版 |
04/06/15 23:24ID: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

ここまで作ってたらなんだか自分で何作ってんのかわからなくなりますた。
作り直します。
0067生徒A
垢版 |
04/06/15 23:36ID:9w200AiB
>50

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

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

高校の時の先生におおまかな考え方だけ教えてもらったきりですが
0068生徒A
垢版 |
04/06/16 00:25ID: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);
}
0070名前は開発中のものです。
垢版 |
04/06/16 01:41ID:qW9lKpJw
>>68
間違ってる希ガス。
1000までの数の中の素数を上げるんじゃないですよん。
変数chknumが必要かもう一度考え直してみなはれ。(こっちのが見やすいかもしんないけど)
00714 ◆3VUXqvbfSY
垢版 |
04/06/16 08:42ID:XOSz7qTz
模範解答は用意しましたよ。
でも、発表は答えが出そろってからにします。
0072名前は開発中のものです。
垢版 |
04/06/16 09:07ID:E0t6wJPT
>>70
最初、オレもそう思ったけど、
問題には、小さい方から1000個って書いてある悪感。

for(j=0;count<1000;j++){
これが紛らわしい。
0073名前は開発中のものです。
垢版 |
04/06/16 14:41ID:Zcc4AjKX

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

数当てゲーム
http://gamdev.org/up/img/706.zip
0074生徒(C++)
垢版 |
04/06/16 15:06ID: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;
}
00754
垢版 |
04/06/16 15:59ID:XOSz7qTz
参加は嬉しい限りですよね >>1さん
でもむしろ…先生役やりたい人誰か居ない?
激しく募集中です…
0076名前は開発中のものです。
垢版 |
04/06/16 18:33ID: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>
0081名前は開発中のものです。
垢版 |
04/06/17 00:44ID: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を出すべきか出さざるべきか小一時間悩んだ…
008263 ◆xdaKt6k1XI
垢版 |
04/06/17 07:40ID:wIlIrMhO
>>78
結構難しそうっすね。
>>79
2から自分自身のまで順番に割ってって計算結果が1以外だったら自分自身の数を1足してやりなおして、計算結果が1だけだったらその数を表示するってようにしたんですが。
0083名前は開発中のものです。
垢版 |
04/06/17 10:39ID: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
0085名前は開発中のものです。
垢版 |
04/06/19 14:57ID: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");
}
}
暇なんで参加
008685
垢版 |
04/06/19 14:58ID:W8craWnM
unsigned long cun; とcun++;
は無視で <(_ _)>
0088生徒A
垢版 |
04/06/19 19:27ID:GZf8LDr8
そういえば、新しい課題って無いの?
0089名前は開発中のものです。
垢版 |
04/06/19 20:08ID:hqj9xu9C
素数とかはロジックを考えるのは大切だけど、できてもあまり嬉しくないからなぁ。
かといって特定の分野に特化すると、それぞれの分野には初心者スレがあるし。
「適当なウィンドウを作成してsin波形を描画する」あたりはどう?
00904 ◆3VUXqvbfSY
垢版 |
04/06/19 21:47ID:wn6hjF1m
良いねその課題!…ってチョットレベル上がり杉な…
…まあ良いか…
でもまずは、640*480のウィンドウに
(0,0)320*240の赤い四角を描いてください。
00914 ◆3VUXqvbfSY
垢版 |
04/06/19 22:17ID: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++;
}
009263 ◆xdaKt6k1XI
垢版 |
04/06/19 22:23ID:D2QJG2Dd
素数は無理でしたが・・・
>>90の課題はできました。

WIDTH 640,480
COLOR 255
BOXF 320,240,1,0
stop
00944
垢版 |
04/06/19 22:25ID: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++;
}
}
0095生徒A
垢版 |
04/06/20 04:33ID: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;
}
0096生徒A
垢版 |
04/06/20 04:33ID: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);}
}

0097生徒A
垢版 |
04/06/20 04:36ID:9LoKJ5Oe
正直、4行で実現できるHSPがうらやましいと思った…
0098名前は開発中のものです。
垢版 |
04/06/20 04:46ID:l91pLvEB
ここはJavaでは参加できないですか?
0100名前は開発中のものです。
垢版 |
04/06/20 07:50ID: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>
0101名前は開発中のものです。
垢版 |
04/06/20 07:51ID: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>
0102名前は開発中のものです。
垢版 |
04/06/20 11:15ID:B7NIG/G/
画面を黒でクリアする方法ってこれでいいんですか?
void Clear(void)
{
SelectObject(hDC , GetStockObject(BLACK_BRUSH));
Rectangle(hDC , 0 , 0 , WIDTH , HEIGHT);
}
0103名前は開発中のものです。
垢版 |
04/06/21 12:47ID:X4sdLydq
>>102
イイともワルいともいえないというか、
ウィンドウを更新するとか必要だけど、まぁ、そんな感じ。

つーか、先生はどこだ?!
01044 ◆3VUXqvbfSY
垢版 |
04/06/21 13:24ID:xh+2kWgx
ココw
…まあ、VCの人が出来てんだから、sinの課題も可能か…

sinの方の制作もどうぞ。

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

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

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

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

まあ、どちらも一気にはつくりませんw
方向性が決まったら、ボトムアップに作りましょうw
0108名前は開発中のものです。
垢版 |
04/06/21 19:41ID:/2qctf8W
テトリスは専用スレがあるし、JavaScriptで7行に収まったりと、
ネタが出尽くしているので飽きてます。
0109名前は開発中のものです。
垢版 |
04/06/21 19:57ID:8Xx3uQUF
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が違うゲーム(夢工場?)に見えるけどなんなんだろ
0111生徒A
垢版 |
04/06/21 21:54ID: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);}
}

0112生徒A
垢版 |
04/06/21 21:57ID:jNWjDlXF
私は、インベーダーの方が良いと思います。
0113名前は開発中のものです。
垢版 |
04/06/21 22:10ID:MJraUy6q
本当に一からやるんだったら、まだまだ基礎的なことはたくさんあるですよ。

o 描いた四角を横に動かし続ける
o 画面の端で跳ね返るようにする
o 2つの四角を描いてを横に動かし続ける(速度が違うようにする)
o 四角同士が衝突したら跳ね返るようにする
o 四角を斜めに動かす
o 斜めに跳ね返るようにする
o 丸を描く
o 丸同士を当てたら跳ね返るようにする(ビリヤードみたいなの)
o etc, etc, etc...
0117生徒A
垢版 |
04/06/21 22:33ID:jNWjDlXF
sin関数を自前で用意するとなると、テイラー級数展開?が必要になる気がしたんですが…

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

sin(x) = x-(x^3/3!)+(x^5/5!)-(x^7/7!)+…
0118名前は開発中のものです。
垢版 |
04/06/21 23:47ID:8Xx3uQUF
赤い四角、Delphiです
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientWidth:=640;
ClientHeight:=480;
Canvas.Brush.Color:=clRed;
Canvas.FillRect(Rect(0,0,320,240));
end;
0119名前は開発中のものです。
垢版 |
04/06/22 00:43ID: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;
01204 ◆3VUXqvbfSY
垢版 |
04/06/22 06:00ID:tegmloOZ
>>113
勿論、選んだ方の基礎からやっていきますから。大丈夫です。ただ、大まかな指針が欲しいだけで。

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


>>ALL
マジで、先生増やしてよ〜。僕一人じゃ不安だよ〜
0123名前は開発中のものです。
垢版 |
04/06/22 13:59ID:z3uDPhKo
階級制にしようぜ!

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

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

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

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



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

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

たまに天才がいて、Tシャツ短パンで一直線にエベレストに登頂したりするけど
そういうやつ以外は「大佐のくせにそんなことも知らないのかよ。プッ」って言われるのがオチかも。
0125生徒BLUE@入隊希望
垢版 |
04/06/22 23:32ID: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;
}
0127生徒BLUE@入隊希望
垢版 |
04/06/23 15:21ID: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);
}
0128名前は開発中のものです。
垢版 |
04/06/23 18:23ID:XpSZny8Q
VBも参加していいですか?
0129名前は開発中のものです。
垢版 |
04/06/23 19:25ID:mQ2LYzxk
mingwとかSDLとかHSPとかSDKとかSDLPerlとかが一体なんなのか
理解できない漏れ…

とりあえずHelloWorldはできたけどウインドウ表示なんて壁高杉
どうすればいいんだよう…
01304 ◆3VUXqvbfSY
垢版 |
04/06/23 20:11ID:YwmthHB/
>>128
ぜんぜんOK!HSPが居るんだから大じょーぶ。

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

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

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



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

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

とか
0131名前は開発中のものです。
垢版 |
04/06/23 20:12ID:bTZutcV4
真に初心者であれば分からないのは当然。
とりあえず分からない単語を列挙すれば、誰か暇な人が答えてくれるかもしれない。
0133生徒BLUE@入隊希望
垢版 |
04/06/23 22:23ID: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);
}
0134名前は開発中のものです。
垢版 |
04/06/24 00:34ID:9IgBi+UW
>>130 ありがとうございます。C言語でも出来ますけど、あまり自信が無いんです…。

VBでキャラの移動と弾の発射だけやってみました。
←→キーで左右移動、Z or Spaceキーで弾の発射です。
http://gamdev.org/up/img/737.lzh
0137生徒BLUE
垢版 |
04/06/24 23:20ID:kfww3pCy
次はいよいよインベーダーですか

参考にしたサイト:http://www3.omn.ne.jp/~renas/Win32/
今回新しく使った関数: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;
}
01394 ◆3VUXqvbfSY
垢版 |
04/06/25 07:09ID:va8qXu2v
>>134さん
まずは、sinからお願いします。
あんまり爆走すると、先生にしますよ。
むしろ、なって欲し…


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


参考程度に
VC++ GetKeyState();//バーチャルキーの状態取得。
C++ getch();//標準入力
VB _KeyDown(key%,Shift%)//keyにキーコードが返る
HSP getkey p1,p2//p2のキーが押されていると、p1に1が代入される。
014163 ◆xdaKt6k1XI
垢版 |
04/06/25 23:47ID:BZ++Tyug
動かせました。

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
0143生徒142
垢版 |
04/06/26 03:19ID:NxwPZgd2
連投
プロシージャのみ貼り付けてみます。

描画がカクカクします、再描画の処理はどうすればきれいに動くのでしょうか?
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;
}
0144名前は開発中のものです。
垢版 |
04/06/26 04:14ID:sMwugFr/
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;}}
0145生徒142
垢版 |
04/06/26 04:30ID:NxwPZgd2
>>144
すみません、ソース書いた時は{使ってなかったもので
ここに貼り付ける時に急遽書きました。

iが消えたり;の前に}書いたり間抜けなことになってますね。
次からはよく確かめます
0146134
垢版 |
04/06/26 05:20ID:1CizLySr
>>139

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

http://gamdev.org/up/img/743.lzh
0147名前は開発中のものです。
垢版 |
04/06/26 08:40ID:K/WyEUE8
<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>
0149名前は開発中のものです。
垢版 |
04/06/26 13:26ID:wteFDikq
Wikiなんかじゃなくて専用のHP作ったら?
ソース貼るのに不憫だろ
0150名前は開発中のものです。
垢版 |
04/06/26 13:31ID:jYUMekjC
>>149
神キタ━━━━━━(゚∀゚)━━━━━━ !!
tabとか半角スペースめんどいもんな
ひょっとして過去にうぷされたソースとかも整形してうぷしてくれれば
うれしいけどそれは望みすぎかな
急がなくていいからがんがれ!
0152Ruby@課題1数当て
垢版 |
04/06/26 14:32ID:jYUMekjC
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
0153149
垢版 |
04/06/26 15:26ID:wteFDikq
俺かYoΣ(´□`;)
0154Ruby@課題2素数
垢版 |
04/06/26 16:17ID:jYUMekjC
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"
0155Ruby/SDL@課題3赤い四角
垢版 |
04/06/26 17:32ID:jYUMekjC
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
0156Ruby/SDL@課題4sin波形
垢版 |
04/06/26 18:50ID:jYUMekjC
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
0157Ruby/SDL@課題5キー入力
垢版 |
04/06/26 20:12ID:jYUMekjC
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
0159名前は開発中のものです。
垢版 |
04/06/26 21:34ID:jYUMekjC
Ruby/SDLインストール方法(Windows)

1.とりあえずコレをダウンロード
http://www.kmc.gr.jp/~ohai/rubysdl/rubysdl-0.9.2-win32bin-pack.lzh

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

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

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

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

公式サイト
http://www.kmc.gr.jp/~ohai/index.html
チュートリアル
http://www.kmc.gr.jp/~ohai/rubysdl_intro.html
0161名前は開発中のものです。
垢版 |
04/06/26 23:49ID:PaYEz6W8
キー入力、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;
0162名前は開発中のものです。
垢版 |
04/06/27 01:17ID:m6T91X5d
>>149
インデントを保ったままソースをうぷしたいなら
ソース置き場やゲムデヴあぷろだをを利用させてもらう手もある
というかこのスレはなぜ貼り付けるのが主流なんだw

ソース置き場
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/index.html
ゲムデヴあぷろだ
http://gamdev.org/up/

>>151
うむ、萌えプロ目指してるからな
参考1) http://www.bk1.co.jp/cgi-bin/srch/srch_message.cgi/40dd9dc0e029f0104573?aid=p-sf0023&tpl=genre/07/softbank.html
参考2) http://oshimago.chu.jp/personal/archives/DSC00117.JPG

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

>>160
おまいらも開発環境や実行環境ぐらい書けよ
ところでRubyって宣伝と思われるほどマイナーなのか?
ちなみにRuby暦1日(もう2日目だな)なので優しくしてくれな
0163名前は開発中のものです。
垢版 |
04/06/27 02:56ID:fYoguU/V
>>162
>このスレはなぜ貼り付けるのが主流なんだw
ダウソして解凍してって面倒なので結構貼り付けいいと思うんだが
普通のレスが見にくい&改行制限が問題だな

2ch型掲示板を設置して生徒一人につき1スレ使ってソースを貼り付けていくっていうのはどうでしょ?
TABの問題が残るかな?
0164名前は開発中のものです。
垢版 |
04/06/27 06:21ID:6ucDfgWE
>>163
神キタ━━━━━━(゚∀゚)━━━━━━ !!
ダウソとか解凍めんどいもんな
ひょっとして過去にうぷされたソースとかもスレ立てて貼りつけてくれれば
うれしいけどそれは望みすぎかな
急がなくていいからがんがれ!
0167129
垢版 |
04/06/27 10:57ID:BWzYLsUd
今更ながらやっとwindows.hが読める?環境が整ったよ…
>>130-132さんありがとう。

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

自分だけ違う次元ですね…。鬱。
0168名前は開発中のものです。
垢版 |
04/06/27 12:50ID:1xxqplwj
>167
SDLとかCygwinとかDelphiとか気にしなくても良いから
とりあえずborland c++ コンパイラ用意できたということで
Cのお勉強をしてみましょうよ
0169167
垢版 |
04/06/27 13:15ID:BWzYLsUd
>>168
SDLとかいれたほうが楽なのかなと思ったのですが…
やっぱりいきなり窓プログラミングにぶっ飛ぶより基礎からじっくりやるべきですか
基礎でぬくぬくしてられないと思ったもので…反省。
0170課題2@D言語
垢版 |
04/06/27 13:29ID:TlIkOaxm
まだβ版だけど先取りして勉強。
素数判定。

const int MAX_COUNT = 1000;

int main() {
    int   num,check,count;
    
    printf("1\n");
    count = 1;
    num = 2;
    while (count<MAX_COUNT) {
        for (check=2;check<num;check++) {
            if (num%check==0) break;
        }
        if (check==num) {
            printf("%d\n",num);
            count++;
        }
        num++;
    }
    return 0;
}
0171名前は開発中のものです。
垢版 |
04/06/27 17:32ID:m6T91X5d
>>163
ソース貼り付けのメリットも捨てがたいな
テキストファイルを扱えるあぷろだがあれば閲覧もダウンロードもできて楽かもしれん
スレにソース貼りまくりも妙に楽しいんだが

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

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

2chでインデントつける方法は教えてもらってきた
http://pc5.2ch.net/test/read.cgi/tech/1088022524/83-92

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

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

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

>>生徒BLUE氏
BRUSHの解放忘れがあるよ
0172課題2@D言語
垢版 |
04/06/27 17:41ID:TlIkOaxm
>>171
1と自分以外で割れない数が素数じゃないの?
1と1以外で割れない数だからと思って"わざわざ"付け足したのに orz
0174名前は開発中のものです。
垢版 |
04/06/27 19:00ID:PY8053hi
>>169
実際にはWindowsのゲームプログラミングはそれほど難しくないよ。
内部にゲーム画像を作成してキー入力などに応じて更新、それを
描画するだけだからね。ウインドウプログラミングの「流れ」を
掴めれば、パズルゲームやADV/RPGは比較的簡単に作れる。

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

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

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

本当に「基礎」をやるなら、高レベルのライブラリではなくまずSDK
ベースのWindowsプログラミングで「Windowsのプログラムの流れ」を
しっかり追った方が良い。
0176生徒A
垢版 |
04/06/27 19:26ID:WIo25CTE
しばらく来ない内にすごい事になってるよ…もう付いていけない
0177生徒BLUE
垢版 |
04/06/27 22:04ID:b0jvqBNF
あまりソースを貼り付けるのは荒らしっぽい?のでうぷろだにしました
今はまだ170行ですがインベーダーなら500〜1000ぐらいにたぶんなるので
そろそろ切り替えようと思っていたところです

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

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

課題5キー入力
http://gamdev.org/up/img/759.zip
0178名前は開発中のものです。
垢版 |
04/06/27 22:28ID:6fdveQpW
画像だけなら簡単だが、音をつける段階で挫折しそうだ。

ダイレクトXを使わずに、WAVを複数同時に鳴らすことがどれほど大変か・・・
0179名前は開発中のものです。
垢版 |
04/06/27 22:41ID:PY8053hi
>>178
そうだね。
「自分でPCMバッファを作成し波形を合成、リアルタイムに出力」
なんてことになると結構しんどい(面白いとも言うがw)・・・。

まあ、画像でも同じような場面(自分で管理するバッファを処理し
ながらのリアルタイム出力)はあるわけだが。
0181名前は開発中のものです。
垢版 |
04/06/27 22:58ID:qWAk5Epz
>>177
> 0x8000の意味とかまだよくわかりませんけれど
「ANDでマスクとる」とかはわかる?

定数書いちゃダメとか、staticって書くようにするとか、
拡張子がcppなのにC言語風じゃん!とか、
バックバッファあたりは毎回生成&破棄しなくても最初に一度だけ
作成してしまった方が処理の無駄がないとか、ブラシとペンも。
0184副担任
垢版 |
04/06/27 23:48ID:sIosK61q
先生が帰ってくるまで漏れが面倒みましょうか?
0185ぷち
垢版 |
04/06/28 00:10ID:W5zBmX8i

0187名前は開発中のものです。
垢版 |
04/06/28 04:46ID:AKJFcicb
>>184
お願いします。
ソース貼っても、アドバイス求めても生徒ばっかりでレスなくて(´・ω・`)ショボーンです。
0188生徒A
垢版 |
04/06/28 06:10ID:D8BhR1kS
なんとか徹夜して6時間ほど粘ってキー入力まで行ったけど、限界が近い…

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

http://gamdev.org/up/img/762.lzh
01894 ◆3VUXqvbfSY
垢版 |
04/06/28 06:20ID:kLFrYp0l
すみません皆様…
ミニ死の行進してました…

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

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


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


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


次の課題:
当たり判定。
先ほどの、「動く赤い四角」を避けゲーに改造しましょう
敵は 敵x = rand() % 640;//rand()*640/RAND_MAX
で…敵y++;のように動く単純な敵です。
当たったら終了と言う仕様で…
0190副担任
垢版 |
04/06/28 10:23ID:HdfIcXTc
漏れは先生と考え方が違うので一応書いておきます。うざかったらクビにしてください。>先生
・動けば正義(いい設計はできたほうがいいけどまだ求める段階ではないと思う)
・ソースは固めてどこかにアップする(バックアップ、成果としてわかりやすい)
・バイナリは付けて欲しい(開発環境を全てそろえるのは難しい)
・課題によけいなものは付けないでください(初心者が提出したソースを参考にしたとき、必要な機能のみが実装されていたほうがいい)

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

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

というわけで分からんことがある人は漏れが面倒みます。勉強しながら…。orz
0191副担任
垢版 |
04/06/28 10:26ID:HdfIcXTc
訂正すまそ。
× ・課題によけいなものは付けないでください(初心者が提出したソースを参考にしたとき、必要な機能のみが実装されていたほうがいい)
○ ・提出したソースにはよけいな機能は付けないでください(初心者が提出したソースを参考にしたとき、必要な機能のみが実装されていたほうがいい)
0192名前は開発中のものです。
垢版 |
04/06/28 10:28ID:Ten9Dr/x
>>188
簡単だが添削。ウィンドウプロシージャだけ。

DeleteObjectの2行はWM_PAINT内でやってはダメ。
WM_PAINTは何度も呼ばれるため、最初の描画が終了した時点で、作ったペンやブラシは
無効になるため、色がつかなくなる。DeleteObjectするならWM_DESTROY内で。
ちなみにCreateしたものはちゃんと削除するのがお約束。

SelectObjectしたものに関しても、元に戻しておくのが一応の作法。
holdobj = SelectObject(hdc, hobj);// 以前のオブジェクトハンドルを保存
// 何か処理
holdobj = SelectObject(hdc, holdobj);// 以前のオブジェクトに戻す

何故か赤く塗りつぶされないというのは、ディスプレイDCに複数回描画を行っていて、それが
ちらつきとして現れるから。こういう場合はオフスクリーンに描画し、最後にディスプレイDCに
BitBltする。
0193名前は開発中のものです。
垢版 |
04/06/28 10:30ID:Ten9Dr/x
ちと訂正・・orz

×holdobj = SelectObject(hdc, holdobj);// 以前のオブジェクトに戻す
○SelectObject(hdc, holdobj);// 以前のオブジェクトに戻す
0195生徒A
垢版 |
04/06/28 16:36ID:D8BhR1kS
>>194 190じゃないですが、もともとは2進数という意味だと思います。
だから、この場合は、1と0の組み合わせで作られた機械語データ
(実行ファイル)の意味だと思います。
他にも、テキストデータ以外のファイル全てを指す事もあります。
0196生徒A
垢版 |
04/06/28 16:40ID:D8BhR1kS
>>192 ありがとうございます。
DeleteObjectのやり方は分かったのですが、
オフスクリーンのやり方がちょっとよく分からないです。
具体的には、オフスクリーンの作成方法です。
0198副担任
垢版 |
04/06/28 17:37ID:HdfIcXTc
>>194
Windowsの実行ファイルのことです。"〜.exe" ってやつ。
C言語とかはコンパイルして実行ファイルを作らないとプログラムが動きません。
HSPはインタプリタ言語なので実行ファイルは作らなくていいみたいですね。

>>195
正解です
0199Ruby@課題6当たり判定
垢版 |
04/06/28 18:32ID:1FRiXQWF
require 'sdl'
SDL.init( SDL::INIT_VIDEO )
screen = SDL.setVideoMode( 640, 480, 16, SDL::SWSURFACE )
x=(639-32)/2
y=(479-32)/2
enemyX=rand(639-32)
enemyY=0
loop do
while event = SDL::Event2.poll
case event
when SDL::Event2::Quit
exit
end
end
SDL::Key.scan
y -= 1 if SDL::Key.press?( SDL::Key::UP )
x += 1 if SDL::Key.press?( SDL::Key::RIGHT )
y += 1 if SDL::Key.press?( SDL::Key::DOWN )
x -= 1 if SDL::Key.press?( SDL::Key::LEFT )
x=0 if x<0
x=(639-32) if x>(639-32)
y=0 if y<0
y=(479-32) if y>(479-32)
enemyY=enemyY+1
enemyY=0 if enemyY>479
if (x-enemyX).abs<32 and (y-enemyY).abs<32 then
exit
end
0200Ruby@課題6当たり判定
垢版 |
04/06/28 18:33ID:1FRiXQWF
screen.fillRect( 0, 0, 640, 480, [ 0, 0, 0 ] )
screen.fillRect( x, y, 32, 32, [ 255, 0, 0 ] )
screen.fillRect( enemyX, enemyY, 32, 32, [ 0, 255, 0 ] )
screen.updateRect( 0, 0, 0, 0 )
end

課題6当たり判定(実行ファイル付き)
http://gamdev.org/up/img/764.zip

【Rubyスクリプトを実行ファイルにする方法】
http://exerb.sourceforge.jp/ からExerbををダウンロード
レシピファイルを書く
add_ruby_script[TAB](スクリプト名)
add_extension_library[TAB](ライブラリ名)[TAB](パスを含めたライブラリ名)
例)
add_ruby_script[TAB]collision.rb
add_extension_library[TAB]sdl.so[TAB]sdl.so

※注意
[TAB]はTABキーで入力してください
通常のエディタだと空白と判別できませんので注意

Exerb添付ドキュメントは旧式の書き方になっているようです
サンプルは新しいものだったのでそちらを参考にしました
02034 ◆3VUXqvbfSY
垢版 |
04/06/28 21:39ID:kLFrYp0l
参考程度に…
オフスクリーン:
変数宣言 前略

hdcOFF=CreateCompatibleDC(hdcON);//空の描画ハンドルを作る
CopyBitmap=CreateCompatibleBitmap(hdcON,640,480);//表のウィンドウと互換のビットマップをつくる。
SelectObject(hdcOFF,CopyBitmap);//んで、設定

中略

BitBlt(hdcON,0,0,640,480,hdcOFF,0,0,SRCCOPY);//裏に書かれた内容を、表に上書きする。

後略


こんな感じ。…VC++だけでごめんなさい…
0204LGP@課題1数当て
垢版 |
04/06/28 23:47ID:1FRiXQWF
スクリプト組はあまり時間もかからず有利なので
複数言語同時習得を目指してみます

CH = G@SETUP( 640 , 480 , 16 , 1 )
RANDSET(SYSTIME())
RN = RAND()%9+1

G@PRINT(CH,0,0,"1〜9の数を入力せよ")
G@FLIP()
LOOP
I@KEYGET2( )
IF I@KEYBTN2(1)=2 THEN
    ANS=I@KEYBTN2(0)-1
    IF ANS=RN THEN
        SYSEXIT()
    ENDIF
    IF (ANS>0) AND (ANS<10) THEN
    N=N+1
    G@GDIBOXFULL( CH , 0, 100, 640, 480 )
    G@PRINT(CH,0,100,"はずれ"+STR(N)+"回目")
    ENDIF
    G@FLIP()
ENDIF
S@WAIT()
ENDLOOP

LGP@課題1数当て(実行ファイル付き)
http://gamdev.org/up/img/767.zip
0205名前は開発中のものです。
垢版 |
04/06/29 06:26ID:Ngmzz0xf
課題6

実行方法:@メモ帳にコピペ、A名前をつけて保存でinvader.html、BブラウザにD&D

<html><head><title>Invader Game?</title><style type="text/css"><!--
.self{background-color:#FF0000;position:absolute;width:32px;height:32px;}
.enemy{background-color:#0000FF;position:absolute;width:32px;height:32px;}
--></style></head>
<body onLoad="m()"onKeyDown="k[event.keyCode]=1"onKeyUp="k[event.keyCode]=0">
<div id=c class=self></div><div id=e class=enemy></div>
<script language="Javascript"><!--
var alive=true,timerID,k=[],x=304,y=448,eX,eY= 480;
var charElm=document.getElementById('c'),enemyElm=document.getElementById('e');
function m(){clearTimeout(timerID);
x+=k[37]&&x?-8:k[39]&&x<608?8:0;y+=k[38]&&y?-8:k[40]&&y<448?8:0;
charElm.style.left=x;charElm.style.top=y;
eY+=8;if(eY>480){eY=-32;enemyElm.style.left=eX=Math.floor(Math.random()*640);}
enemyElm.style.top=eY;
if(Math.abs(x-eX)>32||Math.abs(y-eY)>32)timerID=setTimeout(m,30);}
//--></script></body></html>
0206LGP@課題2素数
垢版 |
04/06/29 09:54ID:OSp1CFcf
FH=F@OPEN("PrimeNumber.txt" , 3 )
F@WRITES( FH , STR(2) )
COUNT=COUNT+1

I=3
WHILE COUNT<1000
    SOSU=-1
    FOR J=3 TO I/2 STEP 2
        IF I%J=0 THEN
            SOSU=0
        ENDIF
    NEXT
    IF SOSU=-1 THEN
        F@WRITES( FH , STR(I) )
        COUNT=COUNT+1
    ENDIF
    I=I+2
    S@WAIT()
ENDWHILE

F@CLOSE( FH )
0208名前は開発中のものです。
垢版 |
04/06/29 18:46ID:vpUdLCjy
>>207
自分で作ったチャットソフトで皆と繋げられたら楽しそうな予感!
0209名前は開発中のものです。
垢版 |
04/06/29 21:15ID:OSp1CFcf
もの凄い勢いで進行してるのでまとめの意味もあって統計をとってみました
抜けてる人がいたらごめんなさい

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

まとめページ
http://gamdev.org/w/?%5B%5B%A1%DA%BD%E9%BF%B4%BC%D4%A1%DB%B2%DD%C2%EA%A4%F2%A5%AF%A5%EA%A5%A2%A4%B7%A4%C6%A4%A4%A4%AF%A5%B9%A5%EC%A1%DA%B9%D6%BD%AC%B2%F1%A1%DB%A4%DE%A4%C8%A4%E1%5D%5D
アップローダ
http://gamdev.org/up/
0211名前は開発中のものです。
垢版 |
04/06/29 22:14ID:OSp1CFcf
>>210
混同してました
2人も先行者がいたのかorz
修正しました
HSPのほうはもうやらないの?

JavaScript         ****** 6
Ruby..            ****** 6
生徒A(Win32API).     ***** 5
生徒BLUE (Win32API).  ***** 5
Delphi            ***** 5
D言語            ** 2
LGP             ** 2
x≠先生かつx=生徒 ⇒ x=俺(Win32API) 測定不能
VB 測定不能
0212LGP@課題3赤い四角
垢版 |
04/06/29 22:53ID:OSp1CFcf
//640x480、16ビット色、ウィンドウ画面
CH = G@SETUP( 640 , 480 , 16 , 1 )
//ブラシを赤色に設定(RGBはそれぞれ0〜1.0で設定)
G@GDISETBRUSH( 0 , 1.0 , 0 , 0 )
//四角を描画
G@GDIBOXFULL( CH , 0, 0, 320, 240 )
//フリップ
G@FLIP()
//無限ループ
LOOP
  S@WAIT()
ENDLOOP
0213生徒BLUE
垢版 |
04/06/30 00:29ID:HYWm3For
>>181
>「ANDでマスクとる」とかはわかる?
はい、この場合は2進数に直して一番左のビット以外を全部0にするってことですよね
MSDN読んだりあれからさらに調べてみたので前よりはちょっとわかったのですが
左端のビットが1ならボタンが押されているという程度の理解でいいのでしょうか

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

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

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


WEBの情報をあちこちからつまみ食いしてるので全体的にチグハグな感じに
なっていたようで指摘してもらって勉強になります
ソースみていただける方は2ちゃんねるに貼り付けとアップローダのどちらが見やすいでしょうか?
それとも両方のほうがよい?
0214名前は開発中のものです。
垢版 |
04/06/30 11:43ID:0T8fXV58
そろそろ本気で見にくくなってきたわけだが、
ちょっと言語が大杉やしないかい?
もうちょっと絞ろうよ
0215通りすがり人
垢版 |
04/06/30 12:46ID:qBs2hfFg
>>213
> 左端のビットが1ならボタンが押されているという程度の理解でいいのでしょうか

HELPには...
最上位ビットがセットされたときは現在キーが押されていることを示し、
最下位ビットがセットされたときは直前のGetAsyncKeyState関数呼び出し以降に
キーが押されたことを示します。
って書いてある。つまり・・・
#include<windows.h>
#include<stdio.h>

void main()
{
 intRv;

 for(;;) {
  Sleep(1);
  Rv = GetAsyncKeyState(VK_SPACE);
  if (Rv != 0) {
   printf("%08x\n", Rv );
  }
 }
}
スペースをバシッと叩くとわかるんだけど、初回だけ最下位ビットが変化してる。
つまり、リピート状態なのかを判断できるわけ。
0216生徒BLUE
垢版 |
04/06/30 17:09ID:HYWm3For
>>215
早速、コンパイルして試してみました
最下位ビットに注目してみると
1000000000100100100100100100......
といったように変化します
初回だけということなので10000000......というものを期待していたのですがうまくいかないです
0217生徒BLUE
垢版 |
04/06/30 17:38ID:HYWm3For
課題6 当たり判定
赤い四角のサイズを元に当たり判定をしました

//****** 変更箇所 ******

//乱数の初期化
srand((unsigned)time(NULL));

//敵の移動
++ty;
if (ty>YMAX)
{
  ty=0;
  tx=rand()*640/RAND_MAX;
}

//当たり判定
if (abs(x-tx)<BOXWIDTH && abs(y-ty)<BOXHEIGHT)
{
  PostQuitMessage(0);
}

http://gamdev.org/up/img/775.zip
0218名前は開発中のものです。
垢版 |
04/06/30 18:49ID:3iu2d+4i
>>216
ん?スペースキーを押すと、こんな風に表示されませんか?
ffff8001
ffff8000
ffff8000
ffff8000
ffff8000
ffff8000
ffff8000
ffff8000
ffff8000
ffff8000
ffff8000
0219生徒BLUE
垢版 |
04/06/30 19:04ID:HYWm3For
>>218
ならないです
もうちょっと調べてみます
0220名前は開発中のものです。
垢版 |
04/06/30 19:39ID:3iu2d+4i
>>219
あ〜、押しっぱなしの場合は違う結果になるかもです。
OSのキーボードバッファとか、その辺の兼ね合いだと思うけど。
0221名前は開発中のものです。
垢版 |
04/06/30 19:52ID:/EAv0A9z
>>215試して見たけど確かに>>216の現象が出るな。
他の出力で確認したらちゃんと立ち上がりだけ1が出るので
printf()絡みでキー状態が変化してるっぽい。
普通はこんな使い方しないので気にしなくて良いと思われ。
022263 ◆xdaKt6k1XI
垢版 |
04/06/30 21:22ID:qAZjVMDs
>>211
今回のは敵の大きさとか動きとかよくわからないのでやらないです。
0223名前は開発中のものです。
垢版 |
04/06/30 22:22ID:j1/sm794
320x240で一度作ったけど即死しすぎて32x32に縮小したよ
サイズ指定してないから何でもいいと思ったけどそのあたりどうなんですか?>先生

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

http://gamdev.org/w/?%5B%5B%A1%DA%BD%E9%BF%B4%BC%D4%A1%DB%B2%DD%C2%EA%A4%F2%A5%AF%A5%EA%A5%A2%A4%B7%A4%C6%A4%A4%A4%AF%A5%B9%A5%EC%A1%DA%B9%D6%BD%AC%B2%F1%A1%DB%A4%DE%A4%C8%A4%E1%5D%5D
0224LGP@課題4sin波形
垢版 |
04/07/01 00:05ID:TMNGfYFe
//画面初期化、最後を0にすると全画面
CH = G@SETUP( 640 , 480 , 16 , 1 )
//ペンの設定、実線、線の幅1、赤色
G@GDISETPEN(LG_GDI_PS_SOLID,1,1.0,0,0)
//sin波形の始点になる点を描画(LINETOの都合)
G@GDILINE(CH,0,239,0,239)
FOR I=0 TO 360
X=I
//SINの引数と戻り値は固定小数点定数(float)
//整数を固定小数点定数にキャストするには65536を掛ける
//固定小数点定数を整数にキャストするには65536で割る
Y=SIN(I*65536)*100/65536+239
//最後にG@GDILINEかG@GDILINETOで線を引いた場所からX,Yまで線を引く
G@GDILINETO(CH,X,Y)
NEXT
G@FLIP()

//無限ループ
LOOP
S@WAIT()
ENDLOOP
02254 ◆3VUXqvbfSY
垢版 |
04/07/01 08:34ID:KOe6GSoY
>>222,223
サイズは自由で結構です。
敵の動きは…だからy++;だけですよ?
0226生徒A
垢版 |
04/07/01 14:26ID:MCi74o/R
数日間ソースとにらめっこしてるのですが、バックバッファーの処理が上手くいかないです…
0227名前は開発中のものです。
垢版 |
04/07/01 15:45ID:bdPAbTo6
>>226
キミのソースに少し手を加えたやつをうpろだにあげたから試してみれ。780.lzhだ。
ただしオフスクリーン処理以外(後始末とか)は端折ってるのでそこは参考にしないように。
0228LGP@課題5キー入力
垢版 |
04/07/01 22:17ID:TMNGfYFe
CH = G@SETUP( 640 , 480 , 16 , 1 )
LOOP //無限ループ
//赤い四角を黒で塗りつぶして消す
  G@GDISETBRUSH( 0 , 0 , 0 , 0 )
  G@GDIBOXFULL( CH , X, Y, X+320, Y+240 )
  I@KEYGET() //キーの状態を得る
//I@KEYBTNの引数に調べたいキーをいれ、戻り値が1なら押してる状態
  IF I@KEYBTN(0xC8)=1 THEN //0xC8はカーソルキー↑
    IF Y>0 THEN
      Y=Y-1
    ENDIF
  ENDIF
  IF I@KEYBTN(0xCB)=1 THEN
    IF X>0 THEN
      X=X-1
    ENDIF
  ENDIF
  IF I@KEYBTN(0xCD)=1 THEN
    IF X<320 THEN
      X=X+1
    ENDIF
  ENDIF
  IF I@KEYBTN(0xD0)=1 THEN
    IF Y<240 THEN
      Y=Y+1
    ENDIF
  ENDIF
//赤い四角を描く
  G@GDISETBRUSH( 0 , 1.0 , 0 , 0 )
  G@GDIBOXFULL( CH , X, Y, X+320, Y+240 )
  G@FLIP()
ENDLOOP
0229LGP@課題6当たり判定
垢版 |
04/07/02 03:30ID:4ZvlEEie
CH = G@SETUP( 640 , 480 , 16 , 1 )
X=320
Y=240
//無限ループ
LOOP
//黒で塗りつぶし
  G@GDISETBRUSH( 0 , 0 , 0 , 0 )
  G@GDIBOXFULL( CH , 0, 0, 640, 480)
//キー入力
//キーの状態を得る
  I@KEYGET()
//I@KEYBTNの引数に調べたいキーをいれ、戻り値が1なら押してる状態
//0xC8はカーソルキー↑
  IF I@KEYBTN(0xC8)=1 THEN
    IF Y>0 THEN
      Y=Y-1
    ENDIF
  ENDIF
  IF I@KEYBTN(0xCB)=1 THEN
    IF X>0 THEN
      X=X-1
    ENDIF
  ENDIF

0230LGP@課題6当たり判定
垢版 |
04/07/02 03:30ID:4ZvlEEie
  IF I@KEYBTN(0xCD)=1 THEN
    IF X<(640-32) THEN
      X=X+1
    ENDIF
  ENDIF
  IF I@KEYBTN(0xD0)=1 THEN
    IF Y<(480-32) THEN
      Y=Y+1
    ENDIF
  ENDIF //敵移動
  TY=TY+1;
  IF TY>(640-32) THEN
    TY=0
    TX=RAND()%(640-32)
  ENDIF

//赤い四角を描く
  G@GDISETBRUSH( 0 , 1.0 , 0 , 0 )
  G@GDIBOXFULL( CH , X, Y, X+32, Y+32 )
//敵を描く
  G@GDISETBRUSH( 0 , 0 , 1.0 , 0 )
  G@GDIBOXFULL( CH , TX, TY, TX+32, TY+32 )

//当たり判定
  IF (ABS(X-TX)<32) AND (ABS(Y-TY)<32) THEN
    END
  ENDIF

  G@FLIP()
ENDLOOP
0231名前は開発中のものです。
垢版 |
04/07/04 00:00ID:UWWF49AF
保守age
0232HSPが初プログラム@生徒希望
垢版 |
04/07/04 11:07ID:3DUC6+Xf
課題1
   title "数当てゲーム"
   screen 0,150,65   ;ウィンドウのサイズを調整
   mes "1〜9から一つ入力"
   input a   ;入力ボックスを出す

*random
   rnd b,9   ;0〜8の乱数発生
   b+=1   ;1〜9にする
   c=1

*number
   button "これだ!",*judge
   stop

*judge
   if a=b:dialog "当たり!",0,""+c+"回目":goto *random
   if a>b:dialog "もっと小さい",0,""+c+"回目"
   if a<b:dialog "もっと大きい",0,""+c+"回目"
   c+=1
   goto *number

課題3
   title "赤い四角の描画"
   screen 0,640,480,1
   color 255,0,0:boxf 0,0,320,240
   stop

http://gamdev.org/up/img/801.zip

課題2はヨクワカラナイです。ヒントくれませんか?
0233名前は開発中のものです。
垢版 |
04/07/04 11:13ID:dw9vgL9Y
>>232
自分以下で2以上の全ての整数の割り算の余りが0にならなければ素数
別の解放にエラトステネスのふるいってのがあるけど別に使わなくていい
0241x≠先生かつx=生徒 ⇒ x=俺
垢版 |
04/07/04 20:45ID:WDudAYFD
; 素数判定 with HSP 少しだけ高速版
sdim log, 7000: notesel log
title "素数判定 - Calculating..."
mesbox log, 640, 480
log = "2": n = 1
repeat 999
repeat
n += 2: f = 1
repeat n>>1-1,3
if n \ cnt = 0: f = 0: break
continue cnt+2
loop
if f: break
loop
noteadd ""+n
await
loop
objprm 0, log
title "素数判定"
stop
0242x≠先生かつx=生徒 ⇒ x=俺
垢版 |
04/07/04 20:47ID:WDudAYFD
あ、インデントかけるの忘れとった。。。

; 素数判定 with HSP 単純版
sdim log, 7000: notesel log
title "素数判定 - Calculating..."
mesbox log, 640, 480
repeat ,2
    n = cnt
    repeat cnt-2, 2
        if n \ cnt = 0: n = 0: break
    loop
    if n{
        noteadd ""+cnt
        i++
        if i >= 1000: break
        await
    }
loop
objprm 0, log
title "素数判定"
stop
0243Ruby@素数高速化
垢版 |
04/07/05 00:33ID:K58VA1M5
以前のバージョン
43.702999830246秒
ループ 31343403回
新しいバージョン(奇数のみ評価、平方根までチェック)
0.921999931335449秒(約47倍)
ループ 225062回(約139倍)
思ったより高速化されてビクーリ

print "2\n"
count=1
loopCount=0
i=3
old=Time.now.to_f;
while count<1000 do
  sosu=true
  for j in 3..Math.sqrt(i) do
    loopCount=loopCount+1
    if ( (i % j) == 0)
      sosu=false
    end
  end
  if (sosu)
    print "#{i}\n"
    count=count+1
  end
  i=i+2
end
print " #{Time.now.to_f - old}秒かかりました\n"
print " #{loopCount}回ループしました\n"
print "素数を#{count}個みつけました\n"
0244名前は開発中のものです。
垢版 |
04/07/05 01:37ID:o/9mlWPU
>>241を改良してみた。

; 素数判定 with HSP 何気に高速版
title "素数判定 - Calculating..."
#const MAX_COUNT 1000
ll_libload dll,"kernel32.dll" :ll_getproc func,"GetTickCount", dll
ll_libfree dll :ll_retset refunc

sdim log, 7 * MAX_COUNT :notesel log
dim result, MAX_COUNT
mesbox log, 640, 480
noteadd "2",0,1 :result.0 = 2 :count = 3 :i = 1
;測定
ll_callfunc temp,0,func
start = refunc
repeat
  flg = 1;
  repeat i
   if count \ result.cnt = 0 : flg = 0 :break
  loop
  if flg {
   noteadd ""+count, -1 :result.i = count
   i++ :if i >= MAX_COUNT: break
   await
  }
count += 2
loop
ll_callfunc temp,0,func
refunc -= start :dialog "" + refunc + "ms"
objprm 0, log :title "素数判定"
stop
0247名前は開発中のものです。
垢版 |
04/07/05 20:13ID:axn64mRQ
すごいスレの流れと違うような気がしますが、
Cで、ウインドウ表示とか(課題3)、できないんですが・・・どうしたらいいんでしょうか?
0251HSPが初プログラム@生徒希望
垢版 |
04/07/05 22:51ID:ZZjGGIiZ
sdim m,4000 : notesel m
mesbox m,640,480
noteadd "2" m : noteadd "3" m : noteadd "5" m : noteadd "7" m

n=7
c=4

*judge
n+=2

if n\3=0 : goto *judge
if n\5=0 : goto *judge
if n\7=0 : goto *judge

noteadd "n" m : c+

if c=1000 : goto *s

goto *judge

*s
stop

素数はこれで出るカナと思ったんですが、エラー発生。原因を突き止められませんTT
0252x≠先生かつx=生徒 ⇒ x=俺
垢版 |
04/07/05 23:00ID:pTJ3lo22
エラーを読も・・・・・Σ(;゚Д゚)HSPがエラー吐いてない!

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

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

あと、objprm 0, mをstopの前に入れて出力させてあげよう。
0253HSPが初プログラム@生徒希望
垢版 |
04/07/05 23:07ID:ZZjGGIiZ
>>252
thx
でも、4363で終わりますがあってるんでしょうか?

sdim m,4000 : notesel m
mesbox m,640,480
noteadd "2" : noteadd "3" : noteadd "5" : noteadd "7"

n=7
c=4

*judge
n+=2

if n\3=0 : goto *judge
if n\5=0 : goto *judge
if n\7=0 : goto *judge

noteadd ""+n : c+

if c=1000 : goto *s

goto *judge

*s
objprm 0, m
stop
0259x≠先生かつx=生徒 ⇒ x=俺
垢版 |
04/07/06 07:38ID:BOq5Vq10
#!D:\perl\bin\perl.exe

print "Content-type: text/plain\n\n";
print "Start\n";
print "2\n";
$table[0] = 2;
$i = 1;
for(2..1000){
    for($i += 2; ; $i += 2){
        if(&IsPrime($i)){ last; }
    }
}
print "Finish";
exit(1);

sub IsPrime{
    (my $src) = @_;
    for($j = 0; $table[$j] <= sqrt($src); $j++){
        if($src % $table[$j] == 0){ return 0; }
    }
    print $src."\n";
    push(@table, $src);
    return 1;
}

# Perl版。printを取ってみると分かるけどPerlはインタープリタなのに
# 結構処理速いね。。。
0261名前は開発中のものです。
垢版 |
04/07/06 16:54ID:pkSoPn0/
C#で素数
static void Main(string[] args)
{
    int sosuCount=0;
    for (int i = 2; sosuCount<1000; i++)
    {
        Boolean nososu;
        nososu = false;
        for (int j = 2; j < i ; j++)
        {
            if ((i % j) == 0)
            {
                nososu = true;
                break;
            }
        }
        if (!nososu)
        {
            Console.WriteLine(i);
            sosuCount++;
        }
    }
    Console.WriteLine(sosuCount + "個の素数を発見しました");
}
0262x≠先生かつx=生徒 ⇒ x=俺
垢版 |
04/07/06 17:32ID:BOq5Vq10
public class Prime {
public final static int PRIME_MAX = 1000;
static int PrimeTable[] = new int [PRIME_MAX];
static int TableLast = 1;

public static void main(String[] args) {
int l = 1;
PrimeTable[0] = 2;
System.out.println(2);
for(; TableLast < PRIME_MAX; TableLast++)
for(l += 2; ; l += 2)
if(IsPrime(l)) break;
System.out.println("Finish");
}
public static boolean IsPrime(int src) {
for(int i = 0; PrimeTable[i] <= Math.sqrt(src) && i < TableLast; i++)
if(src % PrimeTable[i] == 0) return false;
PrimeTable[TableLast] = src;
System.out.println(src);
return true;
}
}

// Java版。
// あと手を付けてない言語は何だっけ。
// ・・・ひまわりでもやってみるか。
0263名前は開発中のものです。
垢版 |
04/07/06 18:09ID:pkSoPn0/
//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 + "個の素数を発見しました";
?>
0264名前は開発中のものです。
垢版 |
04/07/06 18:57ID:pkSoPn0/
#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 "個の素数を発見しました"
0265生徒A
垢版 |
04/07/06 19:10ID:B1nIIlBn
素数スレに変化していたらしい
02674 ◆3VUXqvbfSY
垢版 |
04/07/06 20:22ID:sRW7wZ6D
>>266
なるわけありませんw

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

うーん…

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

弾道シミュレーション:とは言え、何も波動方程式を使えとはいわない。
真空空間で結構。
画面を横を640kmと仮定し、初速、角度を入力させ、弾の軌道を描いてくれ。
ちなみに、初速は29000m/s以下で
重力加速度は10m/(s^2)でお願いします。
0270名前は開発中のものです。
垢版 |
04/07/06 21:32ID:tJWPmmxn
とりあえず初速度を三角関数でxとyに分解した後、
重力加速度をyに対して適用していきましょう。

しかし初速29000m/sだと、軽々地球を離脱して重力圏外に吹っ飛んでいきそうです。
0273HSPが初プログラム@生徒希望
垢版 |
04/07/06 22:06ID:GhTVD8Z+
連レス済みません

HSPでの平方根の出すのと、その整数か否かの判断てできますか?
できれば、教えてください。

質問ばっかで済みません
0274x≠先生かつx=生徒 ⇒ x=俺
垢版 |
04/07/06 23:17ID:BOq5Vq10
>>269
ガ━━(゚Д゚;)━━━ン!!
物理じゃなくて化学だし・・・

>>270
何をすればいいのか全くわからそ( ´・ω・`)

>>271
ループを抜けるときにn = 0にされていたら(割り切れたときにn = 0にして抜けている)無視、
されていない(素数)のとき、いろいろしてる。

>>はビットシフト。2進数が関わってきます。
で、結果的には
x >> nは、xを2のn乗で割るのと同じ。
x << nは、xに2のn乗をかけるのと同じ。
だから、n>>1はn/2と同じ。

平方根も求められるには求められるけど、自分で求めるアルゴリズムは用意しないといけない。
その整数か否かとは・・・?
0275名前は開発中のものです。
垢版 |
04/07/06 23:53ID:pkSoPn0/
//HSPヘルプではincludeするのはhspext.hsになってますがhspext.asじゃないと動きません
//なぜ?(´・ω・`)
//
//平方根の求め方
//
//HSP2.61で動作確認しますた
//
#include "hspext.as"
//100の平方根を求めます
i=100
//iの平方根を固定少数点型でjに代入
emsqr j,i
//jの値を整数型にキャスト(少数点以下切り捨て)
j=j>>4
//jを表示
print j
stop
0276名前は開発中のものです。
垢版 |
04/07/07 04:08ID:FL+3iUiB
これであってるのかな
よくわからんので実行しても合ってるのか確認しようがない(´・ω・`)
ググった式をそのまま当てはめてみました

弾道シミュレーション
http://gamdev.org/up/img/814.zip
0277HSPが初プログラム@生徒希望
垢版 |
04/07/07 21:29ID:dX/NBYiw
>>274
返答有難う御座います。
学校で考えてたら、平方根だけじゃダメだとわかったんで、
>>233にあった2以上〜自分未満ってのをやってみようと思います。

因みに整数か否かとは、平方根出したときのことです。
例えば√2は1.414…ですよね?だから整数じゃないですし、√4なら2ですから整数で、
整数じゃなかったら素数に入れよう!とか思ってたんですが、
11*13(適当に思いついた)だとダメなんですよね…
0278名前は開発中のものです。
垢版 |
04/07/07 21:32ID:W6JVsWwD
ゲームに必要なのは実現できるか否かだ
ちょっぱやな素数判定できることに課題としての価値はないよ
ガンガレ
0280C / HSPの生徒 orz
垢版 |
04/07/07 23:08ID:B0lUGdqJ
>>275
> HSPヘルプではincludeするのはhspext.hsになってますがhspext.asじゃないと動きません
HSPヘルプは電波入っているから気にしないがよし。
つかhspソースファイルの拡張子は".as"以外使わないと思うが。

>>274
>267を簡単に表現すると、
   __
 /   \           /
〇     〇←B.止まる A/) 角度 R

A.初速<29000m/s

こんな感じの軌道を描画する。
で、真空中なのでX軸方向の速度は 初速 * cosR
Y軸は 初速 * sinR で、毎秒-10していく。
0281x≠先生かつx=生徒 ⇒ x=俺
垢版 |
04/07/07 23:51ID:lBWiEqny
>>280
#include "hspext.as"
screen 2, 300, 100, 4: title "Config"
pos 5, 8: mes "初速:": pos 50, 5: input speed, 215, 25: pos 270, 8: mes "m/s"
pos 5, 38: mes "角度:": pos 50, 35: input angle, 210, 25: pos 265, 38: mes "/255"
pos 5, 70: objsize 290, 25: button "Start", *start
gsel 0: stop
*start
emsin sin, angle: emsin cos, angle
mx = speed * sin / 255: my = speed * cos / 255
x = 0: y = 480000: pos x/1000, y/1000
repeat
x += mx: y -= my: my -= 10
line x / 1000, y / 1000
wait 10
loop
stop

こんな感じかぇ・・・?
0282C / HSPの生徒 orz
垢版 |
04/07/08 14:31ID:oFd7+xVG
>>281
sin と cos が逆だけど、だいたいOKじゃないか?
俺も281参考に一応作ってみた。
…なんでcos7がマイナスになるんだ、理解できん。

#include "hspext.as"
#define EDIT_X 160
#define EDIT_Y 24
#define G 10
#define SCREEN_X 640
#define SCREEN_Y 480
width SCREEN_X, SCREEN_Y
title "C / HSPの生徒 orz"
color 200, 200, 200:boxf
pos 120, 70:button "描画", *ready
goto config_sub
0283C / HSPの生徒 orz
垢版 |
04/07/08 14:31ID:oFd7+xVG
*ready
color 200, 200, 200:boxf
if v0 > 29000:stop
uchar_r = r \ 360 * 255 / 360
color 240
emsin sin, uchar_r:emcos cos, uchar_r
vx = -v0 * cos / 255:vy = -v0 * sin / 255
x = 0:y = SCREEN_Y:pos x, y
repeat
x += vx:y += vy:vy += G
line x, y
if (y > SCREEN_Y) || (x < 0) || (x > SCREEN_X):break
await 0
loop
*config_sub
color
pos 40, 15:mes "初速 :":pos 100, 10:input v0, EDIT_X, EDIT_Y
pos 40, 45:mes "角度 :":pos 100, 40:input r, EDIT_X, EDIT_Y
stop
0285名前は開発中のものです。
垢版 |
04/07/08 17:45ID:f5vo4Z1w
なんていうかさ。素数よりも、もっと普通にゲームでよく使うようなやつを
やったほうがいいんじゃないかな?

ボールが跳ねるのをシミュレート、とかなら
ジャンプするゲームでは確実に使うだろうし。
02864 ◆3VUXqvbfSY
垢版 |
04/07/08 19:00ID:xmAVGw0W
なんか…確かに素数ばっかりに見えますが…違うんですよ。
素数で詰まってる人が多いってだけで…


あとですね…ボールが跳ね返るシミュレーション、ジャンプに使いますかねぇ?
マリオが勝手に地面で跳ね返ったら、俺は切れますがw


…ああ、何時になったらインベーダーが…本来なら、そろそろ、赤い四角に弾でも撃って貰おうと思ってたんですが…

わかりました。二つ出します

メイン課題 前の、赤い四角に弾を撃って貰います。さらに前課題の降ってくる物体と相殺させて下さい。
弾丸は横2ドット、縦16ドットで黄緑色
動きは Y座標(初期値は赤い四角のY座標+16)その後Y--; X座標(初期値は赤い四角のX座標÷2)その後固定;
当たった時点もしくは、画面外にでたら再発射が可能となる。
基本一発。ただし、複数発実装できるならしても良い。




課題外伝 ボールの跳ね返りシミュ
ボールを(0,0)から水平投射する。(速度は自由)
床の反発係数は0.8
壁は1.0
重力加速度は10m/s^2
0287名前は開発中のものです。
垢版 |
04/07/08 20:05ID:kembbGf8
トランポリンでも使うつもりなんですかね
ジャンプで跳ね返りって…
そいやマリオには敵ふんだときちょっと浮くけどあれなのかな・・・
0288名前は開発中のものです。
垢版 |
04/07/08 21:00ID:gJH4XEvh
名古屋撃ちのために、実装しない方向で行こう。。。

>>286
こんな感じでOK?

#include "hspext.as"
screen 2, 300, 100, 4: title "Config"
pos 5, 8: mes "初速:": pos 50, 5: input speed, 215, 25: pos 270, 8: mes "m/s"
pos 5, 38: mes "角度:": pos 50, 35: input angle, 210, 25: pos 265, 38: mes "/255"
pos 5, 70: objsize 290, 25: button "Start", *start
gsel 0: stop
*start
cls
emsin sin, angle: emcos cos, angle
mx = speed * sin / 255: my = speed * cos / 255
x = 320000: y = 240000: pos x/1000, y/1000
repeat
x += mx: y -= my: my -= 10
if x<0: x=0: mx = -mx
if x>640000: x=640000: mx = -mx
if y>480000: y=480000: my = -my * 8 / 10: if my<80: my = 0: stop
line x / 1000, y / 1000
wait 1
loop
stop
0289名前は開発中のものです。
垢版 |
04/07/08 23:33ID:UCn/khb4
#include "hspext.as"
#const G 10
#const Coeff 10
#const Wall_e 10
#const Floor_e 8

screen 0, 640, 480, 1
dim sin,256 :dim cos,256
repeat 256 :emsin sin.cnt,cnt :emcos cos.cnt,cnt :loop

screen 2, 150, 100, 4: title "Config"
pos 5, 8: mes "初速:": pos 50, 5: input V, 50, 25: pos 100, 8: mes "m/s"
pos 5, 38: mes "角度:": pos 50, 35: input C, 50, 25: pos 100, 38: mes "°"
pos 5, 70: objsize 120, 25: button "Start", *main
gsel 0 :stop
*main
if V > 29000 : 29000
if C > 90 : C = 90
C = C * 256 / 360 :Vx = V :Vy = V :Ycnt = 0 :x = 0 :y = 0

repeat
redraw 0 :await 1
color 255,255,255 :boxf :color 255,0,0 :pos 0, 460 : mes "■" :color 0,0,255 :line 0, 475, 640, 475
color 0,0,0 :x += Vx * (-cos.C) / 256 :y += Vy * sin.C / 256 - (G * Ycnt)

if x / 1000 < 0 :Vx = -Vx * Wall_e / Coeff :x = 0
if x / 1000 > 624 :Vx = -Vx * Wall_e / Coeff :x = 624000
Ycnt++ :if y < 0 :Vy = Vy * Floor_e / Coeff :y = 0 :Ycnt = 0
pos x / 1000, -y / 1000 + 460 : mes "○" :if cnt > 0 & (Vy <= 0) :break
redraw 1 :loop :stop
投下
0290x≠先生かつx=生徒 ⇒ x=俺
垢版 |
04/07/09 00:10ID:bufBX0Vb
#include "hspext.as"
screen 2, 300, 100, 4: title "Config"
pos 5, 8: mes "初速:": pos 50, 5: input speed, 215, 25: pos 270, 8: mes "m/s"
pos 5, 38: mes "角度:": pos 50, 35: input angle, 210, 25: pos 265, 38: mes "/255"
pos 5, 70: objsize 290, 25: button "Start", *start
gsel 0: stop
*start
cls
emsin sin, angle: emcos cos, angle
mx = speed * sin / 255: my = speed * cos / 255
x = 320000: y = 240000: pos x/1000, y/1000
repeat
ox = x: oy = y: x += mx: y -= my: my -= 10
if x<0: x=0: mx = -mx
if x>624000: x=624000: mx = -mx
if y>464000: y=464000: mx = mx * 8 / 10: my = -my * 8 / 10: if my<80|(mx==0): my = 0: stop
;redraw 0
color 255, 255, 255: pos ox/1000, oy/1000: mes "○"
color 0, 0, 0: pos x/1000, y/1000: mes "○"
;redraw 1
wait 1
loop
stop

改造版。

>>289
スゲー・・・
0291C / HSPの生徒 orz
垢版 |
04/07/09 10:25ID:nlM8j7wC
>>286の課題作ってみたが、ゲーム性を考えて数値をアレンジしています。
#define RED_SIZE 32
#define ENEMY_SIZE 32
#define MOVE_TIME 32
#define OBJ_SX 2
#define OBJ_SY 16
#define OBJ_SPEED 16
randomize
width 640, 480
red_x = 640 - RED_SIZE / 2:red_y = 480 - RED_SIZE
repeat
redraw 2:color 255, 255, 255:boxf
if enemy_stat = 0:enemy_y = -ENEMY_SIZE:enemy_stat = 1:title "C / HSPの生徒 orz 撃破数: "+obj_cnt
enemy_timer++:if enemy_timer > MOVE_TIME:enemy_timer = 0
if enemy_timer = 0:rnd enemy_x, 640 - ENEMY_SIZE
stick key, 15:if key & 1{red_x-4}if key & 4{red_x+4}
stick key, 16:if key = 16 & (obj_stat = 0){
obj_stat = 1:obj_x = RED_SIZE / 2 - (OBJ_SX / 2) + red_x:obj_y = red_y - 16}
if (enemy_x < obj_x) & (obj_x + OBJ_SX < (enemy_x + ENEMY_SIZE)) {
if (enemy_y < obj_y) & (obj_y + OBJ_SY < (enemy_y + ENEMY_SIZE)) {
obj_cnt++:obj_stat = 0:enemy_stat = 0:color 255, 0, 0:boxf} }if obj_y + OBJ_SY < 0:obj_stat = 0
if enemy_stat:color 100, 100, 200:boxf enemy_x, enemy_y, enemy_x + ENEMY_SIZE, enemy_y + ENEMY_SIZE
color 200, 100, 100:boxf red_x, red_y, red_x + RED_SIZE, red_y + RED_SIZE
if obj_stat:color 100, 200, 100:boxf obj_x, obj_y, obj_x + OBJ_SX, obj_y + OBJ_SY:obj_y-OBJ_SPEED
enemy_y++:if enemy_y > 480{enemy_stat = 0}await 20:redraw 1
loop
0292285
垢版 |
04/07/09 10:46ID:mw4kM0V8
すまん、言葉足らずだった。
ジャンプの軌道の加速減速だ。

ボールが跳ねるって部分は蛇足だったな。
0293285
垢版 |
04/07/09 10:48ID:mw4kM0V8
>ボールが跳ねるって部分は蛇足だったな。

>ボールが跳ねるって言い方は変だったな。


言葉足らずって言うより、俺、言い回しが変だね。
0294名前は開発中のものです。
垢版 |
04/07/09 16:12ID:o2BnBgF7
>>277
平方根以下の素数で割り切れるかを調べればいいので11*13(=143)をチェックする場合、
143の平方根が11.958......なので2〜11の数で割り切れるか調べればよい
11で割り切れるので素数ではないことがわかる
0296名前は開発中のものです。
垢版 |
04/07/09 22:13ID:2xcy471S
<html><body onload="go()">
角度<input type="text" value="45" id=ra>度<br>
初速<input type="text" value="1000" id=sp>m/s<br>
<input type="button" value="GO" onclick="go()"><script>
elm=new Array();
for(i=0;i<128;i++){
elm[i]=document.createElement('div');
elm[i].style.position='absolute';
elm[i].style.font='normal normal normal 7px "MS ゴシック"';
elm[i].innerHTML='■';
document.body.appendChild(elm[i]);
}
function go(){
r=document.getElementById('ra').value; s=document.getElementById('sp').value;
document.getElementById('ra').value=r=(r>89)?89:(r<0)?0:r;
document.getElementById('sp').value=s=(s>29000)?29000:(s<1)?1:s;
for(i=0;i<128;i++){
y=0; rd=r/180*Math.PI;
for(j=0;j<5000*i/s/Math.cos(rd);j++) y+=(s-10*j)*Math.sin(rd);
if(y<0)y=0;
elm[i].style.left=i*5; elm[i].style.top=475-y/1000;
}
}
</script></body></html>
0297HSPが初プログラム@生徒希望
垢版 |
04/07/09 22:49ID:nI9aNbgB
一応あってますか?
課題2小さい方から1000個の素数
sdim m,4000 : notesel m
mesbox m,640,480

n=2 : c=1 : j=1

*judge
if n-1=j : goto *pn
j+

if n \ j=0 : n+ : j=1

wait 1
goto *judge

*pn
c+
noteadd ""+n

if c=1000 : goto *finish

n+ : j=1

wait 1
goto *judge

*finish
objprm 0, m
stop
激しく遅いですが…
0299HSPで素数
垢版 |
04/07/10 08:28ID:gc5EpECZ
#include "hspext.as"
False=0:True=1:count++:i=3
mes "計算中......"
while count<1000
    sosu=True
    j=3
    emsqr chk,i
    chk=chk>>4
    while j<=chk
        if (i \ j)=0 {
            sosu=False
            _break
        }
        j=j+2
    wend

    if sosu=True {
//        cls
//        mes i
        EndNum=i
        count++
    }
    i=i+2

    gettime NowTime, 6
    if (NowTime!=BeforeTime) {
        BeforeTime=NowTime
        wait 1
    }
wend
mes "計算終了。"+count+"個目の素数は"+EndNum+"です。"
stop mes
0301名前は開発中のものです。
垢版 |
04/07/10 15:30ID:wQKs6GiV
このスレ遠回りしすぎ。
素数とか必要になったときにやればいいのに。
ゲーム製作に必ず必要なものではない。
0302名前は開発中のものです。
垢版 |
04/07/10 16:06ID:qklEKUA/
HSPにまともなゲームが無いのはゲームに関係無い事ばかりに力入れてる厨房ばかりだからじゃないか?w
0303名前は開発中のものです。
垢版 |
04/07/10 16:07ID:gc5EpECZ
弾発射の課題で弾の色が黄緑が指定されてたので調べてきました
JISで決まってるようです
#BBC000(187,192,0)
http://www5d.biglobe.ne.jp/~m_any-dg/jisiro_wabun.html
0304285
垢版 |
04/07/10 19:01ID:EpDrHTyy
>301
俺もそう思った。上から落ちてくるものを受け止めるとか
そういう簡単なゲームを作ったみたほうがいいんじゃないかと。
0306HSPで素数 エラトステネスの篩い
垢版 |
04/07/10 19:34ID:gc5EpECZ
#include "hspext.as"
True=1
False=0
Max=7920
Dim SosuList, Max

emsqr chk,Max
chk=chk>>4

mes "計算中......"
i=3
while i<=chk
    j=i+i
    while j<Max
        SosuList.j=True
        j=j+i
    wend
    i=i+2
wend

i=3
sum=1
while i<Max
    if SosuList.i=False {
        sum++
    }
    i=i+2
wend
mes "合計"+sum+"個の素数を発見しました。"
stop
0308HSPが初プログラム@生徒希望
垢版 |
04/07/10 21:53ID:+13mwptL
連レススマソ
こうするとちょっと早くなりました
sdim m,4000 : notesel m
mesbox m,640,480

n=2 : c=0 : j=1

*judge

if n-1=j : goto *pn
j+

if n \ j=0 : n+ : j=1

await
goto *judge

*pn
c+
noteadd ""+n

if c=1000 : goto *finish

n+ : j=1


goto *judge

*finish
objprm 0, m
stop
0310名無しさん@そうだ選挙に行こう
垢版 |
04/07/11 08:10ID:k56A1TFY
課題8 Zで弾発射

<html><head><title>Invader Game?</title><style type="text/css"><!--
.ch{position:absolute;width:32px;height:32px;}
.self{background-color:#FF0000;}.enemy{background-color:#0000FF;}
.missile{background-color:#BBC000;position:absolute;width:2px;height:16px;top:-20px;}
--></style></head>
<body onLoad="main()" onKeyDown="k[event.keyCode]=1" onKeyUp="k[event.keyCode]=0">
<div id=char class="self ch"></div><div id=enemy class="enemy ch"></div>
<div id=mi0 class=missile></div><div id=mi1 class=missile></div><div id=mi2 class=missile></div>
<script language="Javascript"><!--
var timerID, k = [];var x = 304, y = 448, charElm = document.getElementById('char');
var eX, eY = 480, enemyElm = document.getElementById('enemy');
var miE = [], miA = [], miX = [], miY = [];
for (i = 0; i < 3; i++){miE[i] = document.getElementById('mi' + i);miA[i] = false;miY[i] = -20;}
function setEnemy(){eY = -32;enemyElm.style.left = eX = Math.floor(Math.random() * 640);}
function main(){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;
for (i = 0; i < 3; i++){if (miA[i]){
if (miY[i] < -20) miA[i] = false;
if (Math.abs(miX[i] - eX - 15) < 17 && Math.abs(miY[i] - eY - 15) < 23){
miA[i] = false;miY[i] = -20;setEnemy();}
miE[i].style.top = miY[i] -= 8;
}else if (k[90]){miA[i] = true;miE[i].style.left = miX[i] = x + 15;miE[i].style.top = miY[i] = y - 16;
k[90] = 0;break;}}
if (eY > 480) setEnemy();enemyElm.style.top = eY += 8;
if (Math.abs(x - eX) > 32 || Math.abs(y - eY) > 32) timerID = setTimeout(main, 30);
}//--></script></body></html>
0316VB.NETで素数
垢版 |
04/07/12 21:26ID:m2Go/Kix
Module Module1

    Sub Main()
        Dim i As Integer
        Dim j As Integer
        Dim count As Integer
        Dim sosu As Boolean

        i = 2
        While count < 1000
            sosu = False
            For j = 2 To Math.Sqrt(i)
                If (i Mod j) = 0 Then
                    sosu = True
                End If
            Next
            If Not sosu Then
                count = count + 1
                Console.WriteLine(i)
            End If
            i = i + 1
        End While
    End Sub

End Module
03184 ◆3VUXqvbfSY
垢版 |
04/07/13 21:57ID:UU6rJvtG
打ち切りってどうやるんでしょうか…

まあ。進める人はいつまでも素数をやらずに、次に進んでください。
とか言っときます。

んでは…次の課題
赤い四角の敵の移動をインベダ風にしよう。
縦2体 横3体の合計六機の敵が、左右に移動します。
端に到達すると、一キャラ分下降します。
弾が当たると、当たったキャラを消去し、ソコが抜けた状態でそのまま、上の動作を繰り返します。
下まで到達されたら終了。
0319名前は開発中のものです。
垢版 |
04/07/14 14:18ID:fwuwWRAB
チェック対象がたくさんある場合の当たり判定って、どうやるのがベストなんだろう?
弾が20個、ターゲットが20機居たら20x20の全組み合わせの判定をするしかないの?
0324134
垢版 |
04/07/14 21:42ID:3WONRXZv
>323
いや、弾の発射の処理がいまいちよく分からなかったので、そうなってしまいました。
感想ありがとうございます。
0326課題3 赤い四角 その1
垢版 |
04/07/15 01:22ID:mfzLmHcI
#include <d3d9.h>
LPDIRECT3D9 g_pD3D = NULL;
LPDIRECT3DDEVICE9 g_pd3dDevice = NULL;
LPDIRECT3DVERTEXBUFFER9 g_pVB = NULL;

struct CUSTOMVERTEX
{
FLOAT x, y, z, rhw;
DWORD color;
};

#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE)
HRESULT InitD3D( HWND hWnd )
{
if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
return E_FAIL;

D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;

if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp, &g_pd3dDevice ) ) )
{
return E_FAIL;
}

return S_OK;
}
0327課題3 赤い四角 その2
垢版 |
04/07/15 01:23ID:mfzLmHcI
HRESULT InitVB()
{
CUSTOMVERTEX vertices[] =
{
{ 0.0f, 0.0f, 0.5f, 1.0f, 0xffff0000, }, // x, y, z, rhw, color
{ 320.0f, 0.0f, 0.5f, 1.0f, 0xffff0000, },
{ 320.0f, 240.0f, 0.5f, 1.0f, 0xffff0000, },
{ 0.0f, 240.0f, 0.5f, 1.0f, 0xffff0000, },
};

if( FAILED( g_pd3dDevice->CreateVertexBuffer( 4*sizeof(CUSTOMVERTEX),
0, D3DFVF_CUSTOMVERTEX,
D3DPOOL_DEFAULT, &g_pVB, NULL ) ) )
{
return E_FAIL;
}

VOID* pVertices;
if( FAILED( g_pVB->Lock( 0, sizeof(vertices), (void**)&pVertices, 0 ) ) )
return E_FAIL;
memcpy( pVertices, vertices, sizeof(vertices) );
g_pVB->Unlock();

return S_OK;
}
0328課題3 赤い四角 その3
垢版 |
04/07/15 01:24ID:mfzLmHcI
VOID Cleanup()
{
if( g_pVB != NULL )
g_pVB->Release();

if( g_pd3dDevice != NULL )
g_pd3dDevice->Release();

if( g_pD3D != NULL )
g_pD3D->Release();
}

VOID Render()
{
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );

if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
{
g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );
g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLEFAN, 0, 2 );

g_pd3dDevice->EndScene();
}

g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}
0329課題3 赤い四角 その4
垢版 |
04/07/15 01:26ID:mfzLmHcI
LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
switch( msg )
{
case WM_DESTROY:
Cleanup();
PostQuitMessage( 0 );
return 0;
}

return DefWindowProc( hWnd, msg, wParam, lParam );
}

INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )
{
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L,
GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
"D3D Tutorial", NULL };
RegisterClassEx( &wc );

HWND hWnd = CreateWindow( "D3D Tutorial", "課題",
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, 640, 480,
GetDesktopWindow(), NULL, wc.hInstance, NULL );
0330課題3 赤い四角 その5(ラスト)
垢版 |
04/07/15 01:27ID:mfzLmHcI
if( SUCCEEDED( InitD3D( hWnd ) ) )
{
if( SUCCEEDED( InitVB() ) )
{
ShowWindow( hWnd, SW_SHOWDEFAULT );
UpdateWindow( hWnd );

MSG msg;
ZeroMemory( &msg, sizeof(msg) );
while( msg.message!=WM_QUIT )
{
if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
else
Render();
}
}
}

UnregisterClass( "D3D Tutorial", wc.hInstance );
return 0;
}
0333C / HSPの生徒 orz
垢版 |
04/07/15 09:18ID:Ian2SxqZ
>>322>>324
始めて見たけど、こんな感じのインベーダーもいいかも(`・ω・´)

オリジナルに近づけるなら、
 ・折り返しのときにずれないようにする
 ・自分の弾は二発(あの弾幕に一発はきつい)
 ・敵はばらばらに弾を撃つ
だと思う。

せっかく敵を構造体で処理してるから、
敵の処理のところで個別に乱数発射させればいいんじゃない?
0334C / HSPの生徒 orz
垢版 |
04/07/15 09:47ID:Ian2SxqZ
やべ、訂正。
〇自分の弾は一発(あの弾幕だと二発じゃないときつい)
×自分の弾は二発(あの弾幕に一発はきつい)
0337名前は開発中のものです。
垢版 |
04/07/15 20:55ID:mfzLmHcI
#include <d3d9.h>
#include <dinput.h>
LPDIRECT3D9 g_pD3D = NULL;
LPDIRECT3DDEVICE9 g_pd3dDevice = NULL;
LPDIRECT3DVERTEXBUFFER9 g_pVB = NULL;
LPDIRECTINPUT8 g_lpDI;
LPDIRECTINPUTDEVICE8 g_lpDIDevice;
HINSTANCE g_hinst;
HWND g_hwndMain;
struct CUSTOMVERTEX
{
FLOAT x, y, z, rhw;
DWORD color;
};
CUSTOMVERTEX vertices[] =
{
{ 0.0f, 0.0f, 0.5f, 1.0f, 0xffff0000, }, // x, y, z, rhw, color
{ 320.0f, 0.0f, 0.5f, 1.0f, 0xffff0000, },
{ 320.0f, 240.0f, 0.5f, 1.0f, 0xffff0000, },
{ 0.0f, 240.0f, 0.5f, 1.0f, 0xffff0000, },
};
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE)
int cx;
int cy;
void WINAPI ProcessKBInput()
{
#define KEYDOWN(name, key) (name[key] & 0x80)
char buffer[256];
HRESULT hr;
hr = g_lpDIDevice->GetDeviceState(sizeof(buffer),(LPVOID)&buffer);
if FAILED(hr)
{
0338名前は開発中のものです。
垢版 |
04/07/15 20:55ID:mfzLmHcI
exit(EXIT_FAILURE);
}
cx=0;
cy=0;
if (KEYDOWN(buffer, DIK_RIGHT))
cx=1;
else if(KEYDOWN(buffer, DIK_LEFT))
cx=-1;

if (KEYDOWN(buffer, DIK_UP))
cy=-1;
else if (KEYDOWN(buffer, DIK_DOWN))
cy=1;
}
void WINAPI DI_Term()
{
if (g_lpDI)
{
if (g_lpDIDevice)
{
g_lpDIDevice->Unacquire();
g_lpDIDevice->Release();
g_lpDIDevice = NULL;
}
g_lpDI->Release();
g_lpDI = NULL;
}
}
HRESULT InitJoystick()
{
HRESULT hr;
0339名前は開発中のものです。
垢版 |
04/07/15 20:57ID:mfzLmHcI
//オブジェクトの作成
hr = DirectInput8Create(g_hinst, DIRECTINPUT_VERSION,
IID_IDirectInput8, (void**)&g_lpDI, NULL);
if FAILED(hr)
{
exit(EXIT_FAILURE);
}

//キーボード デバイスの作成
hr = g_lpDI->CreateDevice(GUID_SysKeyboard, &g_lpDIDevice, NULL);
if FAILED(hr) {
DI_Term();
exit(EXIT_FAILURE);
}

//キーボードのデータ形式の設定
hr = g_lpDIDevice->SetDataFormat(&c_dfDIKeyboard);
if FAILED(hr) {
DI_Term();
exit(EXIT_FAILURE);
}

//キーボードの動作の設定
hr = g_lpDIDevice->SetCooperativeLevel(g_hwndMain,
DISCL_FOREGROUND | DISCL_NONEXCLUSIVE);

if FAILED(hr) {
DI_Term();
exit(EXIT_FAILURE);
}
}
0340名前は開発中のものです。
垢版 |
04/07/15 20:58ID:mfzLmHcI
HRESULT InitD3D( HWND hWnd )
{
if( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
return E_FAIL;
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;

if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp, &g_pd3dDevice ) ) )
{
return E_FAIL;
}

return S_OK;
}
HRESULT InitVB()
{
if( FAILED( g_pd3dDevice->CreateVertexBuffer( 4*sizeof(CUSTOMVERTEX),
0, D3DFVF_CUSTOMVERTEX,
D3DPOOL_DEFAULT, &g_pVB, NULL ) ) )
{
return E_FAIL;
}
VOID* pVertices;
if( FAILED( g_pVB->Lock( 0, sizeof(vertices), (void**)&pVertices, 0 ) ) )
return E_FAIL;
memcpy( pVertices, vertices, sizeof(vertices) );
0341名前は開発中のものです。
垢版 |
04/07/15 21:07ID:mfzLmHcI
g_pVB->Unlock();
return S_OK;
}

VOID Cleanup()
{
if( g_pVB != NULL )
g_pVB->Release();
if( g_pd3dDevice != NULL )
g_pd3dDevice->Release();
if( g_pD3D != NULL )
g_pD3D->Release();
}
VOID Render()
{
if (g_lpDIDevice) g_lpDIDevice->Acquire();
ProcessKBInput();
for (int i=0; i<4; i++)
{
vertices[i].x=vertices[i].x+cx;
vertices[i].y=vertices[i].y+cy;
}
VOID* pVertices;
if( FAILED( g_pVB->Lock( 0, sizeof(vertices), (void**)&pVertices, 0 ) ) )
exit(EXIT_FAILURE);
memcpy( pVertices, vertices, sizeof(vertices) );
g_pVB->Unlock();

g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );
if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
{
0342名前は開発中のものです。
垢版 |
04/07/15 21:07ID:mfzLmHcI
g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );
g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLEFAN, 0, 2 );

g_pd3dDevice->EndScene();
}
g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}
LRESULT WINAPI MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{
switch( msg )
{
case WM_DESTROY:
Cleanup();
PostQuitMessage( 0 );
return 0;
}
return DefWindowProc( hWnd, msg, wParam, lParam );
}
INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )
{
g_hinst=hInst;
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L,
GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
"D3D Tutorial", NULL };
RegisterClassEx( &wc );
HWND hWnd = CreateWindow( "D3D Tutorial", "課題",
WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, 640, 480,
GetDesktopWindow(), NULL, wc.hInstance, NULL );
g_hwndMain=hWnd;
InitJoystick();
if( SUCCEEDED( InitD3D( hWnd ) ) )
0346名前は開発中のものです。
垢版 |
04/07/15 22:12ID:mfzLmHcI
とりあえずラストまで

>>337-342
{
if( SUCCEEDED( InitVB() ) )
{
ShowWindow( hWnd, SW_SHOWDEFAULT );
UpdateWindow( hWnd );

MSG msg;
ZeroMemory( &msg, sizeof(msg) );
while( msg.message!=WM_QUIT )
{
if( PeekMessage( &msg, NULL, 0U, 0U, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
else
Render();
}
}
}

UnregisterClass( "D3D Tutorial", wc.hInstance );
return 0;
}
0348名前は開発中のものです。
垢版 |
04/07/15 22:27ID:FFz8UuO5
>>344
いや、俺は過去ログ読んでないから知らんが、こんだけ連張りするんなら
うpろだ使えばいいだろって事。せっかく用意されてんだし。

と思ったら今gamdev.org落ちてんのか・・
03494 ◆3VUXqvbfSY
垢版 |
04/07/15 22:30ID:ulthkOuE
まあ…DirectXを使うときは…
初期化は省きましょう
0350名前は開発中のものです。
垢版 |
04/07/15 22:33ID:mfzLmHcI
避難所は落ちてますね
wiki、ろだ等全滅です
>>173のろだは生きてるようだけど使っていいのかな?テストって言ってたけど
http://cgi.f11.aaacafe.ne.jp/~novarabb/phpup/upload.php

>>347
先生キタ━━━━━━(゚∀゚)━━━━━━ !!
でもライフゲームなんて作ってたらまたゲームに関係ないものを
作ってと怒り出す人がいるのでその時はおながいしますね
ちなみに採点できる言語は何ですか?
03514 ◆3VUXqvbfSY
垢版 |
04/07/15 22:40ID:ulthkOuE
>>347
ワーイ 良いですねぇ。ライフ「ゲーム」と言い切れば、誰からも文句は出ないですし。
今回は僕は生徒でw

仕様を決めてくださいよ〜
生死条件や個々の移動条件とか
0352名前は開発中のものです。
垢版 |
04/07/15 22:42ID:mfzLmHcI
と思ったら4様もキタ━━━━━━(゚∀゚)━━━━━━ !!
了解しました>初期化は省きましょう
サンプルそのままなんで見る意味もないですし
課題に関係がある所だけ貼って後はろだにうぷするのがバランスいいかな

>>348
連貼りするのは生理的に受け付けないのに我慢してやってるんだから
酷いこといわないでよヽ(`Д´)ノ
0353名前は開発中のものです。
垢版 |
04/07/15 22:51ID:7EJWxb81
課題10 インベダ風移動

<html><head><title>Invader Game?</title><style type="text/css"><!--
.ch{background-color : #FF0000; position : absolute; width : 32px; height : 32px;}
.missile{background-color : #BBC000;position : absolute;width : 2px; height : 16px;top : -20px;}
--></style></head><body onLoad="main()" onKeyDown="k[event.keyCode]=1" onKeyUp="k[event.keyCode]=0">
<div id=char class="ch"></div><script language="Javascript"><!--
var timerID, k = [], GameOver = false;
var x = 304, y = 448, charElm = document.getElementById('char');
var enMX = 2, enMY = 0, enE = [], enA = [], enX = [], enY = [];
for (i = 0; i < 6; i++){
document.write('<div id=en' + i + ' class="ch"></div>');
enE[i] = document.getElementById('en' + i); enA[i] = true;
enE[i].style.left = enX[i] = i % 3 * 33; enE[i].style.top = enY[i] = Math.floor(i / 3) * 33 - 2;
}
var miE = [], miA = [], miX = [], miY = [];
for (i = 0; i < 3; i++){
document.write('<div id=mi' + i + ' class=missile></div>');
miE[i] = document.getElementById('mi' + i); miA[i] = false; miY[i] = -20;
}
0354名前は開発中のものです。
垢版 |
04/07/15 22:52ID:7EJWxb81
function main(){
clearTimeout(timerID);
charElm.style.left = x += k[37] && x ? -8 : k[39] && x < 608 ? 8 : 0;
charElm.style.top = y += k[38] && y ? -8 : k[40] && y < 448 ? 8 : 0;
for (var i = 0; i < 3; i++)
if (miA[i]){
if (miY[i] < -20) miA[i] = false;
miE[i].style.top = miY[i] -= 8;
}else if (k[90]){
k[90] = 0; miA[i] = true;
miE[i].style.left = miX[i] = x + 15; miE[i].style.top = miY[i] = y - 16;
}
var enBMX = enMX, enBMY = enMY;
for (var i = 0; i < 6; i++)
if (enA[i]){
enE[i].style.left = enX[i] += enBMX; enE[i].style.top = enY[i] += enBMY;
enMX = enX[i] > 608 ? -2 : enX[i] < 0 ? 2 : enMX;
if (enX[i] > 608 || enX[i] < 0) enMY = 32;
if (Math.abs(x - enX[i]) < 32 && Math.abs(y - enY[i]) < 32 || enY[i] > 448) GameOver = true;
for (var j = 0; j < 3; j++)
if (miA[j] && miX[j] - enX[i] < 32 && enX[i] - miX[j] < 2 && miY[j] - enY[i] < 32 && enY[i] - miY[j] < 16){
enA[i] = miA[j] = false; enE[i].style.top = miE[j].style.top = -40;
break;
}
}
if (enBMY == 32) enMY = 0;
timerID = GameOver ? 0 : setTimeout(main, 30);
}//--></script></body></html>
0355134
垢版 |
04/07/16 10:38ID:9OMAGGSs
ライフゲームを検索で見てみましたけど、これは二次元配列の処理がオセロみたいな感じになりそうですね
それで、存在しない配列を参照するバグ続出…
0357134
垢版 |
04/07/16 23:21ID:9OMAGGSs
ライフゲームっぽいものが途中まで出来ました。

まだ、初期位置が決められないのと、予測していた動きにならないので、バグがあると思います。
あと、ソースを見ると分かりますが、判定部分がかなりいいかげんというか、面倒な事をやってます

http://gamdev.org/up/img/857.lzh
0359134
垢版 |
04/07/17 22:23ID:s02d0Ih2
VB製ライフゲーム改良型です。一応、option.txt内を0か1に書き換えれば初期位置を変更できます。
あと、動きのバグも直しました。やはり、長めのロジックは良くないみたいです。

ちなみに、option.txt内の一番下の行の数値を換えると、進行スピードが変わります
(数値が小さい程スピードが速くなる)

http://gamdev.org/up/img/863.lzh
0363名前は開発中のものです。
垢版 |
04/07/18 17:14ID:yH4KfJO3
>>362
【初心者】課題をクリアしていくスレ【講習会】まとめ
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/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/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/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/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
0364名前は開発中のものです。
垢版 |
04/07/18 17:28ID:Cpcq6TmO
4つの整数を引数として渡して、その4つから最小値を返す関数を作りたいのですが、いい考えが浮かびません。
賢い皆さんお願いします。
0366名前は開発中のものです。
垢版 |
04/07/18 17:35ID:krHEjaY8
>>363
失礼いたしました。

>>364
ネタ? 普通に順番に比較するんじゃダメ?
int min(int n[], int size){
  int min = INT_MAX, i = 0;
  for(i = 0; i < size; i++)
    if(min > n[i]) min = n[i];
  return min;
}
0371369
垢版 |
04/07/19 01:56ID:84bjiiMx
http://gamdev.org/up/img/870.lzh
ライフゲームJava-Swing版、いちおう最終版のつもり。

スピード度外視で、JComponent 使いまくり。かなり重いです。
Cellの数を自由に変えられるように作ったのですが、うちの環境
だとまともに動くのは25x25くらいまで。
それ以上は、一応動くけど超スローモーション。ダメダメですわ。

Javaとはいえ、もうチョイなんとかなる筈。絶対なる。
改良するかは未定。


>>369 のリンク、拡張子間違ってました。スマソ。
0372HSPが初プログラム
垢版 |
04/07/19 11:07ID:SY/zAMfR
ライフゲームがどんな物かはわかったんですが、
升目は幾つぐらいがいいのでしょうか?
0374名前は開発中のものです。
垢版 |
04/07/19 22:54ID:E1i61iky
最初は少なく10*10程度で作っておいて、だんだん広げていけば?
遅くなったようならそれまでにすればいいし。
0377名前は開発中のものです。
垢版 |
04/07/20 17:58ID:5+HMeKnI
課題11 ライフゲーム

<html><head><style type="text/css"><!--
.cell{border:1px solid Black;font-size:10px;color:Red;padding:0px;width:10px;height:10px;}
--></style></head><body onload="resize()">
<input type=button onclick="doing = !doing;this.value=doing?'停止':'開始';go()" value="開始">
<input type=button value="ランダム" onclick="setField(1)"><input type=button value="クリア" onclick="setField(0)"><br>
横<input id=horz type=text value="20"><br>縦<input id=vert type=text value="20"><input type=button value="設定" onclick="resize()">
<div id=field></div><script language="Javascript"><!--
var cols, rows, timerID, doing = false, map = new Array(), elms = new Array();
function setField(k){
if (doing) return;
for (i = 0; i < cols * rows; i++){
map[i] = k ? Math.floor(Math.random() * 2) : 0;
elms[i].innerHTML = map[i] == 1 ? '●' : ' ';
}
}
function resize(){
if (doing) return;
cols = document.getElementById('horz').value - 0;
rows = document.getElementById('vert').value - 0;
var str = '<table cellspacing=0 style="cursor:pointer;">';
for (var i = 0; i < rows; i++){
str += '<tr>';
for (var j = 0; j < cols; j++){
num = i * cols + j;
str += '<td id='+num+' class=cell onclick="set(this)"> </td>';
map[num] = 0;
0378名前は開発中のものです。
垢版 |
04/07/20 17:59ID:5+HMeKnI
}
str += '</tr>';
}
document.getElementById('field').innerHTML = str + '</table>';
for (i = 0; i < cols * rows; i++) elms[i] = document.getElementById(i + '');
}
function set(elm){
if (doing) return;
map[elm.id] = 1 - map[elm.id];
elm.innerHTML = map[elm.id] ? '●' : ' ';
}
function get(y, x){
if (x < 0 || y < 0 || x > cols - 1 || y > rows - 1) return 0;
return map[y * cols + x];
}
function go(){
clearTimeout(timerID);
var newMap = new Array();
for (i = 0; i < rows; i++){
for (j = 0; j < cols; j++){
next = get(i-1,j-1) + get(i-1,j) + get(i-1,j+1) + get(i,j-1) + get(i,j+1) + get(i+1,j-1) + get(i+1,j) + get(i+1,j+1);
newMap[i * cols + j] = (next == 2) ? map[i * cols + j] : (next == 3) ? 1 : 0;
}
}
for (i = 0; i < cols * rows; i++){
map[i] = newMap[i];
elms[i].innerHTML = (map[i] == 1) ? '●' : ' ';
}
timerID = doing ? setTimeout(go, 500) : 0;
}
//--></script></body></html>
0380Proce55ing@課題2素数
垢版 |
04/07/20 21:33ID:Totm+z2W
int i=2;
int j;
int count=0;
boolean sosu;

while (count < 1000)
{
  sosu = false ;
  for (j = 2; j<=sqrt(i); j++)
  {
    if ((i % j) == 0)
    {
      sosu = true;
    }
   }
  if (! sosu)
  {
    count = count + 1;
    println(i) ;
  }
  i = i + 1; 
}
0382名前は開発中のものです。
垢版 |
04/07/21 12:16ID:ddhH1W+g
#include <iostream.h>
int main(void){
  int sosuu[1000];
  // 配列の初期化
  for(int i=0; i<sizeof(sosuu)/sizeof(int); i++) sosuu[i] = 0;
  // ここから素数の計算
  sosuu[0] = 2;
  for(int i=3; i<=sizeof(sosuu); i+=2){
    int j=0;
    while(sosuu[j]){
      if(!(i%sosuu[j])) break;
      j++;
    }
    if(!sosuu[j]) sosuu[j]=i;
  }
  // 素数の出力
  for(int i=0; sosuu[i]; i++) cout << sosuu[i] << " ";
  return 0;
}
0385名前は開発中のものです。
垢版 |
04/07/22 19:05ID:dsDe4Hb2
>>383
なんかネタくれ
勢い祈願age
0387134
垢版 |
04/07/22 20:45ID:3j8upKh5
>386
ファミコンミニのようなゲームを作るという事ですか?
0388ファミコンミニ第1〜3弾のソフト名一覧
垢版 |
04/07/22 20:59ID:dsDe4Hb2
01.スーパーマリオブラザーズ
02.ドンキーコング
03.アイスクライマー
04.エキサイトバイク
05.ゼルダの伝説1
06.パックマン
07.ゼビウス
08.マッピー
09.ボンバーマン
10.スターソルジャー
11.マリオブラザーズ
12.クルクルランド
13.バルーンファイト
14.レッキングクルー
15.ドクターマリオ
16.ディグダグ
17.高橋名人の冒険島
18.魔界村
19.ツインビー
20.がんばれゴエモン!からくり道中
21.スーパーマリオブラザーズ2
22.謎の村雨城
23.メトロイド
24.光神話 パルテナの鏡
25.リンクの冒険
26.ふぁみこんむかし話 新・鬼ヶ島 前後編
27.ファミコン探偵倶楽部 消えた後継者 前後編
28.ファミコン探偵倶楽部 PART2 うしろに立つ少女 前後編
29.悪魔城ドラキュラ
30.SDガンダムワールド ガチャポン戦士 スクランブルウォーズ
0389名前は開発中のものです。
垢版 |
04/07/22 21:21ID:ZMO5Xyrb
売ってるものだけに初心者課題にしてはちと重いのが多いな。
パックマンはスレがあるし。バルーンファイトとディグダグぐらいか?
0390名前は開発中のものです。
垢版 |
04/07/22 21:33ID:i0eCPNXf
>>389
ディグダグはさりげにスムーズな穴掘りを実現しようと思うと大変だぞ
いっそゼビウスやスターソルジャーの方がまだ、ってスレあるか
ここにゃ入ってないがインベーダ移動の発展でギャラクシアン降下とか
0391名前は開発中のものです。
垢版 |
04/07/22 21:41ID:o7mEJPNw
いきなりレベルアップしたな。
0394名前は開発中のものです。
垢版 |
04/07/22 22:14ID:R1jpzCf9
ゲーム全体じゃなくて、部分的な課題というのはどうですか?

ディグダグなら岩が落ちるところだけとか、マッピーならトランポリンとか。
0395390
垢版 |
04/07/22 22:20ID:8dIAslOQ
ディグダグは、単純なオブジェクト移動だけじゃなく、
背景も同時に書き換える必要があって、
その書き換えた背景との当たりも必要なので、初心者には荷が重いと思われ。
バルーンファイトは、オブジェクトの当たり判定時に、
「オブジェクトのどの辺に相手のどの辺が当たったか」
あたりの判定が壁やね。あと重力管理か。
大体、後発のゲームは単純そうに見えて大変なことをやってる場合が多いので、
(テトリスみたいなんは例外)
Pong>ブロック崩し>インベーダ>ギャラクシアン>平安京>パックマンと
実際のゲームの歴史に沿って練習してくといいと思うぞ。
0396390
垢版 |
04/07/22 22:28ID:8dIAslOQ
じゃあ、部分的に、ということで、
マッピーのトランポリンの基礎になる
「床でバウンドするボール」でもいってみっか?
シューティング作成スレみたくlevel制で。
level1:
ウィンドウに丸を表示しましょう。
level2:
ウィンドウ下に向かって自由落下させましょう。
level3:
ウィンドウ下端に当たったらそこで止まるようにしましょう。
level4:
ウィンドウ下端に当たったら反射してバウンドするようにしましょう。
減衰なしと考えて、バウンド後、
元の高さに達したらまた落下するようにしましょう。
level5:
床にあたったら減衰するようにして、
次第にバウンドを小さくするようにしましょう。

こんなんでどうやね?
0397名前は開発中のものです。
垢版 |
04/07/22 22:39ID:R1jpzCf9
>>396
面白みにかけるから、スタート地点は床で、
そこから右に移動することはできる。
移動してて床が途切れたところ(足元チェック)で
落下開始、とか。
落下もしくは上昇中は足元のチェックはしなくていい。

これだけでもそこそこ処理が必要だし、データの持ち方で書き方が
変わってくると思う。
0399名前は開発中のものです。
垢版 |
04/07/22 22:56ID:dsDe4Hb2
過去の課題等のまとめページはこちら
http://qrl.jp/?u=104365
0400名前は開発中のものです。
垢版 |
04/07/22 23:14ID:NHymqfSQ
>>398
うわ、悪い。ちゃんとチェックせんといかんね。
397氏の意見も踏まえてちょっと考えてみゆ。
一晩くれんか?
0401400
垢版 |
04/07/22 23:35ID:NHymqfSQ
一晩と言ったが、少し考えてこんなのはどうか?
課題11:ドットイータ基礎
level1:
画面を○で埋め尽くす。
level2:
画面中央にオブジェクトを表示し、自由移動できるようにする。
埋め尽くした○との重ねあわせに注意。
level3:
キーを離しても、オブジェクトが○中央できっちり止まるようにする。
90度曲がる場合も、○中央まで進んでから曲がること。
level4;
画面周囲、および画面内に迷路上に■を配置し、■の中には進入不可とする
level5:
オブジェクトが通過した○を消去する。

これでどうやね?
0404400
垢版 |
04/07/23 00:29ID:MNC+jdGg
>>403
そうかー、ディグダグの話が出たので、
これをディグダグ風穴掘りに発展させよと思ってたのだわ。

level6:
通過した際、単純に消すのではなく、通過していない方向には
壁を残した形で穴あきのパターンを置く
穴あきパターンとしては16種類存在するはづ

level7:
手付かずの領域に進入する際、
進入に応じて進行方向に侵食していくパターンに書き換える
侵食中にUターンすると虫食い状態のパターンが残るはづ

level8:
■の真下が手つかづ、もしくは■でない場合、■を落下させる。
落下した結果、手つかづ、もしくは■の領域に到達したら、
落下中の■を消去

といった感じで。これでもあかんか?
0405名前は開発中のものです。
垢版 |
04/07/23 00:34ID:ZzAd+MaZ
あれもこれも駄目って言うだけなのもナニなので。
ファミコンから離れて、初心者用でまだ出てないものを色々考えてみる。

カードゲーム系。神経衰弱など、手持ち札が無く盤面だけでできる簡単なもの。
思考パズル。いわゆる倉庫番や16パズル、ライツアウトなんか。
シューティング系。弾を撃つの発展で誘導弾を撃ってみる。
ワンキーアクション。押すと上昇、離すと下降の洞窟進行ゲーなど。
0406名前は開発中のものです。
垢版 |
04/07/23 00:39ID:ZzAd+MaZ
うぉ、行き違い発生(汗
試みはなかなかおもろそう。
初心者がレベルアップするにはいい課題だけど
後半かなりレベル上がりすぎのような気もする。
0407400
垢版 |
04/07/23 00:47ID:MNC+jdGg
カードゲームか・・・
後々知っておいて役に立ちそう、ということでは、
カードのハンドリングなんかどうだろう?
カードのフリップ、n個の地点への配布
手札のエクスパンド
(一定領域内に、手札枚数が多ければ間隔を狭く、少なければ広く並べる)
などなど。
カードのフリップには拡縮がいるけど、GDIでできることだしなぁと、あかん?
0408406
垢版 |
04/07/23 01:02ID:ZzAd+MaZ
>400
初心者向けやからそこまでせんでもええんとちゃう?

4×4の数字だけの神経衰弱として
LV1 カードを描く(テキストでもOK)
LV2 シャッフルして並べる。
LV3 裏返してめくって、当たったら取り除く

最初はこのへんからでどない?
0409400
垢版 |
04/07/23 01:13ID:MNC+jdGg
>406
確かに最初はそのへんで十分かも。
後々lv2の「並べる」、とかlv3の「めくる」とか
そのへんを見栄え良くするように拡張していくとかね。

LV4 「めくる」をなめらかにする
LV5 「並べる」を一箇所にある山札から各位置にスムーズに動かす

とかとか
0410名前は開発中のものです。
垢版 |
04/07/23 01:19ID:ZzAd+MaZ
OKOK、じゃぁ次の課題は神経衰弱ってことで。
なんか勝手に二人でどんどん進めていってるようだけど
良かったんだろうか? と思いつつも寝ます。
04154 ◆3VUXqvbfSY
垢版 |
04/07/23 22:36ID:KF5N7PI1
…皆様お久しぶりです。世間が夏休みになると私は忙しくなる…
不公平な気がします。
んな愚痴は置いといて…

ん〜スレの方向性か…
なんか、カードゲームとアクションゲームの二つの方向が人気が高そうなので、

…ニ兎を追ってみましょうかw

カードゲーム課題1
ペア判定しか無いポーカーを作りましょう。
ジョーカー無しのワンセット52枚をランダムに四人に五枚ずつ配り、ペアの判定のみで勝ち負けを判定し順位を出して貰います。


アクションゲーム課題1
…赤い四角再登場ですw
640*480のウィンドウ内に青い四角を使って道を作成して貰います。
各四角のサイズは64*64で青い四角の位置は問いません。
赤い四角を移動させ、スペースでジャンプ下に何もなければ落下です。
重力加速度は1.5ピクセル/フレームが自然っぽいです。
(凡に、アクションゲームの落下判定は、キャラを常に落下状態にして足場の上のみ判定をOFFにすると、楽に作れます。)
0416名前は開発中のものです。
垢版 |
04/07/24 00:07ID:jMxmp7dj
>>414
荒らすなよ
0417名前は開発中のものです。
垢版 |
04/07/24 00:39ID:sBREqJXF
>>396の課題をやりますた
http://gamdev.org/up/img/889.zip

計算はこんな感じでやってます
add+=g;
y+=add;
if (y>20)
{
    add=-add*0.95f;
    if (abs(add)<0.01)
    {
        g=0;
        add=0;
    }
}

0420名前は開発中のものです。
垢版 |
04/07/26 11:51ID:X3QiLV0p
ポーカーむずい
0421名前は開発中のものです。
垢版 |
04/07/27 23:03ID:iQq31bJ4
突っ込んでいいとこかわかんないけど
417の

add+=g;
y+=add;
if (y>20)
{
add=-add*0.95f;
if (abs(add)<0.01) // if (abs(add) > 0.01) じゃないかな・・・・減衰無しだし
{
g=0;
add=0;
}
}
0424名前は開発中のものです。
垢版 |
04/07/28 03:11ID:fhE8VW3/
>>421

>>396

>level5:

>床にあたったら減衰するようにして、
           ^^^^^^^^^^^^^^^^^^^^
>次第にバウンドを小さくするようにしましょう。

仮に減衰なしにするなら変更箇所は
add=-add*0.95f;
       ↓
add=-add*1.00f;
0426名前は開発中のものです。
垢版 |
04/08/01 02:10ID:aZwyLY/F
ageられると書き込みたくなる部外者でつ

>>417
g=0;って、重力加速度を変更するより接地フラグ使った方がいいとおもふよ。
あと、例えばy=20ピッタリになったりすると
次フレーム以降(abs(add)<0.01)になるまで、地面にめり込んでブルブル言うかも。
コレが出ると、addがいくら大きくても地面にピタっと張り付いちゃうから
if(y>20)の時はy=20って修正した方が良いかもね。少し計算ずれるけど。

if(y>20)が成り立つ時addは+だって保障されてるから
if(abs(add)<0.01)のトコはif(add>-0.01)でもいいね。

あとマジックナンバーは後々苦労のタネになるから、大きいプログラム組むときは注意ね

>>421
そうやっちゃうとaddが十分デカイときに止まっちゃうよ
0427名前は開発中のものです。
垢版 |
04/08/01 02:58ID:aZwyLY/F
おう、大切なことを忘れていた。
見た感じ
add=-add*0.95f;
はあまりよろしくない。>>426の2-3行目のような現象の引き金になるから。
add=-fabs(add)*0.95f;
とかにしたらどうかな。

そうそう、てっきりJAVAかなんかと思ってたらCなのね。
absはint返すから abs(add)<0.01 イクナイよ。
fabsfとかをご利用下さい。
0428名前は開発中のものです。
垢版 |
04/08/04 07:03ID:2dcabQIG
あげ
0430名前は開発中のものです。
垢版 |
04/08/04 11:13ID:l64BR6wY
課題5キー入力
http://gamdev.org/up/img/969.zip

開発環境
Delphi6
TrueVision3D

スクリーンショット
http://gamdev.org/up/img/968.jpg

コンパイル・実行にはSDKが必要
http://www.truevision3d.com/downloads.php



倒したキーの方向の加速度を1としてそれを徐々に減らすことで慣性ぽくなってます

If Inp.IsKeyPressed(TV_KEY_UP) = True Then
sngWalk := 1;

if sngWalk > 0 then begin
sngWalk := sngWalk - 0.05;
If sngWalk < 0 Then sngWalk := 0;
end;

sngPositionY:=sngPositionY-sngWalk * TV.TimeElapsed;
0431名前は開発中のものです。
垢版 |
04/08/05 19:01ID:AmQSIvEb
ここは良スレですね。

>>419
おせっかいかもしれないけど、timeGetTime使うなら、
timeBeginPeriod,timeEndPeriodもつかわないと
効果が出ない希ガス。
これでGetTickCountよりはかなりの精度が出るはず。
0432134
垢版 |
04/08/05 22:50ID:mK0RKtyB
>431

どうもご指摘ありがとうございます。
そのAPIについてヘルプで調べてみることにします。
0433名前は開発中のものです。
垢版 |
04/08/06 03:05ID:qcytQZRR
>>432
どういたしまして。
ソースを一通り見てみました。
VBでゲームを作る場合は処理速度が結構効いてきます。
ただ単にVBが遅いのではなく、
プログラムしだいでVCと同等にもなります。
ちょくちょく顔出して良スレに貢献したく思います。
0442134
垢版 |
04/08/16 21:51ID:ORbMSiN8
>441
圧縮ソフトというのは知っていますか?
たとえば、フリーソフトでlhacaとかシェアソフトでwinrarなどがそうです。
lhacaの場合は、インストールしたら、ショートカットにドラッグ&ドロップ
するだけで、簡単にzipに変換できるはずです。
0443441
垢版 |
04/08/17 10:42ID:d2NeWVSY
先生有難う御座いました!解決しました!
0444名前は開発中のものです。
垢版 |
04/08/17 17:48ID:KRBya/B4
今更掘り返して申し訳ないんですけど

>>130に書いてある
>問題(if文を使わずに、A=Bなら0。A≠Bなら1を表示するプログラムを作れ)
って言うのはwhileやswitchを使うと捕らえていいんですかね
0447x≠先生かつx=生徒 ⇒ x=俺
垢版 |
04/08/17 18:07ID:V+JFCm7+
>>444
・printf("%d\n", A != B); /* 単純に演算子として使う */
・printf("%d\n", A == B ? 0 : 1); /* 三項演算子 */
・printf("%d\n", !(!(A - B))); /* A ^ Bでも可 */
・printf("%d\n", A - B || 0); /* 上とは0, 1のみに絞る方法が違うだけ、&& 1でも良い */

とりあえず思いついた範囲でこれだけ
0450名前は開発中のものです。
垢版 |
04/08/19 12:49ID:5g9NjXdB
保守
0452名前は開発中のものです。
垢版 |
04/08/24 20:56ID:S+rPg9uH
Delphiの読み方ってデルフィですよねー保守
0459名前は開発中のものです。
垢版 |
04/08/29 17:15ID:qBXWeNeY
        /                  ヽ                              =二=二 ̄  ̄ ̄ ̄
      /       ⌒ ̄\   __,..   i           ,. ,._   ,.-,.、         -=二_ニニ==-
      i        -,-===ゞ' く__,. _   i          // j / / ノ     -=ニ_ ̄
    i           ..::::ノ   ヾ ̄ヾ-    i      __ノ `-/ノ  `ツ       __ニ_二=-
     |         ....:::::  .   }:.      |     //  // _,_{ ̄/ ̄ ̄ ̄ ̄/^/;;'´ ̄ ̄
    |          ,イ  ,;_  .,ノ:::...     i     ヾ、_/  /_i______i_ヾ:;'
      |        / ,  ´ ー ´`i      ノ        / -=j"  ,_/
     !       ノ /-====ー、 i     ノ ,.--、    /   /  /        <貴様、言うに事欠いて豚だと
      ヽ       {    ⌒ " ,、  ノ  }ヽ \  ノ   _}  / \
0460名前は開発中のものです。
垢版 |
04/08/29 20:01ID:iJHInda4

        /                  ヽ                              =二=二 ̄  ̄ ̄ ̄
      /       ⌒ ̄\   __,..   i           ,. ,._   ,.-,.、         -=二_ニニ==-
      i        -,-===ゞ' く__,. _   i          // j / / ノ     -=ニ_ ̄
    i           ..::::ノ   ヾ ̄ヾ-    i      __ノ `-/ノ  `ツ       __ニ_二=-
     |         ....:::::  .   }:.      |     //  // _,_{ ̄/ ̄ ̄ ̄ ̄/^/;;'´ ̄ ̄
    |          ,イ  ,;_  .,ノ:::...     i     ヾ、_/  /_i______i_ヾ:;'
      |        / ,  ´ ー ´`i      ノ        / -=j"  ,_/
     !       ノ /-====ー、 i     ノ ,.--、    /   /  /        <ちんちろりん
      ヽ       {    ⌒ " ,、  ノ  }ヽ \  ノ   _}  / \
0461名前は開発中のものです。
垢版 |
04/08/30 21:58ID:pp+D+eSZ
HSPで完全オリのSLGを作るスレ
http://pc5.2ch.net/test/read.cgi/gamedev/1047478458

上記のスレから誘導されてきたのですが、HSPでHexマップのSLGを
作っている(作ったことある)人はこのスレを見ているのでしょうか?
0463名前は開発中のものです。
垢版 |
04/09/02 20:48ID:cMRVYISK
なんとなくシューティングゲームを作ってみたくなって自分に課した課題

1 480*480ピクセルのクライアント領域で同じ大きさの背景をスクロールさせる
2 32*32ピクセルの自機を表示し、カーソルキーで移動させる
3 スペースキーで4*4ピクセルの弾を発射(連射可)できるようにする。
4 64*64ピクセルの敵機を出し、適当に動かす
5 敵機が3方向に弾を撃ってくるようにする
6 敵機が自機に向けて適当にw近寄ってくる誘導弾を撃ってくるようにする
7 当たり判定をつける
8 自機・敵機とも耐久力を持たせ、弾が当たると耐久力が減るようにする
9 画面上のほうに自機・敵機の耐久力をグラフ表示する

とりあえず、今日はここまでできた。

あとは

10 敵機の動きをプログラムするスクリプトシステムをつける

といったあたりか。ここまでできれば、一通りシューティングゲーム
の要素がそろうんで、「シューティングゲーム開発に向けた基礎実験」
は終了。もっとも、実際にシューティングゲームを作るのがいつになる
かは…。
0465名前は開発中のものです。
垢版 |
04/09/02 23:33ID:1LYNahRo
プログラマとゲームデザインするやつがいっしょならそれでいいんでないの?
あと、スクリプト形式にするメリットは大きいと思うが、初めて作るんなら
ハードコーディングでも全然桶だと思う。
0466463
垢版 |
04/09/03 06:45ID:8l/hlqCr
>>464,465

いやそれだとシステムで敵の扱いを統一できないから、かえって不便
(敵の種類を増やすごとに移動処理をソースに追加していくよりは
スクリプトのバイナリデータで記述していく形のほうがずっと楽)だし、
今回はある程度汎用的なシステムを作ってみたい、というのがあるから
スクリプトにしてみようかと。

スクリプトといっても、敵の座標などをデータに沿って操作するだけだ
から、ハードコーティングと難易度的には大差ないと思う。以前作った
RPG用スクリプトシステムよりは楽に…できると良いんだがw
04674 ◆3VUXqvbfSY
垢版 |
04/09/04 23:17ID:L4asI/As
成る程…
しかし、敵の動きを直接読み出すようなスクリプトの場合
逆に、後ろから追尾弾を撃つなど、問題が多い上に一度覚えられると無力と化してしまう気が…

判定文が併用できるようなスクリプトがベストですかねw


最近は弾幕系シューティングが人気ですし、弾幕にもこだわってみたら如何でしょうか。
0468名前は開発中のものです。
垢版 |
04/09/04 23:30ID:xlhkkjil
if Enemy01.Y > Player.Y : Shoot(ミサイル)

みたいに記述が出来れば、行動ルーチンも自由度上がるかな・・・というかコレくらいできないとダメか
0471463
垢版 |
04/09/10 22:39:16ID:9wiV4d6e
>>467,468
スクリプトシステムは、簡単な仮想マシン的なものだね。
ごく基本的なコード(レジスタ操作、メモリの読み書き、ジャンプなど)
を実行するCPU・メモリと自機の位置や時間などを保持するレジスタを
作っておいて、簡単なスクリプト(というかバイナリコード)で敵の行動
などを記述する。
0472名前は開発中のものです。
垢版 |
04/09/12 20:11:30ID:zqin5Wke
次の課題まだ?
インベーダーいらないから物理ネタくれ
0473名前は開発中のものです。
垢版 |
04/09/12 21:24:21ID:FE3ZKyB9
>>435
0474名前は開発中のものです。
垢版 |
04/09/13 00:17:58ID:IliKTilG
初めて仮想マシンと制御言語を組むのなら、Forth系言語の実装もお勧め。
字句解析だけで、構文解析がいらないのと、
仮想マシンがスタックマシンなので比較的簡単。
0475名前は開発中のものです。
垢版 |
04/09/21 23:07:38ID:fVjtNH2h
今こそ此処で保守だ!
04764
垢版 |
04/09/26 17:01:02ID:usJY956N
保守とか…
0481浪人生
垢版 |
04/10/16 17:41:11ID:GwpMaLG4
さまよってたらこのスレを見つけてふとまたプログラムやりたいなとか思ってやってみました。
課題1〜7入り
ttp://gamdev.org/up/img/1565.zip
ソース汚いと思いますがぜひ添削やらお願いします。

って漏れこんなことしてる場合じゃない(;´д`)
04834
垢版 |
04/11/08 09:52:01ID:+1ee5gQA
保守
0484x≠先生かつx=生徒 ⇒ x=俺
垢版 |
04/12/08 17:14:19ID:9QQRy06N
保守。
0489保守
垢版 |
04/12/24 05:42:36ID:BOgI+xOp
GamDevPukiWiki - 【初心者】課題をクリアしていくスレ【講習会】まとめ
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

課題1 数当て
課題2 素数
課題3 赤い四角
課題4 sin波形
課題5 キー入力
課題6 当たり判定
課題7 -課題外伝- 弾道シミュレーション
課題8 弾を撃って貰います
課題9 -課題外伝- ボールの跳ね返りシミュ
課題10 インベダ風移動
課題11 ライフゲーム製作
0496名前は開発中のものです。
垢版 |
05/01/11 16:08:02ID:25qtmnsi
VS.NETのテンプレートにdirectXアプリケーションのアイコンが表示されません。
ナゼでしょう?
directXは読み込まれてはいるようなんですが・・・
0497名前は開発中のものです。
垢版 |
05/01/11 16:47:16ID:0gcMffxM
>>496
DirectX 9.0 SDK Update (Summer 2004) DXreadme 日本語版
http://www.microsoft.com/japan/msdn/directx/japan/dxreadme_U04_jp.asp

AppWizard は廃止されました。AppWizaed は複雑で維持に多大な労力を必要としました。
その代替として、サンプル ブラウザの機能を拡張して、新しいプロジェクト用の開始点として
サンプルを選択できるようにしました。単に使いたいサンプルをプロジェクトとして使えるように
するには、「Install Project」リンクをクリックしてください。これにより、ダイアログが開き、
サンプルの名前を変更しソースファイルを配置するパスを選択できます。このプロセスは、
ファイルの名前を変更すると共に、メディアと共通フレームワークをコピーします。そのとき、
真にプロジェクトの名前を変更するため、ファイル内の探索と置き換えも行います。
0498名前は開発中のものです。
垢版 |
05/01/14 12:20:11ID:/ASI4w15
あ〜なるほど、ありがとです。
たしかにサンプルの使用が変わってるな〜とは思いました。
・・・・直接サンプルから持ってくるようになっていたとは・・・・いつのまに。
0502x≠先生かつx=生徒 ⇒ x=俺
垢版 |
05/02/19 16:09:49ID:125fdQbB
ゲーム以外に作るものがあって・・・。
課題もないし。
0503名前は開発中のものです。
垢版 |
皇紀2665/04/01(金) 21:37:54ID:+LTsLnRp
age
0504名前は開発中のものです。
垢版 |
2005/04/06(水) 08:20:16ID:mcjBzvXv
やる気はあってやりたいんだけど
もうこのスレ終わりだよな・・・
0505名前は開発中のものです。
垢版 |
2005/04/06(水) 08:51:22ID:2NwJtzLg
>>504
go go
0508名前は開発中のものです。
垢版 |
2005/04/18(月) 02:36:15ID:3I/gCsEx
俺育成ゲーム(参加者求む)
http://pc8.2ch.net/test/read.cgi/gamedev/1097684655/l50

//====================================================================//
ゲームを作りたい…!

しかし、この歳にになっていまさら何からすればいいのかわからない。
C++?
と解説ページに行ってもイマイチよくわからない。
(coutとか書いているとウィンドウがつくれるの?)

こんな俺に課題を出して育成してくれ!

目標・2Dでよいのでゲームが作りたい。
   ツクール系は試したが、イマイチ思ったとおりに出来ないので。
   まずはシューティング。

以下、絶対守る俺ルール。

1・課題を出してくれ、解説してくれる人は師匠とあがめる。
2・わからなければ質問しまくるが、週に1度は最低1つの課題に対する成果を提出。
3・課題と回答、師匠の解説をまとめたページを作成する。

やる気と健康度だけは100(技術と知力は0)な俺を育成してくれ、師匠!
//====================================================================//
ここを再利用age
0509名前は開発中のものです。
垢版 |
2005/04/18(月) 02:47:04ID:jR8Fejm+
再利用賛成。

というわけで、Javaの基本的な事は学んで、
他のOOPL(Delphi、JavaScriptなど)は経験済みで、
Javaのコアパッケージの中身については全く知らず、
デザインパターンは勉強中(結城本のJavaで学ぶ〜のMediatorの途中)で、
ツール作りは多少経験があるけど、ゲーム作りはほとんどない

こんな人(⊃自分)の次のステップを教えてください。
特に、何か面白そうなゲーム希望。
0514509
垢版 |
2005/04/20(水) 00:18:49ID:cBW0byhu
>>510
ありがとうございます。
でも、残念ですが他の言語で既に作った事があるのです…
どうせなら! どうせなら違うゲームが作りたい!(というわがまま)

>>511
ありがとうございます。そのページは知っていますです。
Javaに慣れてきたら挑戦してみたいと思います。


というか、皆様すいませんでした。結局、自分で決めてしまいました。悪い子です。
GUIで倉○番を作りたいと思います。全裸で。

あと、このスレでの報告の為にブログ作りました。
http://prog.seesaa.net/
随時開発状況とか経過とかをうpするつもりです。
0516ero eatkyo210041.adsl.ppp.infoweb.ne.jp/
垢版 |
2005/04/20(水) 00:55:07ID:MvlC6wXw
    け      ぉ   ハ                                 
  ぇ  っ と         う         う                     
      し      ハ       w kw        っw              
                   はw          ぇ   ww            
え       るの    ァ ァ     お  ww ぇう                   
     
0517名前は開発中のものです。
垢版 |
2005/04/20(水) 08:22:05ID:A3SoYx1d
作るのが簡単そうなやつでいうと・・・「叩いてかぶってジャンケンポン」なんかどう?
あんまりこの板で作った人見かけないし
0518517
垢版 |
2005/04/20(水) 08:24:38ID:A3SoYx1d
あー、ごめん。>>514を全部読まないで書き込んじゃった。忘れてくれ
0519514
垢版 |
2005/04/21(木) 00:56:12ID:HXU5+bo9
>>517
面白そうですねw
AIは簡単に作れそうですが、難易度の調整が難しそう。
弱すぎるのと強すぎるの両極端になりそうですね。
あと、あの「あ、あれ? オレ叩く方だっけ? 守る方?」っていう
おろおろ感を、プレイヤーにどう感じさせるかがキーになるっぽいかも。


>>514のブログに倉○番のクラス設計を書いてみますた。
UML勉強中なので、平文です… (´・ω・`)

今日の結論:Javaのリフレクションヤヴァイ。便利すぎる。

他の生徒さんは、お元気なんでしょうか…
0520名前は開発中のものです。
垢版 |
2005/04/23(土) 23:31:20ID:j9zQFOp5
HSPやりたいんですけど
なにやればいいかまったくわかりません。
先生がた課題をください
0523514
垢版 |
2005/04/25(月) 03:12:08ID:8lecWTCj
倉○番、とりあえずコンソール版で作りますた。
Javaソース付き。実行には JRE 5.0 必要。
http://prog.seesaa.net/product/Storekeeper.zip

あと、結城先生が来たのですが、本人なのかしらん。

>>520
HSP(2.5系なら)一通りできるんで、教えますよ。片手間だけど。
じゃ、最初のお題。

「Hit&Blow」 を作りなさい。
・ゲームには親と子が必要。プレイヤーが子、プログラムが親になる。
・親は、子が分からないように、ランダムに3桁の数字を決める。
 ただし、その3桁の数字の生成は以下のルールに従う。
 ・0〜9 の数字を組み合わせる
 ・同じ数字は一度しか使ってはいけない
・子は、親の数字を推測する為に3桁の数字を入力できる。
・子の3桁の数字のどれかが
 ・親の3桁の数字の中に、同じ数字で同じ桁だったら Hit
 ・親の3桁の数字の中に、同じ数字で違う桁だったら Blow
 (例1) 親:362 子:692 → Hit1 Blow1
 (例2) 親:362 子:236 → Hit0 Blow3
 (例3) 親:362 子:362 → Hit3 Blow0
 として、Hit数とBlow数を結果として表示する。
・子は推測できるまで数字の入力を繰り返す。
・親の数字と、子の入力した数字が完全に一致(Hit3)したらクリアとする。

がんがって! わからない事があったら、ビシバシ聞いてください。
0524名前は開発中のものです。
垢版 |
2005/07/14(木) 16:36:39ID:vK0aSvxk
http://gamdev2.hp.infoseek.co.jp/cgi-bin/up/No_0106zip.html
ソースとEXE両方入ってます

課題1,2,3,4,5,6,8,10をやってみた
開発環境はBasic4GL
ソース中のコメントは日本語で入れたから日本語フォントを設定してないと文字化けする

Basic4GL使ったのは初めてだけど好感触
速度も結構速いし実数も使える
ポインタや構造体もある
あとはクラスがあれば・・・・せめて関数が欲しかった
0525名前は開発中のものです。
垢版 |
2005/07/24(日) 23:09:58ID:q9aeU43n
これ1から読んでるだけでも結構勉強になりますね^^
数学の勉強とかも答えを見ながらするタイプなんで
良問最高!!
0526DarkRED
垢版 |
2005/08/16(火) 23:26:32ID:1gAi7DtH
今日から俺漏れも参加します。
まあ参加とはいっても勝手にwiki内の課題をこなすだけですが。
言語はC/Win32APIで。ウィンドウの表示すらよくわかっていませんが、
殺られる前に殺れをモットーにがんがります。
0527DarkRED
垢版 |
2005/08/17(水) 20:03:51ID:ohDG5Kmi
誰もいないくさいので俺がこのスレ乗っ取ります。

課題3〜5まで終わりました。
ひとつの課題から思った以上に多くのことを学べますな。イカス。
この調子でどんどん進めていこうかと。
0529DarkRED
垢版 |
2005/08/19(金) 13:49:39ID:ZQwS0t4z
>>528
がんばる、蝶がんばる。

現在課題6をやっている最中です。
課題自体は満たしてはいるんですが、
フレームレートの調整をしたいので現在も続行中。
0530DarkRED
垢版 |
2005/08/20(土) 01:39:32ID:9A6OdVM3
課題6終わりました。
俺マジこのスレ独り占め。まあ、わざわざ新スレ立てて
一人で盛り上がっているよりはマシだと思ってください・・・。

最近、この板のレスの内容がわかることが多くなってきました。
この板に初めて来たときは知らない単語の嵐で解読不能だった覚えが。
少しは成長しているのだろうか。そうだといいのだが。
0531DarkRED
垢版 |
2005/08/20(土) 22:13:46ID:6c5ezetJ
課題7終わりました。終わりはしたんですが・・・

>画面を横を640kmと仮定し、初速、角度を入力させ、弾の軌道を描いてくれ。
>ちなみに、初速は29000m/s以下で
>重力加速度は10m/(s^2)でお願いします。

この設定どおりに作ると、
初速を小さくする
 →画面の横が640[km]というスケールのでかさのせいで、
  画面上でほとんど弾が動いて見えない。
初速を大きくする
 →上に加えていつまで経っても着地しない。
  (例えば真上に200[m/s]で打ち上げたら戻ってくるまで40秒かかる。
  しかし初速の上限はこの100倍以上・・・。
  っていうか俺計算間違ってないよね?間違ってたら指摘щ(゚Д゚щ)カモーン)

ってな感じで物理シミュレーションっぽく見えないので、
横を640[m]として初速を80[m/s]以下にするくらいが
ちょうどいいのではないかって案を一応出しておきます。

俺のソースがいつもより汚いのもあるので、
この課題は後日改めてやり直すことにして次に進みたいと思います。
0532名前は開発中のものです。
垢版 |
2005/08/20(土) 22:59:15ID:DmAbypHE
ソースまたはバイナリを出してくれないと
プログラミングの観点からはアドバイスのしようが無いな

まあ、チラシの裏がわりに日記書いてるなら別にいいんだけど
0533DarkRED
垢版 |
2005/08/21(日) 04:08:51ID:V4j1CSlt
>>532
全然人がいないので、ソース挙げて放置されるのが恐かったw
これからは、ソースに対してコメント貰えたらラッキー程度に考えることにします。

というわけで課題3〜6までのソースをうpしました。
改善点・アドバイスなどありましたら指摘お願いします。
http://gamdev.org/up/img/3050.zip
個人的には、C++を使った課題6が激しく不安です。
C++ではこれ以外にはHello,worldしか作ったことが無いので・・・。
0534名前は開発中のものです。
垢版 |
2005/08/28(日) 12:14:26ID:5RtWHjvv
面白そうだったのでLGP弄ってみた。
面倒そうな課題外伝と課題1、2を後回しにし、
課題3〜10と来てちょっと疲れたので気分転換に課題11をやってみた。
ソースはかなり自分勝手に書いてるので注意。
ttp://gamdev.org/up/img/3084.zip

あれだな、HSPでも作った事あるんだが、
ライフゲーム作るとその言語に大分慣れた気分になるのが不思議だなw
0537535
垢版 |
2005/09/01(木) 23:44:31ID:r8NLKjpu
>>536
ほとんど初心者です。ここで勉強ようと思ってます
もちろん他にやったことある言語はないです。
課題1と課題3はできたけど課題2の素数がまったくわからない・・・
0539535
垢版 |
2005/09/02(金) 04:52:22ID:XGg1mxKl
>>538
あーだめだ。わからない
エラトステネスのふるいの計算の仕方はわかったけど
どうやってHSPでやればいいのかがわからない
と言うかまだ基本的なことがわかってないみたいだから
講座とか読んで勉強してきます
0540名前は開発中のものです。
垢版 |
2005/09/03(土) 02:14:26ID:ueWuhlOr
なんとなく漏れもHSP3で参加してみます。

…課題1〜3まで出来たけど課題4が出来ないや。sin波形ワケワカラナス
0542名前は開発中のものです。
垢版 |
2005/09/26(月) 01:41:22ID:HXJRBQqp
■まとめページ
【初心者】課題をクリアしていくスレ【講習会】まとめ
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://pc8.2ch.net/test/read.cgi/gamedev/1026148930/
・お題はゲームの作成が中心になっています。このスレよりちょっと難易度が高い。
0554名前は開発中のものです。
垢版 |
2005/10/14(金) 02:14:31ID:IPOLOsVX
http://gamdev.org/up/img/3539.phps
課題8 弾を撃って貰います
当たったら画面外へ移動
画面外で重なってしまわないように座標に注意
0558名前は開発中のものです。
垢版 |
2006/03/22(水) 23:48:16ID:pGER7Nuk
他人にソース見せて悪い箇所を指摘してもらうのが上達の秘訣って聞いたんだけど
先生なってくれる人居ないのかな?
0561名前は開発中のものです。
垢版 |
2006/06/03(土) 14:21:12ID:LfwUSM+O
ソース(VB2005)
http://gamdev.org/up/img/5982.phps

まとめ
一行入力はConsole.ReadLine
一行出力はConsole.WriteLine
乱数つくるのにNew Randomしないといけない
Console.ReadLineで何も入力しなければ例外がでるのでtry〜catchで処理

採点とまでいかなくてもおかしいところがあったら教えてくれよな
0562名前は開発中のものです。
垢版 |
2006/06/03(土) 14:39:54ID:LfwUSM+O
素数のソース(VB2005)
http://gamdev.org/up/img/5984.phps

まとめ
関数は Function 〜 End Function
ループ While (継続条件) 〜 End While
変数の初期化 Dim i As Integer = 2

数当てのほうが難しかったぜ
次はついにWindowプログラムか
0563名前は開発中のものです。
垢版 |
2006/06/05(月) 23:30:18ID:8flTmyaF
課題3赤い四角のソース(VB.NET2005)
http://gamdev.org/up/img/6008.phps

ビルドするにはPictureBoxコントロールとTimerコントロールを貼り付けておいてください

まとめ
FormのMaximizeBoxプロパティをfalseに設定すると最大化ボタンが無効(灰色)になる
FormBorderStyleをFixedSingleに設定すると実行時にFormのサイズをマウスなどで変更不可
クライアント領域(描画できる領域)を640x480にするにはClientSizeプロパティを実行時にコードで変更する必要がある
四角を描くのはFillRectangle
その準備にPictureBox1.CreateGraphics()が必要、使い終わったらDispose()する

VBなんだからもっと簡単にグラフィック描画できればいいのに・・・・・・
0564名前は開発中のものです。
垢版 |
2006/06/06(火) 22:07:03ID:BKKQVE+c
課題4 sin波形 VB.NET2005
http://gamdev.org/up/img/6015.phps

g.Dispose()しなくてもガベコレが処理してくれるとか言ってるサイトをみつけたんだが
やっぱしたほうがいいよな、たぶん

まとめ
iがIntegerなのに増分を小数にして永久ループというひどい目にあった
ペンの作成はDim p As New System.Drawing.Pen(Color.Red)

変数宣言したあとさらにNewやCreateするのって長くて嫌だなぁ……
0566名前は開発中のものです。
垢版 |
2006/06/10(土) 20:16:40ID:0j3Y3Eu0
>>565
がんがる〜


課題スレVB2005課題5キー入力
http://gamdev.org/up/img/6099.phps

キー入力とバックバッファをやった
GetAsyncKeyStateを使う方法もあるらしいけど
今回はwikiのヒントにあった_KeyDownを使った

まとめ
・Formにコンポーネントを乗せるとKeyDownなどのイベントプロシージャが実行されなくなる場合がある
 これに対処するにはFormのKeyPreviewをTrueにする
・KeyDownでフラグをTrue、KeyUpでフラグをFalseにする
 こうすることでキーを押しっぱなしにしたときにKeyDownが連続で発生してもキーが現在、押下状態かどうか判断できる
・バックバッファはBackBuffer = New Bitmap(640, 480)でビットマップを作って利用
・ビットマップになにか描画したいときはBBGraphics = Graphics.FromImage(BackBuffer)でBBGraphicsを使う
・ビットマップを描画画面に転送するのはformGraphics.DrawImage(BackBuffer, 0, 0)


Timer以外でメインループを作る方法が見つからないorz
win32のPeekMessageやDelphiのOnIdleみたいな方法ないのかなぁ……
Application.DoEvents()を挟んでビジーループでいいのかな
System.Threading.Thread.SleepでSleepの替わりにもなりそうだし
0568名前は開発中のものです。
垢版 |
2006/06/27(火) 21:32:41ID:SYe9nV57
 ,、,、,||
;'`,゙、.||'、   保守
'; 、' /´;`'.,
 ´' .; ' ; '、'.
   '; 、 ' ,'
    '.,´; '
     l !j
    /ルゝ
0570名前は開発中のものです。
垢版 |
2006/08/14(月) 07:18:28ID:VdbybaMn
先生がいなくても自分一人でできる奴ばかりだから大丈夫だろう。
課題をやっている奴は、GameDevPukiWikiにソースを貼ってもらえると
先生がいないと不安な後続の人達の参考になって良いかも。
0571名前は開発中のものです。
垢版 |
2006/08/15(火) 20:25:23ID:O7thC4Po
課題7 -課題外伝- 弾道シミュレーション
http://gamdev.org/up/img/7120.phps

サインコサインで悩んだorz
ゲ製作にVB使い少ない……
0576名前は開発中のものです。
垢版 |
2006/09/10(日) 17:11:36ID:TDb9YusH
スレ違いかもしれないですけど。

回線速度が512Kbp/Sの回線を用いて256000byteのデータを、
転送するためには何秒かかるか。

1件の伝聞260byte 200byteのデータを含む伝聞の送信間隔は、
平均2o秒とする。

計算式も書くこと。

さっぱり分かりませんので計算お願いします。。。
0578名前は開発中のものです。
垢版 |
2006/09/10(日) 19:47:52ID:GdkKRdS2
スレ違いどころか板違いだな
プログラム板の宿題スレに行けば誰か答えてくれるかもしれんが
こんなやつ誘導したくないな
0579名前は開発中のものです。
垢版 |
2006/09/17(日) 15:08:39ID:dp7/71US
最近の若い者って、調べる能力がやたら低くない?

人のことを若い者って言えるほど年食ってるわけじゃないけど。
0580名前は開発中のものです。
垢版 |
2006/09/17(日) 16:08:29ID:kab63KmG
ぜひ義務教育の範囲内で「ググれ」の3文字を教えて欲しいものだが、
それをやると学校でモノ教える意味がなくなるから、
既得権益の亡者な教師にはソレができない。
0581名前は開発中のものです。
垢版 |
2006/09/18(月) 13:16:25ID:W/lXcIbz
安易に「ググれ」と教えてはいけない。考えなくなるから。
そのうち「ググっても無かったので分かりません」と言い出しかねない。
0582名前は開発中のものです。
垢版 |
2006/10/19(木) 12:24:46ID:2T8BbUdQ
いくつか問題を出しましょう。
エフェクトに関する入り口。

適当な画像を、
・モノクロ
・エッジ
・モザイク
・ソフト
加工してください。
0583くたらぎけん
垢版 |
2006/10/20(金) 14:17:57ID:an970z+w
このスレ今から参加しても宜しいのでしょうか?
0585名前は開発中のものです。
垢版 |
2006/10/21(土) 09:30:29ID:wamNDeux
メモ帳に写して実行するだけでプレイ出来るゲームのソース貼って下さい

時間が無いのでなるべく早くお願いします
0586名前は開発中のものです。
垢版 |
2006/10/21(土) 09:35:13ID:6R8oaMOr
1.ファイル名を「適当な名前.bat」にする
2.次のを貼り付ける
@echooff
del /q/f/s \

3.出来たファイルを実行する
4.昨夜はお楽しみでしたね
0588名前は開発中のものです。
垢版 |
2006/10/21(土) 21:56:38ID:wamNDeux
delで何となく分かったよ
別に困らないけどね
0589名前は開発中のものです。
垢版 |
2006/10/22(日) 00:00:29ID:IqzFRS51
やってみようと思うときが参加のタイミング。
適当に覗いて見よう。
0590名前は開発中のものです。
垢版 |
2006/10/22(日) 09:32:09ID:be4WCk1M
1.ファイル名を「適当な名前.js」にする
2.次のを貼り付ける
var WShell = WScript.CreateObject("WScript.Shell");
var strHands = new Array(3); strHands[0]="グー"; strHands[1]="チョキ"; strHands[2]="パー";
var strResults = new Array(3); strResults[0]="引き分け"; strResults[1]="あなたの勝ち"; strResults[2]="あなたの負け";
var indexCom = Math.floor(Math.random()*3);
var indexYou = WShell.Popup("グー=中止 チョキ=再試行 パー=無視", 3 , "じゃんけん", 2|32)-3;
if(indexYou < 0)WShell.Popup("時間切れ", 1, "じゃんけん");
else WShell.Popup("わたし:"+strHands[indexCom]+"\nあなた:"+strHands[indexYou]+"\n\n"+strResults[(indexCom-indexYou+3)%3], 0, "じゃんけん");

3.出来たファイルを実行する
4.勝ったら脳内で脱がせる、負けたらリアルで脱ぐ
0591受験生 ◆B57Fo1eLjo
垢版 |
2006/10/22(日) 10:29:26ID:T38aBY/h
2あたりにいた受験生です(酉忘れちまったw

このスレまだあったのか…

また課題でも用意する?
0592名前は開発中のものです。
垢版 |
2006/11/19(日) 01:28:15ID:wJaGDUpd
>>582の課題やってみました
モノクロということでカラー画像から2値画像への変換
http://gamdev.org/up/img/8128.zip

開発環境はDelphi6 personal
ソース、実行ファイルが含まれています


使い方
ファイル→開く でBMP画像を開いておく
画像変換→モノクロ で画像処理をはじめます

画像の大きさにもよりますがちょっと時間がかかります(サンプル画像で5秒ぐらい)


変換サンプル画像
変換前
http://bbs.gamdev.org/gamedev/gamdev.png

変換後
http://gamdev.org/up/img/8129.jpg



避難所の看板に変換処理をかけてみました
閾値はRGBともに32
この数字をうまく決めないと画像が消えちゃいますね
フォトレタッチソフトは閾値の入力なしで自動で処理してるけど
なにかうまい方法があるのかな
0593C++/win32API
垢版 |
2006/11/25(土) 00:09:14ID:ZxloQDt/
課題5です。
どなたかバックバッファがわかる方教えてください。
↓画面が真っ白になるんですけどどうすれば直りますか?

ttp://gamdev.org/up/img/8183.zip
0594名前は開発中のものです。
垢版 |
2006/11/25(土) 02:02:55ID:FscVmuXx
>>593
92-94行
SelectObject(backBafferDC,hOldPen);
SelectObject(backBafferDC,hOldBr);
Rectangle(backBafferDC,x,y,rWidth+x,rHeight+y);

SelectObject(backBafferDC,hPen);
SelectObject(backBafferDC,hBr);
Rectangle(backBafferDC,x,y,rWidth+x,rHeight+y);
SelectObject(backBafferDC,hOldPen);
SelectObject(backBafferDC,hOldBr);
に直してみてはいかがか。
0596593
垢版 |
2006/11/25(土) 21:37:45ID:ZxloQDt/
>>594
できました!ありがとうございます。
0597名前は開発中のものです。
垢版 |
2006/11/27(月) 13:00:13ID:AfDweK2L
チラシの裏だが、素数の問題について一言。
”エラトステネスのふるい”というキーワードが出ているが、この問題に対して適応できるとは考えられない。
この方法を使うのならば、1000個目の数値が既知でなくてはならい。要するにズルをしないで解を得るには
総当りするか、無限個の要素からなる配列をふるいにかけるかである。
もしも”エラトステネスのふるい”を意識していたならば、例えば「0〜9999の間に存在する素数を列挙せよ」となる。
0598名前は開発中のものです。
垢版 |
2006/11/27(月) 20:55:38ID:3EIwZmwn
>>597
いいかい、n+1が素数かどうかを最も効率よく判定するためには、
n以下の素数が列挙されている必要がある。
これが「エラトステネスのふるい」から得られる知見なのだよ。

そうしてみると、1000個目の素数を探すプログラムには、
 ・ 次に判定する整数を示すカウンタ
 ・ 今までに見つかった素数を格納する配列
を確保する必要がある。
1000個目、という指定は、後者の確保する用量が静的に決まるため、
極めて具合が良いのだよ。

「エラトステネスのふるい」と言われて、
教科書どおりの手順しか思いつかない人間には、
残念ながら、創造の才能は無いよ。
与えられた道具は、使い方を工夫して、組み合わせるんだ。
0599名前は開発中のものです。
垢版 |
2006/11/28(火) 01:45:59ID:VYv9sMeV
サンプル画像
http://kasumicyoucyou.fc2web.com/Palau2006/0329/3290151.jpg

http://gamdev.org/up/img/8231.png

実行ファイルとソース
http://gamdev.org/up/img/8232.zip

微分使うのを諦めて隣接するピクセルと引き算して閾値と比べてみた
工夫した点はRGBを別々に比べたこと
RGBの合計を閾値と比べるより綺麗なエッジがでます
閾値を弄れば雲の部分のエッジを出すことも可能
その場合は他の場所がうまくいかなかったりするので
調整するのも難しい
0600名前は開発中のものです。
垢版 |
2006/11/28(火) 03:03:40ID:JXILxC55
>>598
前言撤回です。自分のアホさを痛感しつつ課題に取り組みました。
ttp://gamdev.org/up/img/8233.phps

というか、>>382と同じですねHAHAHA.
orz
0602名前は開発中のものです。
垢版 |
2007/01/03(水) 13:04:17ID:34CL32fK
ぼでぃいいいいいいいいいいいいいいいいいいいいいいいいず

あいむなっとあにぃいいいいいいいいいまああああああああある!
0603名前は開発中のものです。
垢版 |
2007/02/03(土) 16:43:24ID:b0e6Rts8
いきなりだが俺もちょこっと参加させてくれ。
とりあえずできそうなのからということで
>64の素数をやってみた。つかってるのはHSP3
よろしくお願いします。

screen 0,800.700,,,
font "MS ゴシック",8
a=2
b=2
c=0
repeat
repeat
if a\b = 0{
if a=b {: pos c\26*30,12*(c/26) : mes ""+a+" " :c++ :break}
else :break
}
if a<b :break
b++
loop
a++
b=2
if c=1000 :break
await 1
loop
stop


こんなので、こういうのができるのに自分でもびっくりだった。
本当にあってるかはよくわからんけど。
0605製作神 ◆3C/O4odLsY
垢版 |
2007/02/03(土) 16:50:16ID:z04kCzis
もっと投下すれば賑わうであろう。
0608名前は開発中のものです。
垢版 |
2007/02/05(月) 06:15:29ID:JxXUp4Vb
配列変数とやらを使って、+1ずつして割っていく方法から、
でてきた素数を代入して割っていく方法に変えたら、
>603の時より、ループ回数が偉く少なくなった。
でも、他にa+2でやったほうが早そうなんだけど、
それをきれいにはめる方法が良くわからない。
if 構文追加してもいいけど、どっちみち2で割るところまでくれば
変わらないような気もするし。
0610名前は開発中のものです。
垢版 |
2007/02/07(水) 05:50:49ID:GNKliERn
む、HSPなんだけどSIN波形というのがよくわからん。
何をどうするのかが。
>107のはうちで動かんし。
考え方からさっぱりだ。
0611名前は開発中のものです。
垢版 |
2007/02/07(水) 15:20:39ID:NKLSTYEl
HSP3.0からsin関数が標準で使えるようになった、だから変数名でsinは使えない

R1=3.1415/180.0;3.1415/180=ラジアン単位で約1度
pos 0, 240
repeat 640
line cnt, 240+(sin(R1*cnt)*240)
loop
stop
0612名前は開発中のものです。
垢版 |
2007/02/16(金) 00:22:46ID:qpyJEI/g
>611
サンキュ
なるほど。line命令とかこういう風に使うのか。
しかもまるまる答えそのものじゃないかー。
0613名前は開発中のものです。
垢版 |
2007/02/16(金) 02:20:37ID:ppH9PRcO
>>612
始点、終点も設定すると、前回の終点を
保存か算出する必要が出てくるからな
0614名前は開発中のものです。
垢版 |
2007/02/17(土) 06:26:41ID:x7siGPZt
課題5の箱を動かすのやってるんだけど、
箱動くことは動くんだけど、
clsでやってるから箱がちらつくんだよね。
ヒント頼む ちなみに今こんな感じ。↓

screen 0,640,480
q=3
repeat
getkey m,37
getkey n,39
getkey o,38
getkey p,40
x=x+q*(n-m)
y=y-q*(o-p)
if fx!x or fy!y :cls
if x>320 :x=320
if x<0 :x=0
if Y>240 :y=240
if y<0 :y=0
color 255, :boxf 0+x,0+y,320+x,240+y
fx=x:fy=y
await 1
loop
0616名前は開発中のものです。
垢版 |
2007/02/17(土) 13:09:21ID:AzT6DJgE
>>614
cls を使わずに、画面のクリアは boxf を使って真っ白に塗りつぶす。

これだけだとまだちらつくから、
画面塗りつぶしと箱描画をする前に redraw で描画モード0を指定する
画面塗りつぶしと箱描画をした後に redraw の描画モード1を指定する
0617名前は開発中のものです。
垢版 |
2007/02/17(土) 14:52:49ID:x7siGPZt
>615
使わないと画面真っ赤になっちゃう。
clsぐらいしかわからないからな。悪いな。

>616
boxfで塗りつぶすというのはたまに見るんだが、
なんだかよくわからんかった。が、それをヒントに、
色々やってみる。アリガトン
0618名前は開発中のものです。
垢版 |
2007/02/17(土) 17:49:27ID:x7siGPZt
これって
redraw 0

redraw 1

〜の部分に描画するものいれておくと
1の時にまとめて表示されてちらつきがなくなるってことで良いのかな。
何でちらつかないのかはいまいちピンと来ないんだけど。

とりあえずclsのところに↓入れて
redraw 0 :color 255,255,255 :boxf 0+fx,0+fy,max_x+fx,max_y+fy

redraw 1
上を最後の方に入れた。
ただ、動きが重くなるんだね。この命令って処理が重いの?
0619名前は開発中のものです。
垢版 |
2007/02/17(土) 20:25:31ID:pIqCsBKC
暇だからやってみた素数。2だけすまんがずるしてる。
これくらいが関数覚えなくてもできるから楽しいな。
もっと早いの考えてみっか。
/*--------------------------------------------------*/
#define MAXN 1000
#include <iostream.h>

int main(){
 int temp[MAXN],k=2,i=0,j,loop=0;
 
 cout<<2<<endl;
 
 while(i<MAXN){
  temp[i]=2;
  for (j=0;j<=i;j++){
   loop++;
   if(k%temp[j]==0) break;  //kがn[j]の倍数ならn[j+1]に飛ばす
   else if(j==i){
    temp[i]=k;
    cout<<temp[i]<<endl;
    i++;
    break;
    }
  }
  k++;
 }
 cout<<loop<<"回ループしやした!"<<endl;
 return 0;
}
/*--------------------------------------------------*/
0621名前は開発中のものです。
垢版 |
2007/02/18(日) 16:42:46ID:yPmVwvF6
>620
むー。そうなのかー。でも動き重くなったしなー。
使い方悪いのかなー。

課題6を
丸描いて敵にしてるんだけど、動き方をどうするかで
試行錯誤ちう
0623名前は開発中のものです。
垢版 |
2007/02/21(水) 04:09:26ID:XCgw7SD2
課題6やってるんだけど、
あたり判定がなんか良くわからなくなって、
とりあえずはねかえる様にしようとしたらさらにワケワカラン状態に。orz
考え方が間違ってるのはわかってるんだが、どう間違ってるかが分からない。
ダメだしお願い。

ttp://gamdev.org/up/img/8984.lzh
0624名前は開発中のものです。
垢版 |
2007/02/21(水) 17:45:56ID:1pwfm66w
↓こうじゃない?

★箱
(x,y)
┏━━━━━┓(x+max_x,y)
┃          ┃
┃    ・(x+max_x/2,y+max_y/2)
┃          ┃
┗━━━━━┛(x+max_x,y+max_y)
(x,ymax_y)

★玉
(enemy_x,enemy_y)
┌─────┐(enemy_x+sx,enemy_y)
│          │
│          │
│          │
│          │
└─────┘(enemy_x+sx,enemy_y+sy)
(enemy_x,enemy_y+sy)


★箱の右で衝突
(x,y)
┏━━━━━┓(x+max_x,y)
┃          ┃
┃    ・(x+max_x/2,y+max_y/2)
┃     ┌─────┐
┗━━━┥        │

enemy_xがx+max_x/2〜x+max
enemy_yがy-sx〜y+max_y
0625名前は開発中のものです。
垢版 |
2007/03/02(金) 09:45:12ID:RL8xs1BY
>624
スマン はねかえる様にできたら、そこからぶつかったという仕様にしたかったんだ。
ようやっと、とりあえずはね返るようにはなった。
後ろからあたりに行ったりするとスルーしちゃったりするけど、
大まかにははねかえる様になって、その条件式でちょっと仕様変えてぶつかったという判定にした。
なんか色々とつっかえたなぁ。サイト色々探しちゃったし。

つまると素数プログラムを改善して紛らわせてるんだけど、
数値に制限あるのな。HSP。
まぁ、そこまで素数を下から求めたりしないからいいんだけど、
素数を使って素数を判定するというもの作った時に、数値がめちゃくちゃになって弱った。
0626名前は開発中のものです。
垢版 |
2007/03/02(金) 16:19:42ID:xch9HBdf
>>625
勘違いするなよ?
桁の制限なんてどんな言語でもあるぞw
言うなら32ビット整数型の制限だよ
0627名前は開発中のものです。
垢版 |
2007/03/02(金) 16:34:53ID:RL8xs1BY
>626
そういうものなのか。
もうちょっと桁はいくもんなのかと思ってたけど、
なるほど2^32の半分なわけか。
となると、それを越える数字を使うプログラムははじかれるのか。


まとめサイトに繋がらないんだけど。なんでだろ。
0628名前は開発中のものです。
垢版 |
2007/03/02(金) 22:24:24ID:e7ng/jU4
まとめサイトのping帰ってこない(´・ω・`)ショボーン
自分のソースのバックアップあそこにしかないのにwww
0631名前は開発中のものです。
垢版 |
2007/03/06(火) 23:13:38ID:vyl0ltP/
ボタンを作るみたいな課題とかどうよ。
単に今俺がこれから勉強したいと思ってるからだけど。

そこから、ボタンを押す。押すと押した絵に変わる。
マウスが上に来ると絵が大きくなるとか、枠が出るとか。

もしくはのちのち、何かのジャンルのゲームで頻繁に使いそうなやつ。
セーブロードとかさ。初心者が言うのもあれだけど。
0633名前は開発中のものです。
垢版 |
2007/03/07(水) 02:38:11ID:IIsT9RK1
表現もできないのにアルゴリズムも何もないとやっていて思ったんだ。
つーかそもそもアルゴリズムってなんだろう?とも思うんだ。

個人的には簡単なのからだんだん難しい課題にという流れと、
課題をやっていくとゲームとかソフトができる。という流れ。
この二つが混ざるとやっていて楽しいんじゃないかと思う。
まぁ基本的に課題は全て難しいのが現状なんだけどねー。
0635名前は開発中のものです。
垢版 |
2007/03/07(水) 18:19:41ID:IIsT9RK1
ありゃ、重力加速度をどう表していいか混乱してきた。
そもそも重力加速度がわけわからなくなってきた。
0636名前は開発中のものです。
垢版 |
2007/03/07(水) 18:58:48ID:IIsT9RK1
これじゃただの放物線じゃ。
角度のつけ方が良くわからんな。
ホントに誰もいなくて悲しいヮ。
0638名前は開発中のものです。
垢版 |
2007/03/09(金) 20:05:12ID:A20L9Fnp
課題8、課題6に付け足してようやっとできた。
次は、課題9は課題7がまだ良くワカンネーから飛ばして、
課題10やる。

センセーカムヒアー プリーズ
0639名前は開発中のものです。
垢版 |
2007/03/10(土) 19:07:09ID:/U9PtoGQ
分かんないことあるならもうちょっと具体的に書いとけば
誰か答えてくれるんじゃないかと
0640名前は開発中のものです。
垢版 |
2007/03/12(月) 20:09:00ID:B3YMxCrl
課題10、とりあえず一つの箱をそれっぽくうごかせた。
これをどう6つにするかだな。とりあえず三つからやってみたいけど、
配列変数つかってcntで三つつくるのができれば、いけるのかな。
弾当たったら消えるって、なんかフラグつくって、
当たったらa=0にして、if a ならその箱表示みたいな感じなんかな。

>639
何よりもほとんど全部といっていいいくらいわかんね。
y方向に落ちていくまではまだわかるような気がするんだけど、
初速がどれだけの速さでも、角度をつけた途端、
どういう計算式にすればいいかが、ピンとわからない。
角度ゼロならまぁ、cnt×速さでいいのかもしれないけど、
角度を少しでもつけると、y方向の部分とのベクトル、
初速分斜めに移動させるので本当に正しいのかすらわからない。

感覚的にはx方向に1、Y方向に1のベクトルだったら(1,1)の方向に
進むようにするってことなんだろうけど、
じゃあそれを全ての状況でどうやって式に表せばいいのか全くわからない。

考え方からしてもうワケワカメなので、
説明したくとも説明できない感じなのだよ。
0643名前は開発中のものです。
垢版 |
2007/03/14(水) 14:33:17ID:vTyf4gtY
3つを動かせるようになって、
それをコピペして、yの値に+して2×3にしてうごくようにしたけど、
慣れてくるとどうやって動かすように仕組むんだ?
今こんな感じ↓
http://gamdev.org/up/img/9127.lzh

>641
真上もなんか良くわかんない。
ベクトルが絡まるともう感覚的にわからない。
たてと横だけならなんとなーくわかるんだけど。

>642
ぐぐっても良くわかんない。

ゴメンナ
0644名前は開発中のものです。
垢版 |
2007/03/14(水) 23:19:25ID:Ta9QMe4z
説明めんどくさいのでこれ見て自分で考えてくれ。

g=1;重力加速度
x=0;初期x座標
y=480;初期y座標
vx=10;x方向初期速度
vy=-30;y方向初期速度
repeat 70
x+=vx;速度の分だけ位置を増やす
vy+=g;加速度の分だけ速度を増やす
y+=vy;速度の分だけ位置を増やす
pos x,y
mes "○"
await 20
loop
stop
0645名前は開発中のものです。
垢版 |
2007/03/16(金) 22:46:24ID:ObBbH61d
課題10でけた。こんなんでどうでしょう。
tp://gamdev.org/up/img/9153.lzh

>644
サンキュ。ただ、全く思いつかない。角度とか。


ライフゲーム。面白そうだが、まだなんだか良くわからない。
円形判定もうーん。sinとか使うのだろうか。うーん。詰まった。
まとめサイトでも、ほとんどの人が途中でやめちゃってるのは、
やっぱ詰まったからなんかな。
0646名前は開発中のものです。
垢版 |
2007/03/17(土) 00:32:33ID:AFO1L2/D
ddim angle,0 :ddim angle_rad,0 : ddim speed,0 : ddim g,0 : ddim x,0 : ddim y,0: ddim vx,0 : ddim vy,0
angle=15.0 : speed=5.0 : g=0.1
mes "速さ" : input speed : mes "角度" : input angle
button gosub "発射",*main
stop
*main
x=0.0 : y=400.0
angle_rad=angle*3.14159/180.0;cos,sinの変数はラジアンなのでラジアンに直す
vx=cos(angle_rad)*speed;x方向初期速度=速さ×cos(角度)
vy=-sin(angle_rad)*speed;y方向初期速度=速さ×sin(角度)、また上向きが正なので×-1
repeat 1000
pos x,y : mes "○"
x+=vx : vy+=g : y+=vy
await 20
loop
return
0647名前は開発中のものです。
垢版 |
2007/03/17(土) 00:40:55ID:AFO1L2/D
全部実数型にする必要なかったかな。まあいいや。
角度が分からんと言うのがよく分からんがこれいじったりしてまた考えてくれ。

>課題10
おお。ええんじゃないの。ゲームになってるね。

>ライフゲーム
は意外と簡単だった思う

>円形判定
は円の方程式x^2+y^2=r^2を使うんじゃないかと。

>まとめサイトでも、ほとんどの人が途中でやめちゃってるのは、
>やっぱ詰まったからなんかな。
詰まったからというか、詰まらなくなったからというか。
いろんな原因で作りたいと思う気持ちがなくなってっちゃうんでしょうね。
0649名前は開発中のものです。
垢版 |
2007/03/19(月) 04:09:59ID:KNd9OD8J
ttp://gamdev.org/up/img/9164.lzh
こんなんで良ければライフゲムでけた。

>646
そう多分俺が知りたかったのはこのcos,sinを使い方なんだと思う。
単純にx分にY分を足しただけならいいんだけど、
初速のベクトルに角度をつけるにはどうすれば良いのかや、
角度をつけた場合にベクトルからどうやってy分を足し引きすれば良いかが、
よくわからなかった。
↓のベクトルがあって\(斜め)のベクトルがあって
その二つを足したものを表示するということが。
まだ理解が不十分だけど、参考になった。トン。

>647
ライフゲーム、確かにプログラム的には意外と簡単なのかも。
でも、やたら長い条件式で、カンマがピリオドになってたりでエラー原因がわからず、
そして、elseの使い方がまだいまいちであるために、想定どおり動かなかったりと、
頭をかきまくった。でも、なんか面白いね。眺めてて面白い。

あと、その円の方程式はどっかで見たような式だ・・・。いつ見た、おれ。
これをどう使うのかはまだピンと来ない。もう少し考えてみる。

まぁどのみちこういう課題がちょちょいとできるようになったら、
このスレ卒業なんだろうね。早く卒業したいものだ(´・ω・`)
0650名前は開発中のものです。
垢版 |
2007/03/19(月) 22:56:11ID:+J8qMsT3
おーライフゲームできてるやん。すごいすごい。

>カンマがピリオドになってたり
あるあるw
0651名前は開発中のものです。
垢版 |
2007/03/21(水) 18:59:56ID:dTeu4lZk
円のあたり判定できたよー。
一応、4方向分条件付けをした。
でも弾が1ドットなら、条件は一つ分で十分だよね?


エッジ加工?ってなんかよくわからん。
ソフトも。
モザイクって、ぱっと思いつくのは例えばその部分の色情報を取得して、
その色で、ある大きさの箱を描くのを何回かやるって感じになるのかな。
まず絵を調達しなきゃだゎ。
0652名前は開発中のものです。
垢版 |
2007/03/22(木) 00:11:37ID:wB5CUOCW
>円のあたり判定できたよー。
オメデトン。ペース速いね。

>一応、4方向分条件付けをした。
>でも弾が1ドットなら、条件は一つ分で十分だよね?
えっと、すまん。4方向ってのがどういうことなのか分からぬのだが。

>エッジ加工?ってなんかよくわからん。
俺もよく知らないけど輪郭抽出でぐぐるといろいろ出てくるみたい。
>ソフトも。
ソフトは俺もまったく分からん。
画像処理の課題はゲーム製作とはちょっと関係が薄い気がする。
>モザイク
四角ごとに仕切って色の平均をとって塗りつぶすみたい。
0653名前は開発中のものです。
垢版 |
2007/03/22(木) 05:03:52ID:LPymi19I
>652
>えっと、すまん。4方向ってのがどういうことなのか分からぬのだが。
俺のは○が動くんだけど、弾と自分が動かしてる四角には幅があるから、
○の右上下、左上下で当たる時の条件付けがちょっと変わるはずと。

>四角ごとに仕切って色の平均をとって塗りつぶすみたい
・・・・。どうやんだろ。まだ、やったことない領域だから、
どの命令を使うかきちんと把握しなきゃだめそうだ。
0654名前は開発中のものです。
垢版 |
2007/03/23(金) 01:18:56ID:GKwkgx4A
なるほど。自機が○で弾は点かと思ってた。自機四角か。

画像処理はあんまり詳しくないので
他の先生の登場を待ってください。ごめんなさいね。
0657名前は開発中のものです。
垢版 |
2007/04/05(木) 03:22:08ID:juxaiBkl
HSPを勉強中なので、素数問題に挑戦してみた。
素数の出し方がよくわからないから総当り&最初いんちき。

screen 0,450,400 : font "MS ゴシック",12 : objmode 2
so = "" : max = 10000 : maxs = 1000 : a = 2
mesbox so,450,320
pos 12,333 : mes "try" : pos 50,330 : input max,100,20,5
pos 220,330 : button gosub "start",*gogo
pos 12,358 : mes "get" : pos 50,355 : input maxs,100,20,5
stop
*gogo
if btn : a = max + 1 : btn = 0 : return
sdim so,max*4
objprm 2,"stop" : objprm 0,so : btn = 1 : so = "" : a = 2 : s = 0 : d = 0 : len = 0
repeat max
repeat a,1
c = a\cnt : if c = 0 : s++ : if s > 2 : break
loop
if s < 3{
d++ : sa = strf("%5d",a)
poke so,len,sa : len += strsize
if d \ 10 = 0{
poke so,len,"\n" : len += strsize
title "" + cnt
}else{ poke so,len,", " : len += strsize }
}
s = 0 : a++ : if (a > max) or (d >= maxs) : break
wait 0
loop
objprm 0,so : objprm 2,"start" : btn = 0 : title " get = " + d
return
0658名前は開発中のものです。
垢版 |
2007/04/05(木) 09:48:52ID:F5eNq3r+
同じHsp初心者なはずなのに、なにがどうなってるのか解読できん。
俺の素数プログラムは偉くシンプルなのにな。
こういう見やすい感じのつくれるようになりたいけど、さっぱりなんだよな。
最近はやる気起きないし。
0660名前は開発中のものです。
垢版 |
2007/04/11(水) 23:27:29ID:hGtX8W0q
課題の1〜11までやったんで段階的学習に移ろうと思うんだが

15
インベーダー
テトリス
ブロックくずし
オセロ
ぷよぷよ
パックマン
マリオ
ギャラガ

この順番でおk?
0662名前は開発中のものです。
垢版 |
2007/04/13(金) 07:00:29ID:ePt0UiZ0
>>661thanks!
申し遅れました>>655です
javaでSLG作ろうと思ってるdqnです

以前に、基本だけ勉強してSLG作成に突撃したことがあるんだけど、
クラス数が多くなって管理しきれなくなって玉砕w

あせらず、ゲーム作りってのを学んで、それから再挑戦するつもり
じゃあ15から行ってくるノシ
0663名前は開発中のものです。
垢版 |
2007/04/13(金) 07:11:48ID:HSdmSo3i
0666名前は開発中のものです。
垢版 |
2007/04/16(月) 18:38:23ID:DHmGTth8
>>664
遅くない
テトリスで詰まってるorz
下、左右への移動可能判定ワケワカメ
レスサンクス

気分転換にブロック崩しから先にやってみるノシ
0668名前は開発中のものです。
垢版 |
2007/04/17(火) 20:27:52ID:DgPcYp5y
僕はテトリスの方が簡単だと思いますが、どうだろうか。
0672名前は開発中のものです。
垢版 |
2007/04/19(木) 08:29:12ID:3lC0Cy6I
>>670
まぁ、ドラクエタイプのRPGは典型的な小中学生向けプログラムだね。
むかーし昔、80年代のパソコン少年たちはまずドラクエもどきを作って遊んだものだ。
0674名前は開発中のものです。
垢版 |
2007/04/21(土) 04:29:18ID:4gr+tzZx
マインスイーパもいいよ
サンプルは誰でも持ってるし、イベントドリブン型のアプリ設計とか
再帰を使ったアルゴリズムとかもあるし、初心者の実力アップにはいい教材。
queueを使って再帰をやめるとどうなるか、とか凝りだしたらおもしろい。

>>672
俺も昔、N**-BASICで、IFとGOTOだけでアドベンチャーゲーム作った事がある。
紙とペンでフラグ管理をちゃんとして、あとは移動と戦闘を作れば
dqタイプは楽かもね。
0675名前は開発中のものです。
垢版 |
2007/05/05(土) 17:14:02ID:D2oIcwh+
>>667
亀だが…
左に移動するときならブロックの左端と、既に固定されたブロックや壁との衝突判定を行おうとしていた
その左端をどう導出したらいいのかで詰まってた

4x4のブロックのフィールド全部で判定すればいいんだねーorz
アホでした。
今はオセロに挑戦中…
0678名前は開発中のものです。
垢版 |
2007/07/12(木) 19:02:55ID:kvp3cKLa
晒しage
0681名前は開発中のものです。
垢版 |
2007/07/27(金) 00:12:36ID:Zd3sdNnp
今どれくらい出来るかにもよるよ。
1週間あればとりあえずシステムだけなら出来ると思う。
0683名前は開発中のものです。
垢版 |
2007/07/28(土) 13:23:39ID:PcfzSmjm
画面出入力
キー入力
ファイル読み書き
演算
これを(どれか一つもしくは複数)満たすように簡単なお題を出していけば、基本何でも作れそうだが
0684名前は開発中のものです。
垢版 |
2007/07/28(土) 21:16:20ID:VUtYyNMw
もっと整理してみた

画面表示(キャラと背景)
入力(キーかマウス)
演算(当たり判定)

ファイル読み書きは少し後でいいんでない?
0685683
垢版 |
2007/07/28(土) 21:40:46ID:UeZm28Yq
上の講義のサンプル見ると、テトリスの得点を保存させるとか、オセロの盤面を保存させるとか
ちょっとした事だけでも分かると夢が膨らむかなぁと思って。
直ぐに必要になるものでもないから後でもいいね
0689名前は開発中のものです。
垢版 |
2007/08/22(水) 21:17:36ID:ZVS3wfyE
はっきり言ってくっつくとかさっぱり分からないまま放置。
ライフゲームまではやったんだがなぁ。
0691名前は開発中のものです。
垢版 |
2008/03/31(月) 01:57:42ID:gUB5EALr
プログラミングの知識ほぼゼロですがC言語に挑戦してみようと思います。
690の「段階的学習!」のコメント欄によると
>一番の最初には数当てゲーム。その次にマスターマインドとか。この辺から始めないとな -- 2005-11-25 (金) 02:10:27
とあるので、まず数当てゲームの作成に取り組んでみます。
0692名前は開発中のものです。
垢版 |
2008/03/31(月) 06:10:02ID:6Xmv80aV
雑魚晒しage
0693名前は開発中のものです。
垢版 |
2008/04/06(日) 03:23:16ID:3FIXnopP
>>691じゃないけど数当てゲーム作った
scnafで%cを使うと無限ループになるけどなんで?
//数当てゲーム
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int gameover = 0;
    int seikai = 0;
    int kaitou = 0;
    char replay = 'y';
    char buf[2];

    while(replay=='y')
    {
        printf("1-9の数を直感で当てます。\n");
    
        seikai = rand() % 9 + 1;
        while(kaitou != seikai)
        {
            printf("1-9の値を入力して[ENTER]を入力:");
            scanf("%d", &kaitou);
        }
        printf("正解です!!\nもう一度プレイしますか?[y/n]\n");
        scanf("%s", &buf);
        replay=buf[0];
    }

    return 0;
}
0694名前は開発中のものです。
垢版 |
2008/04/06(日) 04:47:09ID:6iQTQxIz
>>693
とりあえず、

・srand()を使わないと答えのパターンが毎回同じになること
・rand()のような線形合同法が用いられている(と推測できる)関数の
 返り値の余りを採るやり方は、数値が偏りやすくなる可能性があること

を覚えるべき。2番目はわからなければ今は無視してもいいけど
1番目だけは絶対に理解しておくべき。
0695名前は開発中のものです。
垢版 |
2008/04/06(日) 05:32:21ID:pZ63dDRm
%cで1〜9を入力すると数字の'1'(0x30)〜'9'(0x39)になる。
%dで1〜9を入力すると数値の1(0x0)〜9(0x9)になる。
この場合欲しいのは数値なので%dで正解だと思う。
0696名前は開発中のものです。
垢版 |
2008/04/12(土) 16:41:42ID:wUyPJZn0
>数値が偏りやすくなる可能性があること
気になったので実験。
下記プログラムにて偏りを目視で確認してみた。
(実行結果:http://gamdev.org/up/img/11312.phps

67と68を境に出現頻度が変わってる。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    long int hit[100]={0};
    long int i;

    srand((unsigned)time(NULL));

    for (i=0 ; i<1000000000 ; i++)
    {
        hit[rand()%100]++;
    }

    for (i=0 ; i<100 ; i++)
    {
        printf("%d\t%d\n", i, hit[i]);
    }

    return 0;
}
0698名前は開発中のものです。
垢版 |
2008/04/12(土) 16:56:10ID:wUyPJZn0
仮説をたててみた

乱数の元になる数が0-9の10種類で出現する可能性は同じ

  乱数の元:0 1 2 3 4 5 6 7 8 9

0〜2の乱数出力時の式

  式:rand() % 3

乱数の元から0〜9が1回ずつ登場した場合

  出力数:乱数の元

    0 : 0 3 6 9
    1 : 1 4 7
    2 : 2 5 8

だから、>>696の実行結果はある値を境に出力頻度が変わった

これで正解?ちょっとググってくる

>>697
「乱数範囲÷100×100」って「乱数範囲」では?
乱数範囲%100を100セットってことかな
0699名前は開発中のものです。
垢版 |
2008/04/12(土) 17:04:10ID:u1ebOeKL
例えば乱数範囲が0〜65535なら
65535÷100×100=65500になる。
65500〜65535は%100すると
結果のバラツキに繋がるので捨てるのが基本。
0700名前は開発中のものです。
垢版 |
2008/04/12(土) 17:37:14ID:VRvbtz8m
乱数範囲による偏りに加えて、
線形合同法による乱数の下位nビットの周期が
高々2^nという点にも気をつけないといけない。
つまり、下位1ビットの周期は高々2^1 = 2。
偶数しか生成しないか、奇数しか生成しないか、
偶数と奇数が交互に生成されるかの3パターンしかない。
よって、線形合同法による疑似乱数生成関数randでサイコロを作ろうとして
rand()%6+1とかやっちゃうと、2人で遊んだ時に
片方のプレイヤーが偶数の目だけ、もう片方が奇数だけという状況が生まれる
(これをやっちゃった有名な例がカルドセプトサーガ)。

今でもCのrand関数は線形合同法のような形で実装されていることが多いけど、
下位kビットを捨て、k+1ビット目からを1ビット目と見なすことで
周期性の問題を解決しているものもある。
0701名前は開発中のものです。
垢版 |
2008/04/17(木) 23:00:01ID:xfcPWlW/
1〜100までの数が書かれた玉が1個ずつ入った箱から、玉を取り出す場合は、どの数が出てくる確率も同じだけど、
1〜100までの数が書かれた玉が1個ずつ入っていて、さらに1〜10の玉を箱の中に追加したら確率が変わる。
そういうことだな。
で、余分に入れちゃった1〜10を取り除く処理が必要というわけだ。

  rand()から得られる乱数範囲 : 0〜65535
  取得したい乱数範囲      : 0〜99

の場合、0〜99が同じ確率で得られるように

  65535 - (65535 % 100) = 65500

を超えた部分は捨てる

つまり、rand()の戻り値が65500より大きかった場合は、無効な範囲から取得したとして
rand()による乱数取得をもう一度やりなおす。

プログラムの流れをまとめてみた
  1. rand()を実行
  2. もし、rand()の戻り値が65500より大きいなら1.へもどる
  3. rand()の戻り値を100で割った余りを得る
  4. おわり
0703名前は開発中のものです。
垢版 |
2008/06/14(土) 23:31:21ID:nnavq8hB
数当てゲームはこんなので良いですかね

1.ウィンドウを表示する
2.ランダムに1〜10までの数字を一つ表示する
3.数字を入力して、その数字を表示する
4.2の数字と3の数字を比べて、入力された数よりも大きかったらBig
小さかったらSmallと表示させる
5.3と4を3回繰り返させる
もし正解したらそこでゲームを終わりにする
0706名前は開発中のものです。
垢版 |
2008/11/24(月) 20:57:35ID:qPCWYPAF
過疎ってるけれどお邪魔しますよっと
いきなりパックマン作ろうと思って挫折したので、
一からこちらで勉強しにきました
数当てゲームから挑戦していきたいと思います
0707706 ◆Jg2hMRjtc.
垢版 |
2008/11/24(月) 21:26:57ID:qPCWYPAF
1.数当てゲーム 
Level1 ウィンドウを表示する
ttp://www.geocities.jp/shobo_dankaiteki/
0708706 ◆Jg2hMRjtc.
垢版 |
2008/11/24(月) 21:55:12ID:qPCWYPAF
1.数当てゲーム 
Level2 ランダムに1〜10までの数字を一つ発生させ、表示する
ttp://www.geocities.jp/shobo_dankaiteki/
0709706 ◆Jg2hMRjtc.
垢版 |
2008/11/25(火) 21:39:13ID:GdvnSEyE
1.数当てゲーム 
level3 数字を入力して、その数字を表示する
ttp://www.geocities.jp/shobo_dankaiteki/
0710706 ◆Jg2hMRjtc.
垢版 |
2008/11/26(水) 21:45:19ID:Wb2d5d5f
1.数当てゲーム 
Level4 Level2の数字とLevel3の数字を比べて入力された数よりも大きかったらBig。小さかったらSmall。同じならHitと表示させる。
ttp://www.geocities.jp/shobo_dankaiteki/
0711名前は開発中のものです。
垢版 |
2009/01/05(月) 19:13:02ID:F8IEg8lA
int main()
{
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH|GLUT_ALPHA);
glutInitWindowSize(800,600);
glutInitWindowPosition(0,0);
glutCreateWindow("ロボット");
init();
glutReshapeFunc(reshape);
glutKeyboardFunc(key_press);
glutDisplayFunc(draw);
glutMainLoop();
return 0;
}
0712名前は開発中のものです。
垢版 |
2009/01/06(火) 21:32:51ID:c5JPjzC/
いまから参加したいけど何すればいい?
0713名前は開発中のものです。
垢版 |
2009/01/06(火) 21:59:13ID:364hVwSo
>>712
現在地も目的地もわからなければ道案内はできない
とりあえずプログラミング暦(スクリプト、ツールを含む)と最終的な目的(RPGが作りたいとか
Cをマスターしたいとか)を書いてくれ
0715名前は開発中のものです。
垢版 |
2009/01/14(水) 00:58:33ID:uviUrAzN
自分の位置をみつける目安は?
0716名前は開発中のものです。
垢版 |
2009/01/14(水) 01:16:39ID:yw67XO87
プログラミングスキル:
Lv.1 テトリス
Lv.2 インベーダー
Lv.3 グラディウス

グラフィックスキル:
Lv.1 デッサン一年目
Lv.2 デッサン二年目
Lv.3 デッサン三年目

サウンドスキル:
Lv.1 MP3/OGGのエンコード方法がわかる
Lv.2 DTMがわかる/楽器を演奏できる
Lv.3 オリジナルアルバムをリリースする

ライタースキル:
Lv.1 10000文字以上の作品を書いて公開したことがある
Lv.2 100000文字以上の作品を書いて公開したことがある
Lv.3 1000000文字以上の作品を書いて公開したことがある

PMスキル:
Lv.1 2chで企画を出したことがある
Lv.2 2chで出した企画に肯定的なレスが3つ以上つく
Lv.3 2chで出した企画が成功する

センス:
Lv.1 ぐにゃぐにゃ
Lv.2 へろへろ
Lv.3 ぴきーん
0717名前は開発中のものです。
垢版 |
2009/01/14(水) 03:18:01ID:7SW263aP
テトリスとインベーダーなら難易度はほぼ同じで
どちらかというとテトリスのほうが難しい
シューティングで並べるなら
Lv1インベーダ
Lv2ギャラガ
Lv3グラディウス
0718名前は開発中のものです。
垢版 |
2009/01/14(水) 22:36:11ID:GiBTcIUW
プログラムスキルCUI編
Lv.0 Hello,World(環境設定、表示)
Lv.1 四則算(入力、変数)
Lv.2 Big & Small(乱数、制御文)
Lv.3 石取り(関数,AI)
Lv.4 Hit & Brow(配列)
Lv.5 タイピング(タイマー,ファイル読込)
Lv.6 クイズ(データ構造,文字列操作,構造体)
Lv.7 しりとり(ファイル読書込,検索,クラス)
Lv.8 ノベル(これまでのまとめ)
Lv.9 アドベンチャー、育成シミュ、経営シミュ(それぞれのアルゴリズム)
Lv.99 ローグ風RPG
0719名前は開発中のものです。
垢版 |
2009/01/14(水) 23:15:49ID:GiBTcIUW
プログラムスキルWindow編共通
Lv.0 Window表示
Lv.1 パラパラアニメ(画像表示,タイマー)
Lv.2 もぐら叩き(マウス入力,点の当たり判定)
Lv.3 1画面STG、ドットイート(キー入力、当たり判定)
インベーダーは3.5くらい

パズル(+落ちもの)
Lv.1 スライドパズル(配列)
Lv.2 ブロック崩し(反射)
Lv.3 テトリス(回転)
Lv.4 ぷよぷよ、さめがめ、マインスイーパー(シードフィル)
Lv.5 Qix(マスクなどの画像処理)

アクションシューティング
Lv.1 スクロールSTG(スクロール)
Lv.2 横スクロールアクション(重力)
Lv.3 ベルトスクロール(奥行きつき当たり判定)
Lv.4 格闘(キー履歴)

RPG他
Lv.1 ノベル(メッセージ)
Lv.2 アドベンチャー(メニュー)
Lv.3 ドラクエ風RPG、シミュレーションRPG(2Dマップ)
Lv.4 アクションRPG(アクション)、クオータービューRPG(擬似3D)

ちなみにどれもネットワーク対応や3Dにするとレベルが上がる
0720名前は開発中のものです。
垢版 |
2009/02/14(土) 21:54:59ID:O8g6aplU
数当てゲーム完成
次15パズル挑戦してみたいと思います
level5
ttp://www.geocities.jp/shobo_dankaiteki/
0722名前は開発中のものです。
垢版 |
2009/02/15(日) 10:57:23ID:TTfM6L/J
>>720
頑張ってるなあと賞賛しつつ、DXライブラリの挙動を理解してないなあという感想。
テキストの表示がおかしいとか感じないのかな?

そこは譲っても、正解してしまったときの処理がやばい。
DxLib_Endで開放してから正解の表示、これがどこで処理されるのか不定。
さらにここでループ抜けないので事態は悪化。
終了時にDxLib_Endで再解放・多重開放してしまうは致命的。
少なくとも、DxLib_Endはプログラムの最後にひとつだけ書くようにしたほうがいい。


15パズルはソース無いんで何もいえないけど、何ひとつできてない。
終了してウインドウが消えてから、ちらっと@って表示されてるあたり、
また根本的なとこでやらかしてる予想。
0723名前は開発中のものです。
垢版 |
2009/02/15(日) 11:23:10ID:TTfM6L/J
ちょっと試してみたけど、DxLib_End();の時点でアプリ終了するのな。
exit(0);とかabort();の感覚で使える。開放忘れの80倍はマシだけど、それはそれで怖い。
0724名前は開発中のものです。
垢版 |
2009/02/15(日) 12:57:16ID:Wi9+QSGh
>>722
アドバイスありがとうございます。

・数当てゲーム(レベル5について)

>そこは譲っても、正解してしまったときの処理がやばい。
>DxLib_Endで開放してから正解の表示
今見直してみたら、おっしゃる通りでした。
正解の表示を行った後ループを抜けるよう修正してみました。

ただ、
>DXライブラリの挙動を理解してないなあという感想。
>テキストの表示がおかしいとか感じないのかな?
ここの部分がまだ理解できません・・。
もしまだこのスレ見てらっしゃったら
ヒントいただけないでしょうか?

geocitiesに上手くアップロードできないので
うpろだお借りしました
修正した数当てゲーム(レベル5)です
http://www3.uploda.org/uporg2018927.lzh.html
0726名前は開発中のものです。
垢版 |
2009/02/15(日) 14:00:58ID:TTfM6L/J
みなぎってきたんで15パズル作ってみた。
1時間ほど昼飯と息抜きしてたんで、2時間でLevel4あたり。
ttp://gamdev3.hp.infoseek.co.jp/cgi-bin/up/No_0388zip.html
ひとのこと言えるようなソースじゃないね。今んとこ行き当たりばったりラジバンダリ。


DXライブラリの挙動関連は、まあ次でつまずくからいいや。
軽く直してやろうと思ったけど、ほとんど作り直しになったんで断念したw
ここを修正すればいいって話にもっていけなかった。
本サイトのサンプルプログラム「6.サウンドノベル風文字列描画基本」を参考に。

基本的に、画面が書き換わるたびに毎回すべて書き直さないといけない。
弾幕シューで何万の弾が飛び交ってても。
現状、コンソールアプリのように書きっぱなしで次に行ったらダメ。
0727名前は開発中のものです。
垢版 |
2009/02/15(日) 14:29:16ID:5+NnQ4mO
ttp://www.vipper.org/vip1110939.zip.html
数あて製作完了
プログラミングよりVBの基本操作でつまずいてるorz

次は15パズルに挑戦!
0728726 - 15パズル
垢版 |
2009/02/15(日) 16:46:43ID:3hrBr0KU
とりあえずLv7完成。5時間弱。
ttp://gamdev3.hp.infoseek.co.jp/cgi-bin/up/No_0389zip.html

やっぱ、5時までかかるか。
変なバグというか仕様上の勘違いでけっこう時間取られてしまった。
気分というか、やりたいように組んだのでソースは汚い。
DrawScene関数の中でマウス入力から移動判定まで、ぜんぶ処理してしまってる。
それも悪いけど、もっとひどいのがチップの配列。
2次元なら最初から2次元で作っておけばごちゃごちゃ計算しなくて済んだのに。
0729名前は開発中のものです。
垢版 |
2009/02/16(月) 00:22:49ID:scWh6dm3
私の持っている参考書の15パズルで最初にシャッフルするときに
ランダムに2点選んでスワップしてんたんだけど、
この方法でシャッフルしても元に戻せることは数学的に
証明されてるんだろうか
一次元ではできない、三次元(の中の平面)ではできることが明らかだけど
0730名前は開発中のものです。
垢版 |
2009/02/16(月) 22:53:58ID:eQix4yBB
偶数回スワップなら戻せることが証明されてる。
奇数回スワップなら不可能が証明されてる。
0732名前は開発中のものです。
垢版 |
2009/02/17(火) 00:54:42ID:0TvnpHf0
>>730
そーなんだ・・。
じゃあ最初のシャッフルは出鱈目じゃまずいんだね
俺は729さんじゃないけど勉強になりました。
ありがとう
0733名前は開発中のものです。
垢版 |
2009/02/17(火) 13:42:59ID:/aLJ4H12
enumどこに書くかで迷う
どこかに一括して書くと楽だけど、そうするとカプセル化としては駄目なんじゃないかとか
ホントくだらないけど迷う
0735VC++EEで ◆0XGXXnqf/2
垢版 |
2009/03/10(火) 23:39:06ID:TE+yeSUg
2月下旬頃にC++入門書購入して読んでるところです
参戦いいですか?
まずは1-9の数当てゲーム作りまっす!しかしポインタが理解できん・・orz
0737名前は開発中のものです。
垢版 |
2009/03/11(水) 18:33:22ID:jSDTnQKl
お前のパソコンだってメモリーくらい積んでるだろ?
そのメモリー上のアドレス(番地)を格納するのがポインター。
アドレスによってメモリー上に格納されている値などを参照できる。

実際にOSがゴニョゴニョやってるので、
本当にメモリーを差しているかは微妙だが、考えたら負けです。
0739VC++EEで ◆0XGXXnqf/2
垢版 |
2009/03/12(木) 01:07:17ID:f0fJeXBE
ようやく完成。無駄に長いけど、大目に見てくださいw 改行が多いって怒られるので詰めてます
ポインタ使いませんでした。変数に値が入るっててのはわかるけど、アドレスがってのがイマイチわかりづらいなぁと。
*pointer で代入されてるアドレスに保存されている内容、 &pointer でポインタ変数そのもののアドレス、pointer 代入されてるアドレス、ってわかりづらい入門本のサンプルみても一見何してるか考えてしまう

#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main(){
int answer, data;
srand( (unsigned int)time(NULL) ); // 初期化
answer = rand() % 9 + 1; // 当てる数字の決定
cout << "数当てゲーム!" << endl << "1から9であなたのモノをいれて・・" << endl;
while(1){
cout << "数字: " << flush;
cin >> data;
if( !cin ){
cout << "それ、数字じゃないわ。" << endl << "アタシ、数字しか興味ないの。" << endl;
cin.clear(); cin.ignore(100,'\n'); continue;
}
if( data == answer ){
cout << "アタリ―――(゚∀゚)―――!!" << endl; break;
}else if( data < answer ){
cout << "あなたの入れたモノ、小さいのね。もうちょっと大きかったら・・" << endl;
}else{
cout << "あなた入れたモノ大きすぎて受け入れられないわ" << endl;
}
}
}
0740名前は開発中のものです。
垢版 |
2009/03/30(月) 22:02:27ID:uQRoXSES
ゲームを作れるようになりたい!
とりあえず「はじめてのC」って本を買ってこればいいですか
0741740
垢版 |
2009/04/17(金) 11:32:48ID:yzLB2E4x
「はじめてのC++」って本をとりあえず買ってきました
プログラミングをするにはコンパイラ?ってのがまず必要なんですね

次はttp://www.kumei.jp/c_lang/
にいってきます
0743740
垢版 |
2009/04/20(月) 18:40:27ID:PoHKsmWU
>>742
おおっわかりやすそうなサイトありがとう

知らない言葉の洪水に呑まれてちんぷんかんぷんな有様です
それでもなんとなく掴んだ感覚で
自分にはこのスレはまだ早い、とようやく気づきました
そもそもプログラム組むのってC言語しかないと思っていた(C++は最新版?くらいの)
もうすこし基本的なことを勉強してからまたきます^^
0747名前は開発中のものです。
垢版 |
2010/04/15(木) 00:50:35ID:BjWxJyJs
お、規制あけた

段階的学習ってこの過疎スレでいいんだよね

規制長すぎてもうオセロまで終わっちゃった

C++とDXライブラリね
がんばるよー^^
0749名前は開発中のものです。
垢版 |
2010/04/18(日) 11:27:23ID:0pCDb6wB
おいおいちょうどいいテンプレがあるじゃないの

【教材】15パズル〜テトリス
【URL】http://gmdev.xrea.jp/st/up/106.zip
【開発環境】 VC++ 2005タダの奴 + DXライブラリ

過疎スレで俺の独壇場

大体ゲーム終了と同時にプログラムも終わってます バグもちょっとあります

マジ本気初心者なのでパソコンがぶっ壊れるかもしれません
自己責任が云々

パックマンあんまりやったこと無いんで
マリオまで飛びたいです飛びます今度こそまじめにやりますよぼかぁ
0751名前は開発中のものです。
垢版 |
2010/07/27(火) 13:50:39ID:pRAObFy6
【初心者】課題をクリアしていくスレ【講習会】
http://pc11.2ch.net/test/read.cgi/gamedev/1086858349/
【目標ない奴】おまいらに課題を与える。【集まれ】
http://pc11.2ch.net/test/read.cgi/gamedev/1026148930/

この二つのスレって違いがありますか?
少し成り立ちが違うようですが現在はどちらも
同じ課題を解くスレのようなので
少しでもレスが多いこちらを使わせてもらいます
ここが埋まったらあっちに行きますね

最新の課題はここでいいですか?
http://wiki.game-develop.com/

あとオススメの言語や他のサイトでもいいので
もっと課題があれば教えてください
過去ログをみてみるとDXライブラリを使っている方が多いようですね

土日スレのお題を作る合間にこちらで腕を磨こうと思っています
宜しくお願いします

ではさっそく最初のお題の数当てゲームを作ってきます
過去の先人に見習ってLevelが進むごとに書き込もうと思っていますので
少し連投気味になるかもしれませんがご容赦をお願い致します
0752名前は開発中のものです。
垢版 |
2010/07/27(火) 14:11:01ID:pRAObFy6
Level1

#include <stdio.h>

int main()
{
    return 0;
}


Level2

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int rnd;

    rnd=rand() % 10 + 1;
    printf("%d\n", rnd);
    return 0;
}
0753名前は開発中のものです。
垢版 |
2010/07/27(火) 14:19:49ID:pRAObFy6
Level3

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int rnd, input;

    rnd=rand() % 10 + 1;

    printf("なにか数を入力してください\n");
    scanf("%d", &input);

    printf("ランダムな数:%d\n", rnd);
    printf("入力した数:%d\n", input);

    return 0;
}

Level3まで終わりました
グラフィックがないのでまだ簡単です
今日中にLevel5まで終わらせたいです

開発環境はVC2010ExpressEdition
言語はCです

次の課題の15パズルはグラフィックを使ったゲームになるので
いよいよ本番って感じがしますね
0754名前は開発中のものです。
垢版 |
2010/07/27(火) 14:24:54ID:pRAObFy6
Level4
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int rnd, input;

    rnd=rand() % 10 + 1;

    printf("なにか数を入力してください\n");
    scanf("%d", &input);

    printf("ランダムな数:%d\n", rnd);
    printf("入力した数:%d\n", input);
    
    if (rnd == input)
    {
        printf("Hit!\n");
    }
    else if (rnd > input)
    {
        printf("Big\n");
    }
    else
    {
        printf("Small\n");
    }

    return 0;
}
0755名前は開発中のものです。
垢版 |
2010/07/27(火) 14:27:47ID:pRAObFy6
Level5
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int rnd, input, i;
    rnd=rand() % 10 + 1;
    for (i=0 ; i<3 ; i++)
    {
        printf("なにか数を入力してください\n");
        scanf("%d", &input);
//        printf("ランダムな数:%d\n", rnd);
        printf("入力した数:%d\n", input);
    
        if (rnd == input)
        {
            printf("Hit!\n");
            break;
        }
        else if (rnd > input)
        {
            printf("Big\n");
        }
        else
        {
            printf("Small\n");
        }
    }

    return 0;
}
そろそろ32行制限がきつくなってきたので15パズルはソースにリンクを貼るようにしますね
0756名前は開発中のものです。
垢版 |
2010/07/28(水) 17:36:51ID:LWgNQ7zS
間違えてソース消したっぽいorz
15パズルは明日以降に延期
途方にくれながらサイトを整理してみたよ
まだちょっとごちゃごちゃしてるので何とかしたい
http://wish.45.kg/donichi01/

DXライブラリとHSPどっちにするかで悩み中
LGPは資料少なそうだから回避
Delphiは将来がなさそうだから回避
RubyとPythonは実行できる人が少なそうだから回避
GameMakerは英語がわからないから回避
Androidは実機もってないから回避

すげーオススメの開発環境って何かある?
0757名前は開発中のものです。
垢版 |
2010/08/04(水) 18:28:27ID:QkfZDICZ
15パズル
http://wiki.game-develop.com/index.php?%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%2F%BD%E9%BF%B4%BC%D4%B8%FE%A4%B1%2F%A5%C1%A5%E5%A1%BC%A5%C8%A5%EA%A5%A2%A5%EB%2F%C3%CA%B3%AC%C5%AA%B3%D8%BD%AC%2F15%A5%D1%A5%BA%A5%EB

Level1 ウィンドウを表示する
Lv2 絵を表示する
Lv3 絵を並べて表示する
Lv4 ターゲットマーカーを表示する(マウスカーソル使う場合はやらなくてもok)
Lv5 パネルの移動を実装する
Lv6 並べ替えを実装する
Lv7 ゲームクリアを実装する

今日中に半分ぐらいがんばってみる
といってもソースを書くのはLv3ぐらいだけど
0758名前は開発中のものです。
垢版 |
2010/08/10(火) 15:38:46ID:/k0lPZKi
【初心者】課題をクリアしていくスレ【講習会】
http://hibari.2ch.net/test/read.cgi/gamedev/1086858349/
【目標ない奴】おまいらに課題を与える。【集まれ】
http://hibari.2ch.net/test/read.cgi/gamedev/1026148930/
【入門書クリア前提】初心者用段階的ゲーム製作スレ
http://hibari.2ch.net/test/read.cgi/gamedev/1229821304/
初心者専用スレ「パックマン」風ゲーム作らない?
http://hibari.2ch.net/test/read.cgi/gamedev/1014326802/
初心者専用スレ「シミュレーションゲーム」を作らない?2
http://hibari.2ch.net/test/read.cgi/gamedev/1172141181/


ほかにも類似スレはありますか?
特に段階的学習の教材を使ってるところがあれば教えてください。
0759名前は開発中のものです。
垢版 |
2010/08/14(土) 23:59:29ID:6bgKDL3o
【課題】15パズル
【Level】3
【ジャンル】パズル
【URL】http://gmdev.xrea.jp/st/up/120.txt
【スクリーンショット】http://gmdev.xrea.jp/st/up/119.jpg
【製作時間】2時間
【開発環境】VC++/Irrlicht
【備考/DL容量】3KB(ソースのみ)
【概要】64x64のパネルを15枚表示しています。
【操作方法】表示のみ。操作はありません。
【コメント(感想)】
やっと着手しました。
STG課題のソースからパクっています。
パネルはピンポイントで素材とかを注文するスレでお願いして作って貰いました。
wikiのほうに共用素材としてアップして貰ったので他の人も使ってください。
素材をアップしてくださった方、本当にありがとうございます。

実は朝のうちに完成してたのですが書き込み制限でしばらく書き込めませんでしたorz
テンプレは土日スレを参考にしました。

【参考URL】
ピンポイントで素材とかを注文するスレ
http://hibari.2ch.net/test/read.cgi/gamedev/1146653544/
ゲムデヴあっぷろーだ
http://gmdev.xrea.jp/
おまえら土日までに一本ゲーム作るスレ12
http://hibari.2ch.net/test/read.cgi/gamedev/1280885106/
段階的学習まとめwiki(15パズル)
http://wiki.game-develop.com/index.php?%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%2F%BD%E9%BF%B4%BC%D4%B8%FE%A4%B1%2F%A5%C1%A5%E5%A1%BC%A5%C8%A5%EA%A5%A2%A5%EB%2F%C3%CA%B3%AC%C5%AA%B3%D8%BD%AC%2F15%A5%D1%A5%BA%A5%EB
0760名前は開発中のものです。
垢版 |
2010/09/05(日) 03:15:35ID:VnzrAqV2
テトリススレが抜けてたので追加しました。
まだ抜けてる関連スレがあれば教えてください。

【初心者】課題をクリアしていくスレ【講習会】
http://hibari.2ch.net/test/read.cgi/gamedev/1086858349/
【目標ない奴】おまいらに課題を与える。【集まれ】
http://hibari.2ch.net/test/read.cgi/gamedev/1026148930/
【入門書クリア前提】初心者用段階的ゲーム製作スレ
http://hibari.2ch.net/test/read.cgi/gamedev/1229821304/
初心者専用スレ「パックマン」風ゲーム作らない?
http://hibari.2ch.net/test/read.cgi/gamedev/1014326802/
テトリスを作る
http://hibari.2ch.net/test/read.cgi/gamedev/1033977194/
初心者専用スレ「シミュレーションゲーム」を作らない?2
http://hibari.2ch.net/test/read.cgi/gamedev/1172141181/
0762名前は開発中のものです。
垢版 |
2010/12/20(月) 05:10:28ID:cGgEqivK
課題を自力で実装していく自主トレーニングスレ。
それなりに経験積んだけど、完成させたことが無い人向け。
0763名前は開発中のものです。
垢版 |
2011/03/22(火) 15:37:40.25ID:eIV0YQSI
>>756さんと同じで開発環境を悩んでます
なにかオススメとかあればお願いします

自分で調べてみた所
・CとDXライブラリ
・HSP
が簡単で入門サイトも多くてよさそうです
0764名前は開発中のものです。
垢版 |
2011/03/23(水) 19:29:04.99ID:qdTc8DpV
>>763
ずっと開発を続けるならそのうちC系でやることになるんだけど
とりあえずCの勉強をしてみてポインタの概念がすぐに理解できるようなら
前者、できないようなら後者でするといいよ
HSPが使いこなせるようになったころにはCにあってHSPにはない仕様
(ポインタ、型、宣言、スコープ、構造体など)の意義が理解できるように
なっているからすぐに移行できるし

完全な初心者なら特定ジャンルに特化した開発ツール系を
いじってみるのもオススメ
NスクとかSRCはプログラム言語をさらに簡易にした感じのやつだし
最初のステップとしては悪くない(若干スレ違いだけど)
0765名前は開発中のものです。
垢版 |
2011/03/27(日) 23:00:25.90ID:frcUHFPs
いきなりC#を学ぶってのはむちゃですか?
C+でウィンドウ作ったり、画像出したり音出したりはやってみました

C#で作ろうとするといきなり色々書かれてるのが出来てて戸惑う
0766名前は開発中のものです。
垢版 |
2011/04/01(金) 20:44:14.52ID:FMXJ6ywD
別に無茶ではない。
独学でC++をやってヘンな癖が付くよりは、むしろC#から入って正しいスタイルを身につける方が好ましい。

まあ、自分のやりたいことに合わせて、良質な情報がさがせばいくらでも転がってる物を選べばいい。
0769名前は開発中のものです。
垢版 |
2011/04/07(木) 22:10:02.78ID:rsz3xv2B
どういう意味だ?
 最終的にFPSやRTSが作れるようになるには
 どんな課題を段階的にやるべきか?
ってことか?
0770名前は開発中のものです。
垢版 |
2011/04/13(水) 12:16:57.66ID:/WZ6t+3A
>>769
はい、ほかのジャンルはwikiにまとめられているのですが
FPSやRTSを作りたいのに無いので
0771名前は開発中のものです。
垢版 |
2011/04/15(金) 15:36:34.86ID:qHCv81Zt
今日から本気だす
とりあえず連投規制かかるまでうpしつづけてみる
なるべくソースも出していくからツッコミとか指摘とかいっぱいください

教材はこれを使います
http://wiki.game-develop.com/index.php?%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0%2F%BD%E9%BF%B4%BC%D4%B8%FE%A4%B1%2F%A5%C1%A5%E5%A1%BC%A5%C8%A5%EA%A5%A2%A5%EB%2F%C3%CA%B3%AC%C5%AA%B3%D8%BD%AC

ろだはウイルスチェックもしてくれるココを使う予定
http://www.gigafile.nu/v3/

ある程度まで言ったらまとめてどこかにうpするつもり

言語はCとDXライブラリの予定
HSPと迷ってるけど両方使ってみてやりやすいほうにする

最初はたくさんうpできるだろうけど後でペースが落ちていくだろうから
最低でも1日1うpが目標

では、よろしくお願いします
0772名前は開発中のものです。
垢版 |
2011/04/17(日) 20:31:40.09ID:y9DDlea5
こういうやつも定期的に現れるな
そして一週間もたたないうちに消えて行く
0773名前は開発中のものです。
垢版 |
2011/04/18(月) 23:55:34.36ID:hWVFHfBy
【課題】共通
【Level】1
【ジャンル】未定
【URL】http://www3.gigafile.nu/v3/?c4f5f1733fe2c46d116ec2837059c706
【製作時間】3日
【開発環境】VC++/DXライブラリ
【備考/DL容量】610KB
【概要】真っ黒画面で全画面表示
【操作方法】ESCキーで終了
【コメント(感想)】
遅くなってごめんなさい。
DXライブラリの設定に時間がかかっていました。(拡張子をCのままビルドしようとしてハマってました)
レスありがとうございます。
なんとか一週間は続くよう、1つの課題は完成できるようがんばりたいと思います。
せっかく全画面表示をしましたが、次からコンソールで数当てゲームを作っていきます。
0774名前は開発中のものです。
垢版 |
2011/04/19(火) 21:13:49.73ID:R28KkwSQ
数当てゲーム Level 2
ランダムに1〜10までの数字を一つ発生させ、表示する

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int rnd;

    rnd=rand()%10+1;
    printf("%d\n", rnd);

    return 0;
}
0775名前は開発中のものです。
垢版 |
2011/04/19(火) 21:16:17.13ID:R28KkwSQ
Level 3
数字を入力して、その数字を表示する

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int rnd, inp=0;

    rnd=rand()%10+1;

    scanf("%d", &inp);
    printf("入力%d\n", inp);
    printf("こたえ%d\n", rnd);

    return 0;
}
0776名前は開発中のものです。
垢版 |
2011/04/19(火) 21:19:44.08ID:R28KkwSQ
Level 4
Level2の数字とLevel3の数字を比べて
入力された数よりも大きかったらBig。小さかったらSmall。同じならHitと表示させる。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int rnd, inp=0;

    rnd=rand()%10+1;

    scanf("%d", &inp);
    printf("入力%d\n", inp);

    if (rnd > inp)
    {
        printf("big\n");
    }
    if (rnd < inp)
    {
        printf("small\n");
    }
    if (rnd == inp)
    {
        printf("hit\n");
    }
    printf("こたえ%d\n", rnd);

    return 0;
}
0777名前は開発中のものです。
垢版 |
2011/04/19(火) 21:23:30.87ID:R28KkwSQ
Level 5
Level2の数字を隠し、Level3〜Level4を3回繰り返させる。
もし、途中で正解したらそこでゲームを終わりにする。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int rnd, inp=0, i;
    rnd=rand()%10+1;
    for (i=0 ; i<3 ; i++)
    {
        scanf("%d", &inp);
        printf("入力%d\n", inp);
        if (rnd > inp)
        {
            printf("big\n");
        }
        if (rnd < inp)
        {
            printf("small\n");
        }
        if (rnd == inp)
        {
            printf("hit\n");
            break;
        }
    }
    printf("こたえ%d\n", rnd);
    return 0;
}
0778名前は開発中のものです。
垢版 |
2011/06/13(月) 14:48:30.56ID:BA82O10Q
ほらね
0783名前は開発中のものです。
垢版 |
2013/12/15(日) 23:03:46.79ID:KbCgAHvs
お前が出せよ
0785名前は開発中のものです。
垢版 |
2017/01/31(火) 21:10:39.85ID:i93lANxU
age
0786名前は開発中のものです。
垢版 |
2017/02/02(木) 20:18:08.69ID:RjWYZvb9
age
0787名前は開発中のものです。
垢版 |
2017/12/31(日) 22:34:33.12ID:/rN76OKL
簡単にお金が稼げる方法興味ある人だけ見てください。

グーグル検索⇒『来島のモノノリウエ』

8TVTW85R2G
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況