【初心者】課題をクリアしていくスレ【講習会】at GAMEDEV
【初心者】課題をクリアしていくスレ【講習会】 - 暇つぶし2ch200:Ruby@課題6当たり判定
04/06/28 18:33 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当たり判定(実行ファイル付き)
URLリンク(gamdev.org)

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

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

Exerb添付ドキュメントは旧式の書き方になっているようです
サンプルは新しいものだったのでそちらを参考にしました

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

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

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

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

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

中略

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

後略


こんな感じ。…VC++だけでごめんなさい…

204:LGP@課題1数当て
04/06/28 23:47 1FRiXQWF
スクリプト組はあまり時間もかからず有利なので
複数言語同時習得を目指してみます

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

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

LGP@課題1数当て(実行ファイル付き)
URLリンク(gamdev.org)

205:名前は開発中のものです。
04/06/29 06:26 Ngmzz0xf
課題6

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

<html><head><title>Invader Game?</title><style type="text/css"><!--
.self{background-color:#FF0000;position:absolute;width:32px;height:32px;}
.enemy{background-color:#0000FF;position:absolute;width:32px;height:32px;}
--></style></head>
<body onLoad="m()"onKeyDown="k[event.keyCode]=1"onKeyUp="k[event.keyCode]=0">
<div id=c class=self></div><div id=e class=enemy></div>
<script language="Javascript"><!--
var alive=true,timerID,k=[],x=304,y=448,eX,eY= 480;
var charElm=document.getElementById('c'),enemyElm=document.getElementById('e');
function m(){clearTimeout(timerID);
x+=k[37]&&x?-8:k[39]&&x<608?8:0;y+=k[38]&&y?-8:k[40]&&y<448?8:0;
charElm.style.left=x;charElm.style.top=y;
eY+=8;if(eY>480){eY=-32;enemyElm.style.left=eX=Math.floor(Math.random()*640);}
enemyElm.style.top=eY;
if(Math.abs(x-eX)>32||Math.abs(y-eY)>32)timerID=setTimeout(m,30);}
//--></script></body></html>


206:LGP@課題2素数
04/06/29 09:54 OSp1CFcf
FH=F@OPEN("PrimeNumber.txt" , 3 )
F@WRITES( FH , STR(2) )
COUNT=COUNT+1

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

F@CLOSE( FH )

207:名前は開発中のものです。
04/06/29 13:12 WW/6W0k2
dpかwinsockでチャット作りたひ。

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

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

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

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

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

211:名前は開発中のものです。
04/06/29 22:14 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 測定不能

212:LGP@課題3赤い四角
04/06/29 22:53 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

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

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

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

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


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

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

215:通りすがり人
04/06/30 12:46 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 );
  }
 }
}
スペースをバシッと叩くとわかるんだけど、初回だけ最下位ビットが変化してる。
つまり、リピート状態なのかを判断できるわけ。


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

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

URLリンク(gamdev.org)

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


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

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

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

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

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

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

URLリンク(gamdev.org)

224:LGP@課題4sin波形
04/07/01 00:05 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

225:4 ◆3VUXqvbfSY
04/07/01 08:34 KOe6GSoY
>>222,223
サイズは自由で結構です。
敵の動きは…だからy++;だけですよ?

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


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

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

229:LGP@課題6当たり判定
04/07/02 03:30 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



230:LGP@課題6当たり判定
04/07/02 03:30 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

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

232:HSPが初プログラム@生徒希望
04/07/04 11:07 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

URLリンク(gamdev.org)

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

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


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

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



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

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

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

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

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

241:x≠先生かつx=生徒 ⇒ x=俺
04/07/04 20:45 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

242:x≠先生かつx=生徒 ⇒ x=俺
04/07/04 20:47 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

243:Ruby@素数高速化
04/07/05 00:33 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"

244:名前は開発中のものです。
04/07/05 01:37 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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

263:名前は開発中のものです。
04/07/06 18:09 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 + "個の素数を発見しました";
?>

264:名前は開発中のものです。
04/07/06 18:57 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 "個の素数を発見しました"

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

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

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

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

うーん…

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

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

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

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

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

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

271:名前は開発中のものです。
04/07/06 21:37 jam3e6md
地球の半径は6370kmぐらいでいいですか?

