【初心者】課題をクリ ..
[2ch|▼Menu]
288:名前は開発中のものです。
04/07/08 21:00 gJH4XEvh.net
名古屋撃ちのために、実装しない方向で行こう。。。

>>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.net
#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.net
#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.net
>>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.net
すまん、言葉足らずだった。
ジャンプの軌道の加速減速だ。

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

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

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


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

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

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

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

296:名前は開発中のものです。
04/07/09 22:13 2xcy471S.net
<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.net
一応あってますか?
課題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.net
>>297
初期値の c は0にしないと、一つ少なくなるよ

299:HSPで素数
04/07/10 08:28 gc5EpECZ.net
#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.net
ゲムが完成するのは10後くらいの気がするのは私だけだろうか

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

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

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

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

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

306:HSPで素数 エラトステネスの篩い
04/07/10 19:34 gc5EpECZ.net
#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.net
>>298
あ、それはちょっと変更ミスです。

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

308:HSPが初プログラム@生徒希望
04/07/10 21:53 +13mwptL.net
連レススマソ
こうするとちょっと早くなりました
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.net
課題8 メイン課題 弾を撃って貰います
URLリンク(gamdev.org)

310:名無しさん@そうだ選挙に行こう
04/07/11 08:10 k56A1TFY.net
課題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.net
>>285
>>301
>>304
先生!試しに出題と採点をしてみませんか?

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

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

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

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

316:VB.NETで素数
04/07/12 21:26 m2Go/Kix.net
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.net
素数はそろそろ打ち切りにしない?

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

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

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

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

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

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

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

URLリンク(gamdev.org)




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

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


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

326:課題3 赤い四角 その1
04/07/15 01:22 mfzLmHcI.net
#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.net
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.net
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.net
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.net
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.net
やっぱりソース貼りつけは見辛いな

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

URLリンク(gamdev.org)

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

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

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

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

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

次の課題マダー?

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

337:名前は開発中のものです。
04/07/15 20:55 mfzLmHcI.net
#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.net
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.net
//オブジェクトの作成
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.net
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.net
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.net
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.net
うpろだ使えよ・・

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

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

346:名前は開発中のものです。
04/07/15 22:12 mfzLmHcI.net
とりあえずラストまで

>>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.net
ライフゲームを自分でぐぐって製作

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

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

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

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

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

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

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

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

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

353:名前は開発中のものです。
04/07/15 22:51 7EJWxb81.net
課題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.net
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.net
ライフゲームを検索で見てみましたけど、これは二次元配列の処理がオセロみたいな感じになりそうですね
それで、存在しない配列を参照するバグ続出…

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

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

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

URLリンク(gamdev.org)

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

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

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

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

URLリンク(gamdev.org)

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

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

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

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

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

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

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

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

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

365:x≠先生かつx=生徒 ⇒ x=俺
04/07/18 17:35 8PWFdHyU.net
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.net
>>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.net
アホみたくそのままの
仕様で書いてるな。

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

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

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

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

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

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


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


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

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

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

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

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

377:名前は開発中のものです。
04/07/20 17:58 5+HMeKnI.net
課題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.net
}
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.net
ちまたで話題のProce55ing
ベーシックみたいでおもしれー

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

380:Proce55ing@課題2素数
04/07/20 21:33 Totm+z2W.net
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.net
URLリンク(f50.aaacafe.ne.jp)

382:名前は開発中のものです。
04/07/21 12:16 ddhH1W+g.net
#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.net
夏休みだってのに勢いがないな

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

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

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

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

388:ファミコンミニ第1〜3弾のソフト名一覧
04/07/22 20:59 dsDe4Hb2.net
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.net
売ってるものだけに初心者課題にしてはちと重いのが多いな。
パックマンはスレがあるし。バルーンファイトとディグダグぐらいか?

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

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

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

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

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

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

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


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

こんなんでどうやね?

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

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

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

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

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


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

3916日前に更新/292 KB
担当:undef