ゲームに必要な要素を先生が出してくれます
その課題をクリアしていく講習会です
探検
【初心者】課題をクリアしていくスレ【講習会】
■ このスレッドは過去ログ倉庫に格納されています
1名前は開発中のものです。
04/06/10 18:05ID:VshiFFV8228LGP@課題5キー入力
04/07/01 22:17ID:TMNGfYFe CH = G@SETUP( 640 , 480 , 16 , 1 )
LOOP //無限ループ
//赤い四角を黒で塗りつぶして消す
G@GDISETBRUSH( 0 , 0 , 0 , 0 )
G@GDIBOXFULL( CH , X, Y, X+320, Y+240 )
I@KEYGET() //キーの状態を得る
//I@KEYBTNの引数に調べたいキーをいれ、戻り値が1なら押してる状態
IF I@KEYBTN(0xC8)=1 THEN //0xC8はカーソルキー↑
IF Y>0 THEN
Y=Y-1
ENDIF
ENDIF
IF I@KEYBTN(0xCB)=1 THEN
IF X>0 THEN
X=X-1
ENDIF
ENDIF
IF I@KEYBTN(0xCD)=1 THEN
IF X<320 THEN
X=X+1
ENDIF
ENDIF
IF I@KEYBTN(0xD0)=1 THEN
IF Y<240 THEN
Y=Y+1
ENDIF
ENDIF
//赤い四角を描く
G@GDISETBRUSH( 0 , 1.0 , 0 , 0 )
G@GDIBOXFULL( CH , X, Y, X+320, Y+240 )
G@FLIP()
ENDLOOP
LOOP //無限ループ
//赤い四角を黒で塗りつぶして消す
G@GDISETBRUSH( 0 , 0 , 0 , 0 )
G@GDIBOXFULL( CH , X, Y, X+320, Y+240 )
I@KEYGET() //キーの状態を得る
//I@KEYBTNの引数に調べたいキーをいれ、戻り値が1なら押してる状態
IF I@KEYBTN(0xC8)=1 THEN //0xC8はカーソルキー↑
IF Y>0 THEN
Y=Y-1
ENDIF
ENDIF
IF I@KEYBTN(0xCB)=1 THEN
IF X>0 THEN
X=X-1
ENDIF
ENDIF
IF I@KEYBTN(0xCD)=1 THEN
IF X<320 THEN
X=X+1
ENDIF
ENDIF
IF I@KEYBTN(0xD0)=1 THEN
IF Y<240 THEN
Y=Y+1
ENDIF
ENDIF
//赤い四角を描く
G@GDISETBRUSH( 0 , 1.0 , 0 , 0 )
G@GDIBOXFULL( CH , X, Y, X+320, Y+240 )
G@FLIP()
ENDLOOP
229LGP@課題6当たり判定
04/07/02 03:30ID:4ZvlEEie CH = G@SETUP( 640 , 480 , 16 , 1 )
X=320
Y=240
//無限ループ
LOOP
//黒で塗りつぶし
G@GDISETBRUSH( 0 , 0 , 0 , 0 )
G@GDIBOXFULL( CH , 0, 0, 640, 480)
//キー入力
//キーの状態を得る
I@KEYGET()
//I@KEYBTNの引数に調べたいキーをいれ、戻り値が1なら押してる状態
//0xC8はカーソルキー↑
IF I@KEYBTN(0xC8)=1 THEN
IF Y>0 THEN
Y=Y-1
ENDIF
ENDIF
IF I@KEYBTN(0xCB)=1 THEN
IF X>0 THEN
X=X-1
ENDIF
ENDIF
X=320
Y=240
//無限ループ
LOOP
//黒で塗りつぶし
G@GDISETBRUSH( 0 , 0 , 0 , 0 )
G@GDIBOXFULL( CH , 0, 0, 640, 480)
//キー入力
//キーの状態を得る
I@KEYGET()
//I@KEYBTNの引数に調べたいキーをいれ、戻り値が1なら押してる状態
//0xC8はカーソルキー↑
IF I@KEYBTN(0xC8)=1 THEN
IF Y>0 THEN
Y=Y-1
ENDIF
ENDIF
IF I@KEYBTN(0xCB)=1 THEN
IF X>0 THEN
X=X-1
ENDIF
ENDIF
230LGP@課題6当たり判定
04/07/02 03:30ID:4ZvlEEie IF I@KEYBTN(0xCD)=1 THEN
IF X<(640-32) THEN
X=X+1
ENDIF
ENDIF
IF I@KEYBTN(0xD0)=1 THEN
IF Y<(480-32) THEN
Y=Y+1
ENDIF
ENDIF //敵移動
TY=TY+1;
IF TY>(640-32) THEN
TY=0
TX=RAND()%(640-32)
ENDIF
//赤い四角を描く
G@GDISETBRUSH( 0 , 1.0 , 0 , 0 )
G@GDIBOXFULL( CH , X, Y, X+32, Y+32 )
//敵を描く
G@GDISETBRUSH( 0 , 0 , 1.0 , 0 )
G@GDIBOXFULL( CH , TX, TY, TX+32, TY+32 )
//当たり判定
IF (ABS(X-TX)<32) AND (ABS(Y-TY)<32) THEN
END
ENDIF
G@FLIP()
ENDLOOP
IF X<(640-32) THEN
X=X+1
ENDIF
ENDIF
IF I@KEYBTN(0xD0)=1 THEN
IF Y<(480-32) THEN
Y=Y+1
ENDIF
ENDIF //敵移動
TY=TY+1;
IF TY>(640-32) THEN
TY=0
TX=RAND()%(640-32)
ENDIF
//赤い四角を描く
G@GDISETBRUSH( 0 , 1.0 , 0 , 0 )
G@GDIBOXFULL( CH , X, Y, X+32, Y+32 )
//敵を描く
G@GDISETBRUSH( 0 , 0 , 1.0 , 0 )
G@GDIBOXFULL( CH , TX, TY, TX+32, TY+32 )
//当たり判定
IF (ABS(X-TX)<32) AND (ABS(Y-TY)<32) THEN
END
ENDIF
G@FLIP()
ENDLOOP
231名前は開発中のものです。
04/07/04 00:00ID:UWWF49AF 保守age
04/07/04 11:07ID:3DUC6+Xf
課題1
title "数当てゲーム"
screen 0,150,65 ;ウィンドウのサイズを調整
mes "1〜9から一つ入力"
input a ;入力ボックスを出す
*random
rnd b,9 ;0〜8の乱数発生
b+=1 ;1〜9にする
c=1
*number
button "これだ!",*judge
stop
*judge
if a=b:dialog "当たり!",0,""+c+"回目":goto *random
if a>b:dialog "もっと小さい",0,""+c+"回目"
if a<b:dialog "もっと大きい",0,""+c+"回目"
c+=1
goto *number
課題3
title "赤い四角の描画"
screen 0,640,480,1
color 255,0,0:boxf 0,0,320,240
stop
http://gamdev.org/up/img/801.zip
課題2はヨクワカラナイです。ヒントくれませんか?
title "数当てゲーム"
screen 0,150,65 ;ウィンドウのサイズを調整
mes "1〜9から一つ入力"
input a ;入力ボックスを出す
*random
rnd b,9 ;0〜8の乱数発生
b+=1 ;1〜9にする
c=1
*number
button "これだ!",*judge
stop
*judge
if a=b:dialog "当たり!",0,""+c+"回目":goto *random
if a>b:dialog "もっと小さい",0,""+c+"回目"
if a<b:dialog "もっと大きい",0,""+c+"回目"
c+=1
goto *number
課題3
title "赤い四角の描画"
screen 0,640,480,1
color 255,0,0:boxf 0,0,320,240
stop
http://gamdev.org/up/img/801.zip
課題2はヨクワカラナイです。ヒントくれませんか?
233名前は開発中のものです。
04/07/04 11:13ID:dw9vgL9Y234名前は開発中のものです。
04/07/04 11:14ID:dw9vgL9Y 自分未満の整数の間違い
以下だったら自分も含むからね
以下だったら自分も含むからね
235名前は開発中のものです。
04/07/04 12:05ID:WDudAYFD 自分の1/2で十分じゃね?
236名前は開発中のものです。
04/07/04 12:35ID:yqwpjhZT (√自分)でよくない?
237名前は開発中のものです。
04/07/04 12:38ID:WDudAYFD 平方根求めるより楽だし
238名前は開発中のものです。
04/07/04 12:55ID:9GihiSR8 >>236-237
なんで平方根まででいいんだっけ?
なんで平方根まででいいんだっけ?
239名前は開発中のものです。
04/07/04 13:00ID:WDudAYFD それ以上のは今までに計算した分と対応してるだけ
04/07/04 19:58ID:3DUC6+Xf
えと、素数はどういうものかはわかるんですが、プログラムというかHSPでの算出方法が…
04/07/04 20:45ID:WDudAYFD
; 素数判定 with HSP 少しだけ高速版
sdim log, 7000: notesel log
title "素数判定 - Calculating..."
mesbox log, 640, 480
log = "2": n = 1
repeat 999
repeat
n += 2: f = 1
repeat n>>1-1,3
if n \ cnt = 0: f = 0: break
continue cnt+2
loop
if f: break
loop
noteadd ""+n
await
loop
objprm 0, log
title "素数判定"
stop
sdim log, 7000: notesel log
title "素数判定 - Calculating..."
mesbox log, 640, 480
log = "2": n = 1
repeat 999
repeat
n += 2: f = 1
repeat n>>1-1,3
if n \ cnt = 0: f = 0: break
continue cnt+2
loop
if f: break
loop
noteadd ""+n
await
loop
objprm 0, log
title "素数判定"
stop
04/07/04 20:47ID:WDudAYFD
あ、インデントかけるの忘れとった。。。
; 素数判定 with HSP 単純版
sdim log, 7000: notesel log
title "素数判定 - Calculating..."
mesbox log, 640, 480
repeat ,2
n = cnt
repeat cnt-2, 2
if n \ cnt = 0: n = 0: break
loop
if n{
noteadd ""+cnt
i++
if i >= 1000: break
await
}
loop
objprm 0, log
title "素数判定"
stop
; 素数判定 with HSP 単純版
sdim log, 7000: notesel log
title "素数判定 - Calculating..."
mesbox log, 640, 480
repeat ,2
n = cnt
repeat cnt-2, 2
if n \ cnt = 0: n = 0: break
loop
if n{
noteadd ""+cnt
i++
if i >= 1000: break
await
}
loop
objprm 0, log
title "素数判定"
stop
243Ruby@素数高速化
04/07/05 00:33ID:K58VA1M5 以前のバージョン
43.702999830246秒
ループ 31343403回
新しいバージョン(奇数のみ評価、平方根までチェック)
0.921999931335449秒(約47倍)
ループ 225062回(約139倍)
思ったより高速化されてビクーリ
print "2\n"
count=1
loopCount=0
i=3
old=Time.now.to_f;
while count<1000 do
sosu=true
for j in 3..Math.sqrt(i) do
loopCount=loopCount+1
if ( (i % j) == 0)
sosu=false
end
end
if (sosu)
print "#{i}\n"
count=count+1
end
i=i+2
end
print " #{Time.now.to_f - old}秒かかりました\n"
print " #{loopCount}回ループしました\n"
print "素数を#{count}個みつけました\n"
43.702999830246秒
ループ 31343403回
新しいバージョン(奇数のみ評価、平方根までチェック)
0.921999931335449秒(約47倍)
ループ 225062回(約139倍)
思ったより高速化されてビクーリ
print "2\n"
count=1
loopCount=0
i=3
old=Time.now.to_f;
while count<1000 do
sosu=true
for j in 3..Math.sqrt(i) do
loopCount=loopCount+1
if ( (i % j) == 0)
sosu=false
end
end
if (sosu)
print "#{i}\n"
count=count+1
end
i=i+2
end
print " #{Time.now.to_f - old}秒かかりました\n"
print " #{loopCount}回ループしました\n"
print "素数を#{count}個みつけました\n"
244名前は開発中のものです。
04/07/05 01:37ID:o/9mlWPU >>241を改良してみた。
; 素数判定 with HSP 何気に高速版
title "素数判定 - Calculating..."
#const MAX_COUNT 1000
ll_libload dll,"kernel32.dll" :ll_getproc func,"GetTickCount", dll
ll_libfree dll :ll_retset refunc
sdim log, 7 * MAX_COUNT :notesel log
dim result, MAX_COUNT
mesbox log, 640, 480
noteadd "2",0,1 :result.0 = 2 :count = 3 :i = 1
;測定
ll_callfunc temp,0,func
start = refunc
repeat
flg = 1;
repeat i
if count \ result.cnt = 0 : flg = 0 :break
loop
if flg {
noteadd ""+count, -1 :result.i = count
i++ :if i >= MAX_COUNT: break
await
}
count += 2
loop
ll_callfunc temp,0,func
refunc -= start :dialog "" + refunc + "ms"
objprm 0, log :title "素数判定"
stop
; 素数判定 with HSP 何気に高速版
title "素数判定 - Calculating..."
#const MAX_COUNT 1000
ll_libload dll,"kernel32.dll" :ll_getproc func,"GetTickCount", dll
ll_libfree dll :ll_retset refunc
sdim log, 7 * MAX_COUNT :notesel log
dim result, MAX_COUNT
mesbox log, 640, 480
noteadd "2",0,1 :result.0 = 2 :count = 3 :i = 1
;測定
ll_callfunc temp,0,func
start = refunc
repeat
flg = 1;
repeat i
if count \ result.cnt = 0 : flg = 0 :break
loop
if flg {
noteadd ""+count, -1 :result.i = count
i++ :if i >= MAX_COUNT: break
await
}
count += 2
loop
ll_callfunc temp,0,func
refunc -= start :dialog "" + refunc + "ms"
objprm 0, log :title "素数判定"
stop
245名前は開発中のものです。
04/07/05 07:17ID:LZQQVRIy Delphiで素数
http://gamdev.org/up/img/805.zip
http://gamdev.org/up/img/805.zip
246名前は開発中のものです。
04/07/05 13:04ID:LZQQVRIy 最速の素数判定アルゴリズム
http://pc.2ch.net/tech/kako/993/993457354.html
http://pc.2ch.net/tech/kako/993/993457354.html
247名前は開発中のものです。
04/07/05 20:13ID:axn64mRQ すごいスレの流れと違うような気がしますが、
Cで、ウインドウ表示とか(課題3)、できないんですが・・・どうしたらいいんでしょうか?
Cで、ウインドウ表示とか(課題3)、できないんですが・・・どうしたらいいんでしょうか?
248名前は開発中のものです。
04/07/05 20:40ID:q8IB8pY7 できないだけ書かれてもどうしようもない。
249名前は開発中のものです。
04/07/05 20:57ID:0DOOfkU1250名前は開発中のものです。
04/07/05 22:48ID:LZQQVRIy04/07/05 22:51ID:ZZjGGIiZ
sdim m,4000 : notesel m
mesbox m,640,480
noteadd "2" m : noteadd "3" m : noteadd "5" m : noteadd "7" m
n=7
c=4
*judge
n+=2
if n\3=0 : goto *judge
if n\5=0 : goto *judge
if n\7=0 : goto *judge
noteadd "n" m : c+
if c=1000 : goto *s
goto *judge
*s
stop
素数はこれで出るカナと思ったんですが、エラー発生。原因を突き止められませんTT
mesbox m,640,480
noteadd "2" m : noteadd "3" m : noteadd "5" m : noteadd "7" m
n=7
c=4
*judge
n+=2
if n\3=0 : goto *judge
if n\5=0 : goto *judge
if n\7=0 : goto *judge
noteadd "n" m : c+
if c=1000 : goto *s
goto *judge
*s
stop
素数はこれで出るカナと思ったんですが、エラー発生。原因を突き止められませんTT
04/07/05 23:00ID:pTJ3lo22
エラーを読も・・・・・Σ(;゚Д゚)HSPがエラー吐いてない!
noteadd "*" m
~|~
要らない。ここでエラーが出てる。
noteadd "n"
~|~
エラーの原因ではないが、""+nの誤り。
あと、objprm 0, mをstopの前に入れて出力させてあげよう。
noteadd "*" m
~|~
要らない。ここでエラーが出てる。
noteadd "n"
~|~
エラーの原因ではないが、""+nの誤り。
あと、objprm 0, mをstopの前に入れて出力させてあげよう。
04/07/05 23:07ID:ZZjGGIiZ
>>252
thx
でも、4363で終わりますがあってるんでしょうか?
sdim m,4000 : notesel m
mesbox m,640,480
noteadd "2" : noteadd "3" : noteadd "5" : noteadd "7"
n=7
c=4
*judge
n+=2
if n\3=0 : goto *judge
if n\5=0 : goto *judge
if n\7=0 : goto *judge
noteadd ""+n : c+
if c=1000 : goto *s
goto *judge
*s
objprm 0, m
stop
thx
でも、4363で終わりますがあってるんでしょうか?
sdim m,4000 : notesel m
mesbox m,640,480
noteadd "2" : noteadd "3" : noteadd "5" : noteadd "7"
n=7
c=4
*judge
n+=2
if n\3=0 : goto *judge
if n\5=0 : goto *judge
if n\7=0 : goto *judge
noteadd ""+n : c+
if c=1000 : goto *s
goto *judge
*s
objprm 0, m
stop
04/07/05 23:24ID:pTJ3lo22
たしか7919のはずだけど・・・
暇だしPerlとJava版の素数判定作ってみようかな。。。
暇だしPerlとJava版の素数判定作ってみようかな。。。
255名前は開発中のものです。
04/07/05 23:25ID:MIzlaErt256名前は開発中のものです。
04/07/06 00:11ID:hNVuoewj >>247
それは簡単だって!どっかのサイトに張ってあるやつをそのままコピペで完成だぁよぉ!
それは簡単だって!どっかのサイトに張ってあるやつをそのままコピペで完成だぁよぉ!
257名前は開発中のものです。
04/07/06 01:48ID:IHRV3HSb 素数スレになってるのだが・・・
258名前は開発中のものです。
04/07/06 02:29ID:pkSoPn0/ Delphi エラトステネスの篩
http://gamdev.org/up/img/810.zip
http://gamdev.org/up/img/810.zip
04/07/06 07:38ID:BOq5Vq10
#!D:\perl\bin\perl.exe
print "Content-type: text/plain\n\n";
print "Start\n";
print "2\n";
$table[0] = 2;
$i = 1;
for(2..1000){
for($i += 2; ; $i += 2){
if(&IsPrime($i)){ last; }
}
}
print "Finish";
exit(1);
sub IsPrime{
(my $src) = @_;
for($j = 0; $table[$j] <= sqrt($src); $j++){
if($src % $table[$j] == 0){ return 0; }
}
print $src."\n";
push(@table, $src);
return 1;
}
# Perl版。printを取ってみると分かるけどPerlはインタープリタなのに
# 結構処理速いね。。。
print "Content-type: text/plain\n\n";
print "Start\n";
print "2\n";
$table[0] = 2;
$i = 1;
for(2..1000){
for($i += 2; ; $i += 2){
if(&IsPrime($i)){ last; }
}
}
print "Finish";
exit(1);
sub IsPrime{
(my $src) = @_;
for($j = 0; $table[$j] <= sqrt($src); $j++){
if($src % $table[$j] == 0){ return 0; }
}
print $src."\n";
push(@table, $src);
return 1;
}
# Perl版。printを取ってみると分かるけどPerlはインタープリタなのに
# 結構処理速いね。。。
260名前は開発中のものです。
04/07/06 12:03ID:IHRV3HSb261名前は開発中のものです。
04/07/06 16:54ID:pkSoPn0/ C#で素数
static void Main(string[] args)
{
int sosuCount=0;
for (int i = 2; sosuCount<1000; i++)
{
Boolean nososu;
nososu = false;
for (int j = 2; j < i ; j++)
{
if ((i % j) == 0)
{
nososu = true;
break;
}
}
if (!nososu)
{
Console.WriteLine(i);
sosuCount++;
}
}
Console.WriteLine(sosuCount + "個の素数を発見しました");
}
static void Main(string[] args)
{
int sosuCount=0;
for (int i = 2; sosuCount<1000; i++)
{
Boolean nososu;
nososu = false;
for (int j = 2; j < i ; j++)
{
if ((i % j) == 0)
{
nososu = true;
break;
}
}
if (!nososu)
{
Console.WriteLine(i);
sosuCount++;
}
}
Console.WriteLine(sosuCount + "個の素数を発見しました");
}
04/07/06 17:32ID:BOq5Vq10
public class Prime {
public final static int PRIME_MAX = 1000;
static int PrimeTable[] = new int [PRIME_MAX];
static int TableLast = 1;
public static void main(String[] args) {
int l = 1;
PrimeTable[0] = 2;
System.out.println(2);
for(; TableLast < PRIME_MAX; TableLast++)
for(l += 2; ; l += 2)
if(IsPrime(l)) break;
System.out.println("Finish");
}
public static boolean IsPrime(int src) {
for(int i = 0; PrimeTable[i] <= Math.sqrt(src) && i < TableLast; i++)
if(src % PrimeTable[i] == 0) return false;
PrimeTable[TableLast] = src;
System.out.println(src);
return true;
}
}
// Java版。
// あと手を付けてない言語は何だっけ。
// ・・・ひまわりでもやってみるか。
public final static int PRIME_MAX = 1000;
static int PrimeTable[] = new int [PRIME_MAX];
static int TableLast = 1;
public static void main(String[] args) {
int l = 1;
PrimeTable[0] = 2;
System.out.println(2);
for(; TableLast < PRIME_MAX; TableLast++)
for(l += 2; ; l += 2)
if(IsPrime(l)) break;
System.out.println("Finish");
}
public static boolean IsPrime(int src) {
for(int i = 0; PrimeTable[i] <= Math.sqrt(src) && i < TableLast; i++)
if(src % PrimeTable[i] == 0) return false;
PrimeTable[TableLast] = src;
System.out.println(src);
return true;
}
}
// Java版。
// あと手を付けてない言語は何だっけ。
// ・・・ひまわりでもやってみるか。
263名前は開発中のものです。
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 + "個の素数を発見しました";
?>
<?php
for ($i=2; $sosuCount<1000; $i++)
{
$nososu=false;
for ($j=2; $j<$i; $j++)
{
if (($i % $j) == 0)
{
$nososu=true;
break;
}
}
if (!$nososu)
{
echo $i;
echo "\n";
$sosuCount++;
}
}
echo $sosuCount + "個の素数を発見しました";
?>
264名前は開発中のものです。
04/07/06 18: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 "個の素数を発見しました"
sosuCount=0
i=2
while sosuCount<1000:
nososu=False
j=2
while j<i:
if ((i % j) == 0):
nososu=True
j=99999
break
j=j+1
if (not nososu):
print i
sosuCount=sosuCount+1
i=i+1
print sosuCount
print "個の素数を発見しました"
265生徒A
04/07/06 19:10ID:B1nIIlBn 素数スレに変化していたらしい
266名前は開発中のものです。
04/07/06 19:57ID:2QvbUldx いろんな言語で素数プログラムつくるとゲーム作れるようになるですか
2674 ◆3VUXqvbfSY
04/07/06 20:22ID:sRW7wZ6D >>266
なるわけありませんw
だだし、解らない方をホっといて課題を進める訳には…
うーん…
じゃあ、課題外伝でも出しますか…
余力が有ればどうぞ。
弾道シミュレーション:とは言え、何も波動方程式を使えとはいわない。
真空空間で結構。
画面を横を640kmと仮定し、初速、角度を入力させ、弾の軌道を描いてくれ。
ちなみに、初速は29000m/s以下で
重力加速度は10m/(s^2)でお願いします。
なるわけありませんw
だだし、解らない方をホっといて課題を進める訳には…
うーん…
じゃあ、課題外伝でも出しますか…
余力が有ればどうぞ。
弾道シミュレーション:とは言え、何も波動方程式を使えとはいわない。
真空空間で結構。
画面を横を640kmと仮定し、初速、角度を入力させ、弾の軌道を描いてくれ。
ちなみに、初速は29000m/s以下で
重力加速度は10m/(s^2)でお願いします。
04/07/06 20:28ID:BOq5Vq10
(;゚Д゚)ノ先生!…まだ高1なので習ってません
269名前は開発中のものです。
04/07/06 21:30ID:Oq4N2t0v >>268
高一だけどもう習ったよ
高一だけどもう習ったよ
270名前は開発中のものです。
04/07/06 21:32ID:tJWPmmxn とりあえず初速度を三角関数でxとyに分解した後、
重力加速度をyに対して適用していきましょう。
しかし初速29000m/sだと、軽々地球を離脱して重力圏外に吹っ飛んでいきそうです。
重力加速度をyに対して適用していきましょう。
しかし初速29000m/sだと、軽々地球を離脱して重力圏外に吹っ飛んでいきそうです。
271名前は開発中のものです。
04/07/06 21:37ID:jam3e6md 地球の半径は6370kmぐらいでいいですか?
04/07/06 22:03ID:GhTVD8Z+
04/07/06 22:06ID:GhTVD8Z+
連レス済みません
HSPでの平方根の出すのと、その整数か否かの判断てできますか?
できれば、教えてください。
質問ばっかで済みません
HSPでの平方根の出すのと、その整数か否かの判断てできますか?
できれば、教えてください。
質問ばっかで済みません
04/07/06 23:17ID:BOq5Vq10
275名前は開発中のものです。
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
//なぜ?(´・ω・`)
//
//平方根の求め方
//
//HSP2.61で動作確認しますた
//
#include "hspext.as"
//100の平方根を求めます
i=100
//iの平方根を固定少数点型でjに代入
emsqr j,i
//jの値を整数型にキャスト(少数点以下切り捨て)
j=j>>4
//jを表示
print j
stop
276名前は開発中のものです。
04/07/07 04:08ID:FL+3iUiB これであってるのかな
よくわからんので実行しても合ってるのか確認しようがない(´・ω・`)
ググった式をそのまま当てはめてみました
弾道シミュレーション
http://gamdev.org/up/img/814.zip
よくわからんので実行しても合ってるのか確認しようがない(´・ω・`)
ググった式をそのまま当てはめてみました
弾道シミュレーション
http://gamdev.org/up/img/814.zip
04/07/07 21:29ID:dX/NBYiw
278名前は開発中のものです。
04/07/07 21:32ID:W6JVsWwD ゲームに必要なのは実現できるか否かだ
ちょっぱやな素数判定できることに課題としての価値はないよ
ガンガレ
ちょっぱやな素数判定できることに課題としての価値はないよ
ガンガレ
04/07/07 22:18ID:lBWiEqny
√27 = 5.1961...
27 = 3 * 9
27 = 3 * 9
04/07/07 23:08ID:B0lUGdqJ
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
こんな感じかぇ・・・?
#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
こんな感じかぇ・・・?
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
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
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
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
04/07/08 17:42ID:gJH4XEvh
おっと、emcosがemsinになってたか・・・
285名前は開発中のものです。
04/07/08 17:45ID:f5vo4Z1w なんていうかさ。素数よりも、もっと普通にゲームでよく使うようなやつを
やったほうがいいんじゃないかな?
ボールが跳ねるのをシミュレート、とかなら
ジャンプするゲームでは確実に使うだろうし。
やったほうがいいんじゃないかな?
ボールが跳ねるのをシミュレート、とかなら
ジャンプするゲームでは確実に使うだろうし。
2864 ◆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
素数で詰まってる人が多いってだけで…
あとですね…ボールが跳ね返るシミュレーション、ジャンプに使いますかねぇ?
マリオが勝手に地面で跳ね返ったら、俺は切れますがw
…ああ、何時になったらインベーダーが…本来なら、そろそろ、赤い四角に弾でも撃って貰おうと思ってたんですが…
わかりました。二つ出します
メイン課題 前の、赤い四角に弾を撃って貰います。さらに前課題の降ってくる物体と相殺させて下さい。
弾丸は横2ドット、縦16ドットで黄緑色
動きは Y座標(初期値は赤い四角のY座標+16)その後Y--; X座標(初期値は赤い四角のX座標÷2)その後固定;
当たった時点もしくは、画面外にでたら再発射が可能となる。
基本一発。ただし、複数発実装できるならしても良い。
課題外伝 ボールの跳ね返りシミュ
ボールを(0,0)から水平投射する。(速度は自由)
床の反発係数は0.8
壁は1.0
重力加速度は10m/s^2
287名前は開発中のものです。
04/07/08 20:05ID:kembbGf8 トランポリンでも使うつもりなんですかね
ジャンプで跳ね返りって…
そいやマリオには敵ふんだときちょっと浮くけどあれなのかな・・・
ジャンプで跳ね返りって…
そいやマリオには敵ふんだときちょっと浮くけどあれなのかな・・・
288名前は開発中のものです。
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
>>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
289名前は開発中のものです。
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
投下
#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
投下
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
スゲー・・・
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
スゲー・・・
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
#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
292285
04/07/09 10:46ID:mw4kM0V8 すまん、言葉足らずだった。
ジャンプの軌道の加速減速だ。
ボールが跳ねるって部分は蛇足だったな。
ジャンプの軌道の加速減速だ。
ボールが跳ねるって部分は蛇足だったな。
293285
04/07/09 10:48ID:mw4kM0V8 >ボールが跳ねるって部分は蛇足だったな。
↓
>ボールが跳ねるって言い方は変だったな。
言葉足らずって言うより、俺、言い回しが変だね。
↓
>ボールが跳ねるって言い方は変だったな。
言葉足らずって言うより、俺、言い回しが変だね。
294名前は開発中のものです。
04/07/09 16:12ID:o2BnBgF7 >>277
平方根以下の素数で割り切れるかを調べればいいので11*13(=143)をチェックする場合、
143の平方根が11.958......なので2〜11の数で割り切れるか調べればよい
11で割り切れるので素数ではないことがわかる
平方根以下の素数で割り切れるかを調べればいいので11*13(=143)をチェックする場合、
143の平方根が11.958......なので2〜11の数で割り切れるか調べればよい
11で割り切れるので素数ではないことがわかる
295名前は開発中のものです。
04/07/09 19:10ID:o2BnBgF7296名前は開発中のものです。
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>
角度<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>
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
激しく遅いですが…
課題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
激しく遅いですが…
298名前は開発中のものです。
04/07/09 23:19ID:JPrr+eC9 >>297
初期値の c は0にしないと、一つ少なくなるよ
初期値の c は0にしないと、一つ少なくなるよ
299HSPで素数
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
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
300名前は開発中のものです。
04/07/10 14:33ID:/RFPsMma ゲムが完成するのは10後くらいの気がするのは私だけだろうか
301名前は開発中のものです。
04/07/10 15:30ID:wQKs6GiV このスレ遠回りしすぎ。
素数とか必要になったときにやればいいのに。
ゲーム製作に必ず必要なものではない。
素数とか必要になったときにやればいいのに。
ゲーム製作に必ず必要なものではない。
302名前は開発中のものです。
04/07/10 16:06ID:qklEKUA/ HSPにまともなゲームが無いのはゲームに関係無い事ばかりに力入れてる厨房ばかりだからじゃないか?w
303名前は開発中のものです。
04/07/10 16:07ID:gc5EpECZ 弾発射の課題で弾の色が黄緑が指定されてたので調べてきました
JISで決まってるようです
#BBC000(187,192,0)
http://www5d.biglobe.ne.jp/~m_any-dg/jisiro_wabun.html
JISで決まってるようです
#BBC000(187,192,0)
http://www5d.biglobe.ne.jp/~m_any-dg/jisiro_wabun.html
304285
04/07/10 19:01ID:EpDrHTyy >301
俺もそう思った。上から落ちてくるものを受け止めるとか
そういう簡単なゲームを作ったみたほうがいいんじゃないかと。
俺もそう思った。上から落ちてくるものを受け止めるとか
そういう簡単なゲームを作ったみたほうがいいんじゃないかと。
305名前は開発中のものです。
04/07/10 19:02ID:EpDrHTyy しまった、名前欄そのままだった_| ̄|○
306HSPで素数 エラトステネスの篩い
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
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
04/07/10 21:23ID:+13mwptL
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
こうするとちょっと早くなりました
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
309名無しさん@そうだ選挙に行こう
04/07/11 07:11ID:q09vifT2 課題8 メイン課題 弾を撃って貰います
http://gamdev.org/up/img/828.zip
http://gamdev.org/up/img/828.zip
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>
<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>
311名前は開発中のものです。
04/07/12 00:04ID:m2Go/Kix312名前は開発中のものです。
04/07/12 06:31ID:YBMwRYh2 >310
神降臨
神降臨
313名前は開発中のものです。
04/07/12 14:47ID:m2Go/Kix 課題9 課題外伝 ボールの跳ね返りシミュ
http://gamdev.org/up/img/834.zip
http://gamdev.org/up/img/834.zip
04/07/12 19:22ID:rv2Ic3EG
04/07/12 19:26ID:ANTzJhbU
敵に触れても終わりませんけど、いいんですか?
316VB.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
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
317名前は開発中のものです。
04/07/13 19:20ID:EV/5lhQ6 素数はそろそろ打ち切りにしない?
3184 ◆3VUXqvbfSY
04/07/13 21:57ID:UU6rJvtG 打ち切りってどうやるんでしょうか…
まあ。進める人はいつまでも素数をやらずに、次に進んでください。
とか言っときます。
んでは…次の課題
赤い四角の敵の移動をインベダ風にしよう。
縦2体 横3体の合計六機の敵が、左右に移動します。
端に到達すると、一キャラ分下降します。
弾が当たると、当たったキャラを消去し、ソコが抜けた状態でそのまま、上の動作を繰り返します。
下まで到達されたら終了。
まあ。進める人はいつまでも素数をやらずに、次に進んでください。
とか言っときます。
んでは…次の課題
赤い四角の敵の移動をインベダ風にしよう。
縦2体 横3体の合計六機の敵が、左右に移動します。
端に到達すると、一キャラ分下降します。
弾が当たると、当たったキャラを消去し、ソコが抜けた状態でそのまま、上の動作を繰り返します。
下まで到達されたら終了。
319名前は開発中のものです。
04/07/14 14:18ID:fwuwWRAB チェック対象がたくさんある場合の当たり判定って、どうやるのがベストなんだろう?
弾が20個、ターゲットが20機居たら20x20の全組み合わせの判定をするしかないの?
弾が20個、ターゲットが20機居たら20x20の全組み合わせの判定をするしかないの?
320名前は開発中のものです。
04/07/14 14:32ID:hWTGJY1w >>319
Octtree でググってみ
Octtree でググってみ
04/07/14 19:12ID:JsMT7SMh
課題10 インベダ風移動
http://gamdev.org/up/img/849.lzh
http://gamdev.org/up/img/849.lzh
322134
04/07/14 19:57ID:3WONRXZv323名前は開発中のものです。
04/07/14 21:08ID:R7T0IzUh >>322
高速弾で弾幕張ってくるインベーダー超怖え(((( ;゚Д゚)))ガクガクブルブル
高速弾で弾幕張ってくるインベーダー超怖え(((( ;゚Д゚)))ガクガクブルブル
324134
04/07/14 21:42ID:3WONRXZv >323
いや、弾の発射の処理がいまいちよく分からなかったので、そうなってしまいました。
感想ありがとうございます。
いや、弾の発射の処理がいまいちよく分からなかったので、そうなってしまいました。
感想ありがとうございます。
325HSPが初プログラム
04/07/14 22:00ID:naAXWZ/B やってみました。凄く難しかった…
326課題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;
}
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;
}
327課題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;
}
{
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;
}
328課題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 );
}
{
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 );
}
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 生クリームだけの真っ白なクリスマスケーキ 大手メーカーが販売、その理由は…フルーツなしで価格は半額以下に [おっさん友の会★]
- 【文春】元TOKIO・国分太一(51)「女性スタッフ2名への“わいせつ事案”」日テレ事情聴取の全貌が分かった! ★2 [Ailuropoda melanoleuca★]
- 【山上裁判】安倍氏が狙わた理由 旧統一教会の関係者が「安倍氏は『われわれの味方』」と宣伝していた [1ゲットロボ★]
- 【LIVE】国分太一 騒動後初の公の場 司法記者クラブで会見 [ひかり★]
- 【文春】スクープ撮! 超人気ゴルファー・都玲華(21) “30歳上”石井忍コーチ(51)と路上レッスン禁断愛 [冬月記者★]
- ラサール石井氏「こういう空気が戦前の空気」と警鐘「すでに来てしまっている」「大政翼賛会も始まっています」 [少考さん★]
- 【悲報】自民党、通行人に叩かれるwwwwwwwwwwwwwww [834922174]
- ひるおび「国連の常任理事国は中華民国。中華人民共和国は中華民国を正式に引き継いでない」高市 [931948549]
- 「ウソだったのか」ネット大混乱 議員の歳費5万円アップ「凍結→成立」報道に…「えっ?」「どうなってんだ」「ビックリ😲」 [861717324]
- 【速報】国分太一会見 [115996789]
- 【悲報】主食の米すら高くて食えなくなった日本人「中国と戦争するぞ!」 [616817505]
- ネトウヨ「なんでハラール食品が店に置いてあるの? これが奴らの侵略なんだよ?不買運動してやる」 [165981677]