272:HSPが初プログラム@生徒希望
04/07/06 22:03 GhTVD8Z+
>>242
> if n{
このnって何の意味があるんですか?


それから>>241にある「>>」の使い方がわかりません…

273:HSPが初プログラム@生徒希望
04/07/06 22:06 GhTVD8Z+
連レス済みません

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

質問ばっかで済みません

274:x≠先生かつx=生徒 ⇒ x=俺
04/07/06 23:17 BOq5Vq10
>>269
ガ━(゚Д゚;)━━ン!!
物理じゃなくて化学だし・・・

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

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

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

平方根も求められるには求められるけど、自分で求めるアルゴリズムは用意しないといけない。
その整数か否かとは・・・?

275:名前は開発中のものです。
04/07/06 23:53 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

276:名前は開発中のものです。
04/07/07 04:08 FL+3iUiB
これであってるのかな
よくわからんので実行しても合ってるのか確認しようがない(´・ω・`)
ググった式をそのまま当てはめてみました

弾道シミュレーション
URLリンク(gamdev.org)

277:HSPが初プログラム@生徒希望
04/07/07 21:29 dX/NBYiw
>>274
返答有難う御座います。
学校で考えてたら、平方根だけじゃダメだとわかったんで、
>>233にあった2以上~自分未満ってのをやってみようと思います。

因みに整数か否かとは、平方根出したときのことです。
例えば√2は1.414…ですよね?だから整数じゃないですし、√4なら2ですから整数で、
整数じゃなかったら素数に入れよう!とか思ってたんですが、
11*13(適当に思いついた)だとダメなんですよね…

278:名前は開発中のものです。
04/07/07 21:32 W6JVsWwD
ゲームに必要なのは実現できるか否かだ
ちょっぱやな素数判定できることに課題としての価値はないよ
ガンガレ

279:x≠先生かつx=生徒 ⇒ x=俺
04/07/07 22:18 lBWiEqny
√27 = 5.1961...
27 = 3 * 9

280:C / HSPの生徒 orz
04/07/07 23:08 B0lUGdqJ
>>275
> HSPヘルプではincludeするのはhspext.hsになってますがhspext.asじゃないと動きません
HSPヘルプは電波入っているから気にしないがよし。
つかhspソースファイルの拡張子は".as"以外使わないと思うが。

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

A.初速<29000m/s

こんな感じの軌道を描画する。
で、真空中なのでX軸方向の速度は 初速 * cosR
Y軸は 初速 * sinR で、毎秒-10していく。

281:x≠先生かつx=生徒 ⇒ x=俺
04/07/07 23:51 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

こんな感じかぇ・・・?

282:C / HSPの生徒 orz
04/07/08 14:31 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

283:C / HSPの生徒 orz
04/07/08 14:31 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

284:x≠先生かつx=生徒 ⇒ x=俺
04/07/08 17:42 gJH4XEvh
おっと、emcosがemsinになってたか・・・

285:名前は開発中のものです。
04/07/08 17:45 f5vo4Z1w
なんていうかさ。素数よりも、もっと普通にゲームでよく使うようなやつを
やったほうがいいんじゃないかな?

ボールが跳ねるのをシミュレート、とかなら
ジャンプするゲームでは確実に使うだろうし。

286:4 ◆3VUXqvbfSY
04/07/08 19:00 xmAVGw0W
なんか…確かに素数ばっかりに見えますが…違うんですよ。
素数で詰まってる人が多いってだけで…


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


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

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

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




課題外伝 ボールの跳ね返りシミュ
ボールを(0,0)から水平投射する。(速度は自由)
床の反発係数は0.8
壁は1.0
重力加速度は10m/s^2

287:名前は開発中のものです。
04/07/08 20:05 kembbGf8
トランポリンでも使うつもりなんですかね
ジャンプで跳ね返りって…
そいやマリオには敵ふんだときちょっと浮くけどあれなのかな・・・

288:名前は開発中のものです。
04/07/08 21:00 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

289:名前は開発中のものです。
04/07/08 23:33 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
投下

290:x≠先生かつx=生徒 ⇒ x=俺
04/07/09 00:10 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
スゲー・・・

291:C / HSPの生徒 orz
04/07/09 10:25 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

292:285
04/07/09 10:46 mw4kM0V8
すまん、言葉足らずだった。
ジャンプの軌道の加速減速だ。

ボールが跳ねるって部分は蛇足だったな。

293:285
04/07/09 10:48 mw4kM0V8
>ボールが跳ねるって部分は蛇足だったな。

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


言葉足らずって言うより、俺、言い回しが変だね。

294:名前は開発中のものです。
04/07/09 16:12 o2BnBgF7
>>277
平方根以下の素数で割り切れるかを調べればいいので11*13(=143)をチェックする場合、
143の平方根が11.958......なので2~11の数で割り切れるか調べればよい
11で割り切れるので素数ではないことがわかる

295:名前は開発中のものです。
04/07/09 19:10 o2BnBgF7
似たような事やってるスレみつけてきた

[VB] 初心者に課題を [.net]
スレリンク(tech板)

296:名前は開発中のものです。
04/07/09 22:13 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>

297:HSPが初プログラム@生徒希望
04/07/09 22:49 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
激しく遅いですが…

298:名前は開発中のものです。
04/07/09 23:19 JPrr+eC9
>>297
初期値の c は0にしないと、一つ少なくなるよ

299:HSPで素数
04/07/10 08:28 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

300:名前は開発中のものです。
04/07/10 14:33 /RFPsMma
ゲムが完成するのは10後くらいの気がするのは私だけだろうか

301:名前は開発中のものです。
04/07/10 15:30 wQKs6GiV
このスレ遠回りしすぎ。
素数とか必要になったときにやればいいのに。
ゲーム製作に必ず必要なものではない。

302:名前は開発中のものです。
04/07/10 16:06 qklEKUA/
HSPにまともなゲームが無いのはゲームに関係無い事ばかりに力入れてる厨房ばかりだからじゃないか?w

303:名前は開発中のものです。
04/07/10 16:07 gc5EpECZ
弾発射の課題で弾の色が黄緑が指定されてたので調べてきました
JISで決まってるようです
#BBC000(187,192,0)
URLリンク(www5d.biglobe.ne.jp)

304:285
04/07/10 19:01 EpDrHTyy
>301
俺もそう思った。上から落ちてくるものを受け止めるとか
そういう簡単なゲームを作ったみたほうがいいんじゃないかと。

305:名前は開発中のものです。
04/07/10 19:02 EpDrHTyy
しまった、名前欄そのままだった_| ̄|○

306:HSPで素数 エラトステネスの篩い
04/07/10 19:34 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

307:HSPが初プログラム@生徒希望
04/07/10 21:23 +13mwptL
>>298
あ、それはちょっと変更ミスです。

>>297で一応合ってるんでしょうか?

308:HSPが初プログラム@生徒希望
04/07/10 21:53 +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


309:名無しさん@そうだ選挙に行こう
04/07/11 07:11 q09vifT2
課題8 メイン課題 弾を撃って貰います
URLリンク(gamdev.org)

310:名無しさん@そうだ選挙に行こう
04/07/11 08:10 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>


311:名前は開発中のものです。
04/07/12 00:04 m2Go/Kix
>>285
>>301
>>304
先生!試しに出題と採点をしてみませんか?

312:名前は開発中のものです。
04/07/12 06:31 YBMwRYh2
>310
神降臨

313:名前は開発中のものです。
04/07/12 14:47 m2Go/Kix
課題9 課題外伝 ボールの跳ね返りシミュ
URLリンク(gamdev.org)

314:C / HSPの生徒 orz
04/07/12 19:22 rv2Ic3EG
課題8 メイン課題 弾を撃って貰います
URLリンク(gamdev.org)
馬鹿やってたので修正。

315:HSPが初プログラム@生徒希望
04/07/12 19:26 ANTzJhbU
敵に触れても終わりませんけど、いいんですか?

316:VB.NETで素数
04/07/12 21:26 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

317:名前は開発中のものです。
04/07/13 19:20 EV/5lhQ6
素数はそろそろ打ち切りにしない?

318:4 ◆3VUXqvbfSY
04/07/13 21:57 UU6rJvtG
打ち切りってどうやるんでしょうか…

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

んでは…次の課題
赤い四角の敵の移動をインベダ風にしよう。
縦2体 横3体の合計六機の敵が、左右に移動します。
端に到達すると、一キャラ分下降します。
弾が当たると、当たったキャラを消去し、ソコが抜けた状態でそのまま、上の動作を繰り返します。
下まで到達されたら終了。

319:名前は開発中のものです。
04/07/14 14:18 fwuwWRAB
チェック対象がたくさんある場合の当たり判定って、どうやるのがベストなんだろう?
弾が20個、ターゲットが20機居たら20x20の全組み合わせの判定をするしかないの?

320:名前は開発中のものです。
04/07/14 14:32 hWTGJY1w
>>319
Octtree でググってみ

321:C / HSPの生徒 orz
04/07/14 19:12 JsMT7SMh
課題10 インベダ風移動
URLリンク(gamdev.org)

322:134
04/07/14 19:57 3WONRXZv
他のパソコンだと重いかも

URLリンク(gamdev.org)




323:名前は開発中のものです。
04/07/14 21:08 R7T0IzUh
>>322
高速弾で弾幕張ってくるインベーダー超怖え(((( ;゚Д゚)))ガクガクブルブル

324:134
04/07/14 21:42 3WONRXZv
>323
いや、弾の発射の処理がいまいちよく分からなかったので、そうなってしまいました。
感想ありがとうございます。


325:HSPが初プログラム
04/07/14 22:00 naAXWZ/B
やってみました。凄く難しかった…

326:課題3 赤い四角 その1
04/07/15 01:22 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;
}

327:課題3 赤い四角 その2
04/07/15 01:23 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;
}

328:課題3 赤い四角 その3
04/07/15 01:24 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 );
}

329:課題3 赤い四角 その4
04/07/15 01:26 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 );


330:課題3 赤い四角 その5(ラスト)
04/07/15 01:27 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;
}


331:名前は開発中のものです。
04/07/15 01:45 iLVEI/nf
やっぱりソース貼りつけは見辛いな

332:名前は開発中のものです。
04/07/15 08:31 FCzCT1vF
課題1,3,4,5,7 (ActiveBasic)です。残りは、後でやる事にします

URLリンク(gamdev.org)

333:C / HSPの生徒 orz
04/07/15 09:18 Ian2SxqZ
>>322>>324
始めて見たけど、こんな感じのインベーダーもいいかも(`・ω・´)

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

せっかく敵を構造体で処理してるから、
敵の処理のところで個別に乱数発射させればいいんじゃない?

334:C / HSPの生徒 orz
04/07/15 09:47 Ian2SxqZ
やべ、訂正。
〇自分の弾は一発(あの弾幕だと二発じゃないときつい)
×自分の弾は二発(あの弾幕に一発はきつい)

335:C / HSPの生徒 orz
04/07/15 11:27 Ian2SxqZ
課題10 インベダ風移動 修正版
URLリンク(gamdev.org)

次の課題マダー?

336:名前は開発中のものです。
04/07/15 12:55 930GPiwR
>>335
ソースが初心者っぽくない:-)

337:名前は開発中のものです。
04/07/15 20:55 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)
{

338:名前は開発中のものです。
04/07/15 20:55 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;


339:名前は開発中のものです。
04/07/15 20:57 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);
}
}

340:名前は開発中のものです。
04/07/15 20:58 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) );

341:名前は開発中のものです。
04/07/15 21:07 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() ) )
{


342:名前は開発中のものです。
04/07/15 21:07 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 ) ) )

343:名前は開発中のものです。
04/07/15 21:36 FFz8UuO5
うpろだ使えよ・・

344:名前は開発中のものです。
04/07/15 21:48 mfzLmHcI
過去ログよんだからわざわざ貼ったのに
ろだ推奨にルール変更?

345:名前は開発中のものです。
04/07/15 22:09 A+IEwnnr
ところでGdevうき落ちてる?

346:名前は開発中のものです。
04/07/15 22:12 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;
}


347:名前は開発中のものです。
04/07/15 22:17 nw/x++ui
ライフゲームを自分でぐぐって製作

348:名前は開発中のものです。
04/07/15 22:27 FFz8UuO5
>>344
いや、俺は過去ログ読んでないから知らんが、こんだけ連張りするんなら
うpろだ使えばいいだろって事。せっかく用意されてんだし。

と思ったら今gamdev.org落ちてんのか・・

349:4 ◆3VUXqvbfSY
04/07/15 22:30 ulthkOuE
まあ…DirectXを使うときは…
初期化は省きましょう

350:名前は開発中のものです。
04/07/15 22:33 mfzLmHcI
避難所は落ちてますね
wiki、ろだ等全滅です
>>173のろだは生きてるようだけど使っていいのかな?テストって言ってたけど
URLリンク(cgi.f11.aaacafe.ne.jp)

>>347
先生キタ━━━(゚∀゚)━━━ !!
でもライフゲームなんて作ってたらまたゲームに関係ないものを
作ってと怒り出す人がいるのでその時はおながいしますね
ちなみに採点できる言語は何ですか?

351:4 ◆3VUXqvbfSY
04/07/15 22:40 ulthkOuE
>>347
ワーイ 良いですねぇ。ライフ「ゲーム」と言い切れば、誰からも文句は出ないですし。
今回は僕は生徒でw

仕様を決めてくださいよ~
生死条件や個々の移動条件とか

352:名前は開発中のものです。
04/07/15 22:42 mfzLmHcI
と思ったら4様もキタ━━━(゚∀゚)━━━ !!
了解しました>初期化は省きましょう
サンプルそのままなんで見る意味もないですし
課題に関係がある所だけ貼って後はろだにうぷするのがバランスいいかな

>>348
連貼りするのは生理的に受け付けないのに我慢してやってるんだから
酷いこといわないでよヽ(`Д´)ノ

353:名前は開発中のものです。
04/07/15 22:51 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;
}


354:名前は開発中のものです。
04/07/15 22:52 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>


355:134
04/07/16 10:38 9OMAGGSs
ライフゲームを検索で見てみましたけど、これは二次元配列の処理がオセロみたいな感じになりそうですね
それで、存在しない配列を参照するバグ続出…

356:名前は開発中のものです。
04/07/16 11:55 yFlo2kjF
>>352
「4様」って某韓国俳優のミーハーみたいで何かやだなw

357:134
04/07/16 23:21 9OMAGGSs
ライフゲームっぽいものが途中まで出来ました。

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

URLリンク(gamdev.org)

358:x≠先生かつx=生徒 ⇒ x=俺
04/07/17 14:27 qbj2jGXO
URLリンク(gamdev.org)

ライフゲーム with HSP
正常に動作するか怪しいけど…。

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

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

URLリンク(gamdev.org)

360:名前は開発中のものです。
04/07/18 01:40 C6k4fMne
ライフゲームいいねぇ。シムシティで町を育てるの思い出した。原理的には同じだよね。

361:名前は開発中のものです。
04/07/18 16:26 yH4KfJO3
課題6当たり判定
URLリンク(gamdev.org)

362:名前は開発中のものです。
04/07/18 17:00 krHEjaY8
それSTGスレの課題じゃね?

363:名前は開発中のものです。
04/07/18 17:14 yH4KfJO3
>>362
【初心者】課題をクリアしていくスレ【講習会】まとめ
URLリンク(gamdev.org)

【初心者】課題をクリアしていくスレ【講習会】まとめ
URLリンク(gamdev.org)

【初心者】課題をクリアしていくスレ【講習会】まとめ
URLリンク(gamdev.org)

【初心者】課題をクリアしていくスレ【講習会】まとめ
URLリンク(gamdev.org)

【初心者】課題をクリアしていくスレ【講習会】まとめ
URLリンク(gamdev.org)

364:名前は開発中のものです。
04/07/18 17:28 Cpcq6TmO
4つの整数を引数として渡して、その4つから最小値を返す関数を作りたいのですが、いい考えが浮かびません。
賢い皆さんお願いします。

365:x≠先生かつx=生徒 ⇒ x=俺
04/07/18 17:35 8PWFdHyU
int min4(int n1, int n2, int n3, int n4)
{
    if(n1 > n2) n1 = n2;
    if(n1 > n3) n1 = n3;
    if(n1 > n4) n1 = n4;
    return n1;
}

366:名前は開発中のものです。
04/07/18 17:35 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;
}


367:名前は開発中のものです。
04/07/18 17:57 zInWmaTA
アホみたくそのままの
仕様で書いてるな。

368:x≠先生かつx=生徒 ⇒ x=俺
04/07/18 18:27 8PWFdHyU
どうしろと・・・。

369:名前は開発中のものです。
04/07/18 19:20 krHEjaY8
URLリンク(gamdev.org)
ライフゲーム Java-Swing版っす。

370:名前は開発中のものです。
04/07/19 01:02 trLHjf+G
>>367
4つぐらいならこれでいいんじゃない?

371:369
04/07/19 01:56 84bjiiMx
URLリンク(gamdev.org)
ライフゲームJava-Swing版、いちおう最終版のつもり。

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

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


>>369 のリンク、拡張子間違ってました。スマソ。


372:HSPが初プログラム
04/07/19 11:07 SY/zAMfR
ライフゲームがどんな物かはわかったんですが、
升目は幾つぐらいがいいのでしょうか?

373:名前は開発中のものです。
04/07/19 11:10 OTj45Fw+
設定で好きなように変えられるように作ると良い。

374:名前は開発中のものです。
04/07/19 22:54 E1i61iky
最初は少なく10*10程度で作っておいて、だんだん広げていけば?
遅くなったようならそれまでにすればいいし。

375:名前は開発中のものです。
04/07/19 23:41 sgE8uFHh
課題8弾を撃って貰います
URLリンク(gamdev.org)

376:名前は開発中のものです。
04/07/20 00:57 dOIeUq82
課題10 インベダ風移動(GameMaker)
URLリンク(gamdev.org)

377:名前は開発中のものです。
04/07/20 17:58 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;


378:名前は開発中のものです。
04/07/20 17:59 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>


379:名前は開発中のものです。
04/07/20 19:16 Tgn6EEUd
ちまたで話題のProce55ing
ベーシックみたいでおもしれー

なんか作ってみようかな。
ライフゲームもあったよ
URLリンク(processing.org)

380:Proce55ing@課題2素数
04/07/20 21:33 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; 
}


381:Proce55ingアプレット@課題2素数
04/07/20 23:39 Totm+z2W
URLリンク(f50.aaacafe.ne.jp)

382:名前は開発中のものです。
04/07/21 12:16 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;
}

383:名前は開発中のものです。
04/07/22 12:32 Uh3POFTA
夏休みだってのに勢いがないな

384:名前は開発中のものです。
04/07/22 16:10 ybwWGKGj
課題10 インベダ風移動
URLリンク(gamdev.org)

385:名前は開発中のものです。
04/07/22 19:05 dsDe4Hb2
>>383
なんかネタくれ
勢い祈願age

386:名前は開発中のものです。
04/07/22 20:39 wArk38dJ
ファミコンミニに対抗しましょう。

387:134
04/07/22 20:45 3j8upKh5
>386
ファミコンミニのようなゲームを作るという事ですか?

388:ファミコンミニ第1~3弾のソフト名一覧
04/07/22 20:59 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ガンダムワールド ガチャポン戦士 スクランブルウォーズ

389:名前は開発中のものです。
04/07/22 21:21 ZMO5Xyrb
売ってるものだけに初心者課題にしてはちと重いのが多いな。
パックマンはスレがあるし。バルーンファイトとディグダグぐらいか?

390:名前は開発中のものです。
04/07/22 21:33 i0eCPNXf
>>389
ディグダグはさりげにスムーズな穴掘りを実現しようと思うと大変だぞ
いっそゼビウスやスターソルジャーの方がまだ、ってスレあるか
ここにゃ入ってないがインベーダ移動の発展でギャラクシアン降下とか

391:名前は開発中のものです。
04/07/22 21:41 o7mEJPNw
いきなりレベルアップしたな。

392:名前は開発中のものです。
04/07/22 21:50 ZMO5Xyrb
んじゃバルーンファイトなら?

393:名前は開発中のものです。
04/07/22 21:58 dsDe4Hb2
難しいからこそ、こういうスレで解説して欲しいという気も

394:名前は開発中のものです。
04/07/22 22:14 R1jpzCf9
ゲーム全体じゃなくて、部分的な課題というのはどうですか?

ディグダグなら岩が落ちるところだけとか、マッピーならトランポリンとか。

395:390
04/07/22 22:20 8dIAslOQ
ディグダグは、単純なオブジェクト移動だけじゃなく、
背景も同時に書き換える必要があって、
その書き換えた背景との当たりも必要なので、初心者には荷が重いと思われ。
バルーンファイトは、オブジェクトの当たり判定時に、
「オブジェクトのどの辺に相手のどの辺が当たったか」
あたりの判定が壁やね。あと重力管理か。
大体、後発のゲームは単純そうに見えて大変なことをやってる場合が多いので、
(テトリスみたいなんは例外)
Pong>ブロック崩し>インベーダ>ギャラクシアン>平安京>パックマンと
実際のゲームの歴史に沿って練習してくといいと思うぞ。


396:390
04/07/22 22:28 8dIAslOQ
じゃあ、部分的に、ということで、
マッピーのトランポリンの基礎になる
「床でバウンドするボール」でもいってみっか?
シューティング作成スレみたくlevel制で。
level1:
ウィンドウに丸を表示しましょう。
level2:
ウィンドウ下に向かって自由落下させましょう。
level3:
ウィンドウ下端に当たったらそこで止まるようにしましょう。
level4:
ウィンドウ下端に当たったら反射してバウンドするようにしましょう。
減衰なしと考えて、バウンド後、
元の高さに達したらまた落下するようにしましょう。
level5:
床にあたったら減衰するようにして、
次第にバウンドを小さくするようにしましょう。

こんなんでどうやね?

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

これだけでもそこそこ処理が必要だし、データの持ち方で書き方が
変わってくると思う。

398:名前は開発中のものです。
04/07/22 22:40 zFfieLLF
>>396
課題外伝 ボールの跳ね返りシミュ
で、みんなlevel5まで終了してしまってるような・・・

399:名前は開発中のものです。
04/07/22 22:56 dsDe4Hb2
過去の課題等のまとめページはこちら
URLリンク(qrl.jp)

400:名前は開発中のものです。
04/07/22 23:14 NHymqfSQ
>>398
うわ、悪い。ちゃんとチェックせんといかんね。
397氏の意見も踏まえてちょっと考えてみゆ。
一晩くれんか?

401:400
04/07/22 23:35 NHymqfSQ
一晩と言ったが、少し考えてこんなのはどうか?
課題11:ドットイータ基礎
level1:
画面を○で埋め尽くす。
level2:
画面中央にオブジェクトを表示し、自由移動できるようにする。
埋め尽くした○との重ねあわせに注意。
level3:
キーを離しても、オブジェクトが○中央できっちり止まるようにする。
90度曲がる場合も、○中央まで進んでから曲がること。
level4;
画面周囲、および画面内に迷路上に■を配置し、■の中には進入不可とする
level5:
オブジェクトが通過した○を消去する。

これでどうやね?

402:x≠先生かつx=生徒 ⇒ x=俺
04/07/22 23:40 cgOfwBjG
ゲームそのものを知らないのでテトリスでも作ろうか…。

403:名前は開発中のものです。
04/07/23 00:08 ZzAd+MaZ
>400

まことにすまないのだが、既出なんだ。

初心者専用スレ「パックマン」風ゲーム作らない?
スレリンク(gamedev板)l50


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

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

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

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

といった感じで。これでもあかんか?

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

カードゲーム系。神経衰弱など、手持ち札が無く盤面だけでできる簡単なもの。
思考パズル。いわゆる倉庫番や16パズル、ライツアウトなんか。
シューティング系。弾を撃つの発展で誘導弾を撃ってみる。
ワンキーアクション。押すと上昇、離すと下降の洞窟進行ゲーなど。

406:名前は開発中のものです。
04/07/23 00:39 ZzAd+MaZ
うぉ、行き違い発生(汗
試みはなかなかおもろそう。
初心者がレベルアップするにはいい課題だけど
後半かなりレベル上がりすぎのような気もする。

407:400
04/07/23 00:47 MNC+jdGg
カードゲームか・・・
後々知っておいて役に立ちそう、ということでは、
カードのハンドリングなんかどうだろう?
カードのフリップ、n個の地点への配布
手札のエクスパンド
(一定領域内に、手札枚数が多ければ間隔を狭く、少なければ広く並べる)
などなど。
カードのフリップには拡縮がいるけど、GDIでできることだしなぁと、あかん?

408:406
04/07/23 01:02 ZzAd+MaZ
>400
初心者向けやからそこまでせんでもええんとちゃう?

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

最初はこのへんからでどない?

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

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

とかとか

410:名前は開発中のものです。
04/07/23 01:19 ZzAd+MaZ
OKOK、じゃぁ次の課題は神経衰弱ってことで。
なんか勝手に二人でどんどん進めていってるようだけど
良かったんだろうか? と思いつつも寝ます。

411:名前は開発中のものです。
04/07/23 01:28 tthpyoFm
先生が仕切らないとスレがとんでもない方向に進む


412:名前は開発中のものです。
04/07/23 17:36 3LPKLQOf
よし仕切ってやろう
みんな今すぐパンツを脱げ

413:名前は開発中のものです。
04/07/23 18:24 ERCkdf+D
つまんね

414:名前は開発中のものです。
04/07/23 19:12 +uDsmYVf
>>413
死ねゴミ

415:4 ◆3VUXqvbfSY
04/07/23 22:36 KF5N7PI1
…皆様お久しぶりです。世間が夏休みになると私は忙しくなる…
不公平な気がします。
んな愚痴は置いといて…

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

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

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


アクションゲーム課題1
…赤い四角再登場ですw
640*480のウィンドウ内に青い四角を使って道を作成して貰います。
各四角のサイズは64*64で青い四角の位置は問いません。
赤い四角を移動させ、スペースでジャンプ下に何もなければ落下です。
重力加速度は1.5ピクセル/フレームが自然っぽいです。
(凡に、アクションゲームの落下判定は、キャラを常に落下状態にして足場の上のみ判定をOFFにすると、楽に作れます。)

416:名前は開発中のものです。
04/07/24 00:07 jMxmp7dj
>>414
荒らすなよ


417:名前は開発中のものです。
04/07/24 00:39 sBREqJXF
>>396の課題をやりますた
URLリンク(gamdev.org)

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



418:名前は開発中のものです。
04/07/25 15:28 4bIxnMko
アクションゲーム課題1できました。

むやみに画面外に出ると、(特に左側)「インデックスが有効範囲にありません」と怒られますが仕様です

URLリンク(gamdev.org)

419:134
04/07/25 19:08 4bIxnMko
ちょっとだけ修正。

URLリンク(gamdev.org)

420:名前は開発中のものです。
04/07/26 11:51 X3QiLV0p
ポーカーむずい

421:名前は開発中のものです。
04/07/27 23:03 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;
}
}


422:名前は開発中のものです。
04/07/28 02:00 gCoWnE2N
はじめましてJavaで参加してみたいのですが
GUIは何使えばいいでしょうか?
SWINGかAWTですか?

423:名前は開発中のものです。
04/07/28 02:15 vt4lKz4o
>>422
基本的に自由なので自分の好きな方を

424:名前は開発中のものです。
04/07/28 03:11 fhE8VW3/
>>421

>>396

>level5:

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

仮に減衰なしにするなら変更箇所は
add=-add*0.95f;
       ↓
add=-add*1.00f;

425:名前は開発中のものです。
04/07/31 21:01 3/wDI70a
良スレ

426:名前は開発中のものです。
04/08/01 02:10 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が十分デカイときに止まっちゃうよ

427:名前は開発中のものです。
04/08/01 02:58 aZwyLY/F
おう、大切なことを忘れていた。
見た感じ
add=-add*0.95f;
はあまりよろしくない。>>426の2-3行目のような現象の引き金になるから。
add=-fabs(add)*0.95f;
とかにしたらどうかな。

そうそう、てっきりJAVAかなんかと思ってたらCなのね。
absはint返すから abs(add)<0.01 イクナイよ。
fabsfとかをご利用下さい。

428:名前は開発中のものです。
04/08/04 07:03 2dcabQIG
あげ

429:名前は開発中のものです。
04/08/04 07:58 l64BR6wY
課題3赤い四角
URLリンク(gamdev.org)

開発環境
Delphi6
TrueVision3D

スクリーンショット
URLリンク(gamdev.org)

コンパイル・実行にはSDKが必要
URLリンク(www.truevision3d.com)

430:名前は開発中のものです。
04/08/04 11:13 l64BR6wY
課題5キー入力
URLリンク(gamdev.org)

開発環境
Delphi6
TrueVision3D

スクリーンショット
URLリンク(gamdev.org)

コンパイル・実行にはSDKが必要
URLリンク(www.truevision3d.com)



倒したキーの方向の加速度を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;

431:名前は開発中のものです。
04/08/05 19:01 AmQSIvEb
ここは良スレですね。

>>419
おせっかいかもしれないけど、timeGetTime使うなら、
timeBeginPeriod,timeEndPeriodもつかわないと
効果が出ない希ガス。
これでGetTickCountよりはかなりの精度が出るはず。

432:134
04/08/05 22:50 mK0RKtyB
>431

どうもご指摘ありがとうございます。
そのAPIについてヘルプで調べてみることにします。

433:名前は開発中のものです。
04/08/06 03:05 qcytQZRR
>>432
どういたしまして。
ソースを一通り見てみました。
VBでゲームを作る場合は処理速度が結構効いてきます。
ただ単にVBが遅いのではなく、
プログラムしだいでVCと同等にもなります。
ちょくちょく顔出して良スレに貢献したく思います。

434:名前は開発中のものです。
04/08/09 21:10 LdCU4OgV
おっぱい

435:名前は開発中のものです。
04/08/09 22:22 BKqxHMzO
乳揺れのプログラミングか?それは難しいな。

436:x≠先生かつx=生徒 ⇒ x=俺
04/08/12 00:50 K+7sQalX
学校の課題オワンネー('A`)

437:x≠先生かつx=生徒 ⇒ x=俺
04/08/12 23:42 K+7sQalX
うわっ・・・書き込むスレ間違えてた。
ごめん。ほんとごめんorz

438:名前は開発中のものです。
04/08/16 12:22 m2Ub/WUk
そろそろまとめサイトとかテンプレサイト欲しいな

439:名前は開発中のものです。
04/08/16 19:59 jZT97JO5
スレ嫁莫迦
URLリンク(gamdev.org)

440:名前は開発中のものです。
04/08/16 20:00 jZT97JO5
あ、上のはまとめサイトね

441:名前は開発中のものです。
04/08/16 21:44 9HvblQcl
まじで初歩的な質問なんですけど、exeファイルをzipに変えるにはどうすればいいのですか?

442:134
04/08/16 21:51 ORbMSiN8
>441
圧縮ソフトというのは知っていますか?
たとえば、フリーソフトでlhacaとかシェアソフトでwinrarなどがそうです。
lhacaの場合は、インストールしたら、ショートカットにドラッグ&ドロップ
するだけで、簡単にzipに変換できるはずです。

443:441
04/08/17 10:42 d2NeWVSY
先生有難う御座いました!解決しました!

444:名前は開発中のものです。
04/08/17 17:48 KRBya/B4
今更掘り返して申し訳ないんですけど

>>130に書いてある
>問題(if文を使わずに、A=Bなら0。A≠Bなら1を表示するプログラムを作れ)
って言うのはwhileやswitchを使うと捕らえていいんですかね

445:名前は開発中のものです。
04/08/17 17:51 fYWyfAAP
>>444
本人じゃないけど、漏れは違うと思うよ。

446:名前は開発中のものです。
04/08/17 18:06 KRBya/B4
やっぱり違いますよね
うーん謎だ・・・

447:x≠先生かつx=生徒 ⇒ x=俺
04/08/17 18:07 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でも良い */

とりあえず思いついた範囲でこれだけ

448:名前は開発中のものです。
04/08/17 18:11 KRBya/B4
>>447
解答ありがとうございます

やり方はいろいろあるんですね
もっと勉強しなくては・・・

449:名前は開発中のものです。
04/08/19 12:48 5g9NjXdB
保守

450:名前は開発中のものです。
04/08/19 12:49 5g9NjXdB
保守

451:名前は開発中のものです。
04/08/20 01:29 NSwcxKVN
ノロ  ウ
1木 寸

452:名前は開発中のものです。
04/08/24 20:56 S+rPg9uH
Delphiの読み方ってデルフィですよねー保守


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