■ このスレッドは過去ログ倉庫に格納されています
【初心者】課題をクリアしていくスレ【講習会】
- 1 :名前は開発中のものです。:04/06/10 18:05 ID:VshiFFV8.net
- ゲームに必要な要素を先生が出してくれます
その課題をクリアしていく講習会です
- 323 :名前は開発中のものです。:04/07/14 21:08 ID:R7T0IzUh.net
- >>322
高速弾で弾幕張ってくるインベーダー超怖え(((( ;゚Д゚)))ガクガクブルブル
- 324 :134:04/07/14 21:42 ID:3WONRXZv.net
- >323
いや、弾の発射の処理がいまいちよく分からなかったので、そうなってしまいました。
感想ありがとうございます。
- 325 :HSPが初プログラム:04/07/14 22:00 ID:naAXWZ/B.net
- やってみました。凄く難しかった…
- 326 :課題3 赤い四角 その1:04/07/15 01:22 ID: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 ID: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 ID: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 ID: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 ID: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 ID:iLVEI/nf.net
- やっぱりソース貼りつけは見辛いな
- 332 :名前は開発中のものです。:04/07/15 08:31 ID:FCzCT1vF.net
- 課題1,3,4,5,7 (ActiveBasic)です。残りは、後でやる事にします
http://gamdev.org/up/img/854.lzh
- 333 :C / HSPの生徒 orz:04/07/15 09:18 ID:Ian2SxqZ.net
- >>322=>>324
始めて見たけど、こんな感じのインベーダーもいいかも(`・ω・´)
オリジナルに近づけるなら、
・折り返しのときにずれないようにする
・自分の弾は二発(あの弾幕に一発はきつい)
・敵はばらばらに弾を撃つ
だと思う。
せっかく敵を構造体で処理してるから、
敵の処理のところで個別に乱数発射させればいいんじゃない?
- 334 :C / HSPの生徒 orz:04/07/15 09:47 ID:Ian2SxqZ.net
- やべ、訂正。
〇自分の弾は一発(あの弾幕だと二発じゃないときつい)
×自分の弾は二発(あの弾幕に一発はきつい)
- 335 :C / HSPの生徒 orz:04/07/15 11:27 ID:Ian2SxqZ.net
- 課題10 インベダ風移動 修正版
http://gamdev.org/up/img/855.lzh
次の課題マダー?
- 336 :名前は開発中のものです。:04/07/15 12:55 ID:930GPiwR.net
- >>335
ソースが初心者っぽくない:-)
- 337 :名前は開発中のものです。:04/07/15 20:55 ID: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 ID: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 ID: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 ID: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 ID: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 ID: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 ID:FFz8UuO5.net
- うpろだ使えよ・・
- 344 :名前は開発中のものです。:04/07/15 21:48 ID:mfzLmHcI.net
- 過去ログよんだからわざわざ貼ったのに
ろだ推奨にルール変更?
- 345 :名前は開発中のものです。:04/07/15 22:09 ID:A+IEwnnr.net
- ところでGdevうき落ちてる?
- 346 :名前は開発中のものです。:04/07/15 22:12 ID: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 ID:nw/x++ui.net
- ライフゲームを自分でぐぐって製作
- 348 :名前は開発中のものです。:04/07/15 22:27 ID:FFz8UuO5.net
- >>344
いや、俺は過去ログ読んでないから知らんが、こんだけ連張りするんなら
うpろだ使えばいいだろって事。せっかく用意されてんだし。
と思ったら今gamdev.org落ちてんのか・・
- 349 :4 ◆3VUXqvbfSY :04/07/15 22:30 ID:ulthkOuE.net
- まあ…DirectXを使うときは…
初期化は省きましょう
- 350 :名前は開発中のものです。:04/07/15 22:33 ID:mfzLmHcI.net
- 避難所は落ちてますね
wiki、ろだ等全滅です
>>173のろだは生きてるようだけど使っていいのかな?テストって言ってたけど
http://cgi.f11.aaacafe.ne.jp/~novarabb/phpup/upload.php
>>347
先生キタ━━━━━━(゚∀゚)━━━━━━ !!
でもライフゲームなんて作ってたらまたゲームに関係ないものを
作ってと怒り出す人がいるのでその時はおながいしますね
ちなみに採点できる言語は何ですか?
- 351 :4 ◆3VUXqvbfSY :04/07/15 22:40 ID:ulthkOuE.net
- >>347
ワーイ 良いですねぇ。ライフ「ゲーム」と言い切れば、誰からも文句は出ないですし。
今回は僕は生徒でw
仕様を決めてくださいよ〜
生死条件や個々の移動条件とか
- 352 :名前は開発中のものです。:04/07/15 22:42 ID:mfzLmHcI.net
- と思ったら4様もキタ━━━━━━(゚∀゚)━━━━━━ !!
了解しました>初期化は省きましょう
サンプルそのままなんで見る意味もないですし
課題に関係がある所だけ貼って後はろだにうぷするのがバランスいいかな
>>348
連貼りするのは生理的に受け付けないのに我慢してやってるんだから
酷いこといわないでよヽ(`Д´)ノ
- 353 :名前は開発中のものです。:04/07/15 22:51 ID: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 ID: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 ID:9OMAGGSs.net
- ライフゲームを検索で見てみましたけど、これは二次元配列の処理がオセロみたいな感じになりそうですね
それで、存在しない配列を参照するバグ続出…
- 356 :名前は開発中のものです。:04/07/16 11:55 ID:yFlo2kjF.net
- >>352
「4様」って某韓国俳優のミーハーみたいで何かやだなw
- 357 :134:04/07/16 23:21 ID:9OMAGGSs.net
- ライフゲームっぽいものが途中まで出来ました。
まだ、初期位置が決められないのと、予測していた動きにならないので、バグがあると思います。
あと、ソースを見ると分かりますが、判定部分がかなりいいかげんというか、面倒な事をやってます
http://gamdev.org/up/img/857.lzh
- 358 :x≠先生かつx=生徒 ⇒ x=俺:04/07/17 14:27 ID:qbj2jGXO.net
- http://gamdev.org/up/img/862.zip
ライフゲーム with HSP
正常に動作するか怪しいけど…。
- 359 :134:04/07/17 22:23 ID:s02d0Ih2.net
- VB製ライフゲーム改良型です。一応、option.txt内を0か1に書き換えれば初期位置を変更できます。
あと、動きのバグも直しました。やはり、長めのロジックは良くないみたいです。
ちなみに、option.txt内の一番下の行の数値を換えると、進行スピードが変わります
(数値が小さい程スピードが速くなる)
http://gamdev.org/up/img/863.lzh
- 360 :名前は開発中のものです。:04/07/18 01:40 ID:C6k4fMne.net
- ライフゲームいいねぇ。シムシティで町を育てるの思い出した。原理的には同じだよね。
- 361 :名前は開発中のものです。:04/07/18 16:26 ID:yH4KfJO3.net
- 課題6当たり判定
http://gamdev.org/up/img/865.zip
- 362 :名前は開発中のものです。:04/07/18 17:00 ID:krHEjaY8.net
- それSTGスレの課題じゃね?
- 363 :名前は開発中のものです。:04/07/18 17:14 ID:yH4KfJO3.net
- >>362
【初心者】課題をクリアしていくスレ【講習会】まとめ
http://gamdev.org/w/?%5B%5B%A1%DA%BD%E9%BF%B4%BC%D4%A1%DB%B2%DD%C2%EA%A4%F2%A5%AF%A5%EA%A5%A2%A4%B7%A4%C6%A4%A4%A4%AF%A5%B9%A5%EC%A1%DA%B9%D6%BD%AC%B2%F1%A1%DB%A4%DE%A4%C8%A4%E1%5D%5D
【初心者】課題をクリアしていくスレ【講習会】まとめ
http://gamdev.org/w/?%5B%5B%A1%DA%BD%E9%BF%B4%BC%D4%A1%DB%B2%DD%C2%EA%A4%F2%A5%AF%A5%EA%A5%A2%A4%B7%A4%C6%A4%A4%A4%AF%A5%B9%A5%EC%A1%DA%B9%D6%BD%AC%B2%F1%A1%DB%A4%DE%A4%C8%A4%E1%5D%5D
【初心者】課題をクリアしていくスレ【講習会】まとめ
http://gamdev.org/w/?%5B%5B%A1%DA%BD%E9%BF%B4%BC%D4%A1%DB%B2%DD%C2%EA%A4%F2%A5%AF%A5%EA%A5%A2%A4%B7%A4%C6%A4%A4%A4%AF%A5%B9%A5%EC%A1%DA%B9%D6%BD%AC%B2%F1%A1%DB%A4%DE%A4%C8%A4%E1%5D%5D
【初心者】課題をクリアしていくスレ【講習会】まとめ
http://gamdev.org/w/?%5B%5B%A1%DA%BD%E9%BF%B4%BC%D4%A1%DB%B2%DD%C2%EA%A4%F2%A5%AF%A5%EA%A5%A2%A4%B7%A4%C6%A4%A4%A4%AF%A5%B9%A5%EC%A1%DA%B9%D6%BD%AC%B2%F1%A1%DB%A4%DE%A4%C8%A4%E1%5D%5D
【初心者】課題をクリアしていくスレ【講習会】まとめ
http://gamdev.org/w/?%5B%5B%A1%DA%BD%E9%BF%B4%BC%D4%A1%DB%B2%DD%C2%EA%A4%F2%A5%AF%A5%EA%A5%A2%A4%B7%A4%C6%A4%A4%A4%AF%A5%B9%A5%EC%A1%DA%B9%D6%BD%AC%B2%F1%A1%DB%A4%DE%A4%C8%A4%E1%5D%5D
- 364 :名前は開発中のものです。:04/07/18 17:28 ID:Cpcq6TmO.net
- 4つの整数を引数として渡して、その4つから最小値を返す関数を作りたいのですが、いい考えが浮かびません。
賢い皆さんお願いします。
- 365 :x≠先生かつx=生徒 ⇒ x=俺:04/07/18 17:35 ID: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 ID: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 ID:zInWmaTA.net
- アホみたくそのままの
仕様で書いてるな。
- 368 :x≠先生かつx=生徒 ⇒ x=俺:04/07/18 18:27 ID:8PWFdHyU.net
- どうしろと・・・。
- 369 :名前は開発中のものです。:04/07/18 19:20 ID:krHEjaY8.net
- http://gamdev.org/up/img/866.zip
ライフゲーム Java-Swing版っす。
- 370 :名前は開発中のものです。:04/07/19 01:02 ID:trLHjf+G.net
- >>367
4つぐらいならこれでいいんじゃない?
- 371 :369:04/07/19 01:56 ID:84bjiiMx.net
- http://gamdev.org/up/img/870.lzh
ライフゲームJava-Swing版、いちおう最終版のつもり。
スピード度外視で、JComponent 使いまくり。かなり重いです。
Cellの数を自由に変えられるように作ったのですが、うちの環境
だとまともに動くのは25x25くらいまで。
それ以上は、一応動くけど超スローモーション。ダメダメですわ。
Javaとはいえ、もうチョイなんとかなる筈。絶対なる。
改良するかは未定。
>>369 のリンク、拡張子間違ってました。スマソ。
- 372 :HSPが初プログラム:04/07/19 11:07 ID:SY/zAMfR.net
- ライフゲームがどんな物かはわかったんですが、
升目は幾つぐらいがいいのでしょうか?
- 373 :名前は開発中のものです。:04/07/19 11:10 ID:OTj45Fw+.net
- 設定で好きなように変えられるように作ると良い。
- 374 :名前は開発中のものです。:04/07/19 22:54 ID:E1i61iky.net
- 最初は少なく10*10程度で作っておいて、だんだん広げていけば?
遅くなったようならそれまでにすればいいし。
- 375 :名前は開発中のものです。:04/07/19 23:41 ID:sgE8uFHh.net
- 課題8弾を撃って貰います
http://gamdev.org/up/img/872.zip
- 376 :名前は開発中のものです。:04/07/20 00:57 ID:dOIeUq82.net
- 課題10 インベダ風移動(GameMaker)
http://gamdev.org/up/img/873.zip
- 377 :名前は開発中のものです。:04/07/20 17:58 ID: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 ID: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 ID:Tgn6EEUd.net
- ちまたで話題のProce55ing
ベーシックみたいでおもしれー
なんか作ってみようかな。
ライフゲームもあったよ
http://processing.org/learning/examples/cellular_automata_1.html
- 380 :Proce55ing@課題2素数:04/07/20 21:33 ID: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 ID:Totm+z2W.net
- http://f50.aaacafe.ne.jp/~kadai/Proce55ing/kadai02/applet/
- 382 :名前は開発中のものです。:04/07/21 12:16 ID: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 ID:Uh3POFTA.net
- 夏休みだってのに勢いがないな
- 384 :名前は開発中のものです。:04/07/22 16:10 ID:ybwWGKGj.net
- 課題10 インベダ風移動
http://gamdev.org/up/img/886.zip
- 385 :名前は開発中のものです。:04/07/22 19:05 ID:dsDe4Hb2.net
- >>383
なんかネタくれ
勢い祈願age
- 386 :名前は開発中のものです。:04/07/22 20:39 ID:wArk38dJ.net
- ファミコンミニに対抗しましょう。
- 387 :134:04/07/22 20:45 ID:3j8upKh5.net
- >386
ファミコンミニのようなゲームを作るという事ですか?
- 388 :ファミコンミニ第1〜3弾のソフト名一覧:04/07/22 20:59 ID: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 ID:ZMO5Xyrb.net
- 売ってるものだけに初心者課題にしてはちと重いのが多いな。
パックマンはスレがあるし。バルーンファイトとディグダグぐらいか?
- 390 :名前は開発中のものです。:04/07/22 21:33 ID:i0eCPNXf.net
- >>389
ディグダグはさりげにスムーズな穴掘りを実現しようと思うと大変だぞ
いっそゼビウスやスターソルジャーの方がまだ、ってスレあるか
ここにゃ入ってないがインベーダ移動の発展でギャラクシアン降下とか
- 391 :名前は開発中のものです。:04/07/22 21:41 ID:o7mEJPNw.net
- いきなりレベルアップしたな。
- 392 :名前は開発中のものです。:04/07/22 21:50 ID:ZMO5Xyrb.net
- んじゃバルーンファイトなら?
- 393 :名前は開発中のものです。:04/07/22 21:58 ID:dsDe4Hb2.net
- 難しいからこそ、こういうスレで解説して欲しいという気も
- 394 :名前は開発中のものです。:04/07/22 22:14 ID:R1jpzCf9.net
- ゲーム全体じゃなくて、部分的な課題というのはどうですか?
ディグダグなら岩が落ちるところだけとか、マッピーならトランポリンとか。
- 395 :390:04/07/22 22:20 ID:8dIAslOQ.net
- ディグダグは、単純なオブジェクト移動だけじゃなく、
背景も同時に書き換える必要があって、
その書き換えた背景との当たりも必要なので、初心者には荷が重いと思われ。
バルーンファイトは、オブジェクトの当たり判定時に、
「オブジェクトのどの辺に相手のどの辺が当たったか」
あたりの判定が壁やね。あと重力管理か。
大体、後発のゲームは単純そうに見えて大変なことをやってる場合が多いので、
(テトリスみたいなんは例外)
Pong>ブロック崩し>インベーダ>ギャラクシアン>平安京>パックマンと
実際のゲームの歴史に沿って練習してくといいと思うぞ。
- 396 :390:04/07/22 22:28 ID:8dIAslOQ.net
- じゃあ、部分的に、ということで、
マッピーのトランポリンの基礎になる
「床でバウンドするボール」でもいってみっか?
シューティング作成スレみたくlevel制で。
level1:
ウィンドウに丸を表示しましょう。
level2:
ウィンドウ下に向かって自由落下させましょう。
level3:
ウィンドウ下端に当たったらそこで止まるようにしましょう。
level4:
ウィンドウ下端に当たったら反射してバウンドするようにしましょう。
減衰なしと考えて、バウンド後、
元の高さに達したらまた落下するようにしましょう。
level5:
床にあたったら減衰するようにして、
次第にバウンドを小さくするようにしましょう。
こんなんでどうやね?
- 397 :名前は開発中のものです。:04/07/22 22:39 ID:R1jpzCf9.net
- >>396
面白みにかけるから、スタート地点は床で、
そこから右に移動することはできる。
移動してて床が途切れたところ(足元チェック)で
落下開始、とか。
落下もしくは上昇中は足元のチェックはしなくていい。
これだけでもそこそこ処理が必要だし、データの持ち方で書き方が
変わってくると思う。
- 398 :名前は開発中のものです。:04/07/22 22:40 ID:zFfieLLF.net
- >>396
課題外伝 ボールの跳ね返りシミュ
で、みんなlevel5まで終了してしまってるような・・・
- 399 :名前は開発中のものです。:04/07/22 22:56 ID:dsDe4Hb2.net
- 過去の課題等のまとめページはこちら
http://qrl.jp/?u=104365
- 400 :名前は開発中のものです。:04/07/22 23:14 ID:NHymqfSQ.net
- >>398
うわ、悪い。ちゃんとチェックせんといかんね。
397氏の意見も踏まえてちょっと考えてみゆ。
一晩くれんか?
- 401 :400:04/07/22 23:35 ID:NHymqfSQ.net
- 一晩と言ったが、少し考えてこんなのはどうか?
課題11:ドットイータ基礎
level1:
画面を○で埋め尽くす。
level2:
画面中央にオブジェクトを表示し、自由移動できるようにする。
埋め尽くした○との重ねあわせに注意。
level3:
キーを離しても、オブジェクトが○中央できっちり止まるようにする。
90度曲がる場合も、○中央まで進んでから曲がること。
level4;
画面周囲、および画面内に迷路上に■を配置し、■の中には進入不可とする
level5:
オブジェクトが通過した○を消去する。
これでどうやね?
- 402 :x≠先生かつx=生徒 ⇒ x=俺:04/07/22 23:40 ID:cgOfwBjG.net
- ゲームそのものを知らないのでテトリスでも作ろうか…。
- 403 :名前は開発中のものです。:04/07/23 00:08 ID:ZzAd+MaZ.net
- >400
まことにすまないのだが、既出なんだ。
初心者専用スレ「パックマン」風ゲーム作らない?
http://pc5.2ch.net/test/read.cgi/gamedev/1014326802/l50
- 404 :400:04/07/23 00:29 ID:MNC+jdGg.net
- >>403
そうかー、ディグダグの話が出たので、
これをディグダグ風穴掘りに発展させよと思ってたのだわ。
level6:
通過した際、単純に消すのではなく、通過していない方向には
壁を残した形で穴あきのパターンを置く
穴あきパターンとしては16種類存在するはづ
level7:
手付かずの領域に進入する際、
進入に応じて進行方向に侵食していくパターンに書き換える
侵食中にUターンすると虫食い状態のパターンが残るはづ
level8:
■の真下が手つかづ、もしくは■でない場合、■を落下させる。
落下した結果、手つかづ、もしくは■の領域に到達したら、
落下中の■を消去
といった感じで。これでもあかんか?
- 405 :名前は開発中のものです。:04/07/23 00:34 ID:ZzAd+MaZ.net
- あれもこれも駄目って言うだけなのもナニなので。
ファミコンから離れて、初心者用でまだ出てないものを色々考えてみる。
カードゲーム系。神経衰弱など、手持ち札が無く盤面だけでできる簡単なもの。
思考パズル。いわゆる倉庫番や16パズル、ライツアウトなんか。
シューティング系。弾を撃つの発展で誘導弾を撃ってみる。
ワンキーアクション。押すと上昇、離すと下降の洞窟進行ゲーなど。
- 406 :名前は開発中のものです。:04/07/23 00:39 ID:ZzAd+MaZ.net
- うぉ、行き違い発生(汗
試みはなかなかおもろそう。
初心者がレベルアップするにはいい課題だけど
後半かなりレベル上がりすぎのような気もする。
- 407 :400:04/07/23 00:47 ID:MNC+jdGg.net
- カードゲームか・・・
後々知っておいて役に立ちそう、ということでは、
カードのハンドリングなんかどうだろう?
カードのフリップ、n個の地点への配布
手札のエクスパンド
(一定領域内に、手札枚数が多ければ間隔を狭く、少なければ広く並べる)
などなど。
カードのフリップには拡縮がいるけど、GDIでできることだしなぁと、あかん?
- 408 :406:04/07/23 01:02 ID:ZzAd+MaZ.net
- >400
初心者向けやからそこまでせんでもええんとちゃう?
4×4の数字だけの神経衰弱として
LV1 カードを描く(テキストでもOK)
LV2 シャッフルして並べる。
LV3 裏返してめくって、当たったら取り除く
最初はこのへんからでどない?
- 409 :400:04/07/23 01:13 ID:MNC+jdGg.net
- >406
確かに最初はそのへんで十分かも。
後々lv2の「並べる」、とかlv3の「めくる」とか
そのへんを見栄え良くするように拡張していくとかね。
LV4 「めくる」をなめらかにする
LV5 「並べる」を一箇所にある山札から各位置にスムーズに動かす
とかとか
- 410 :名前は開発中のものです。:04/07/23 01:19 ID:ZzAd+MaZ.net
- OKOK、じゃぁ次の課題は神経衰弱ってことで。
なんか勝手に二人でどんどん進めていってるようだけど
良かったんだろうか? と思いつつも寝ます。
- 411 :名前は開発中のものです。:04/07/23 01:28 ID:tthpyoFm.net
- 先生が仕切らないとスレがとんでもない方向に進む
- 412 :名前は開発中のものです。:04/07/23 17:36 ID:3LPKLQOf.net
- よし仕切ってやろう
みんな今すぐパンツを脱げ
- 413 :名前は開発中のものです。:04/07/23 18:24 ID:ERCkdf+D.net
- つまんね
- 414 :名前は開発中のものです。:04/07/23 19:12 ID:+uDsmYVf.net
- >>413
死ねゴミ
- 415 :4 ◆3VUXqvbfSY :04/07/23 22:36 ID:KF5N7PI1.net
- …皆様お久しぶりです。世間が夏休みになると私は忙しくなる…
不公平な気がします。
んな愚痴は置いといて…
ん〜スレの方向性か…
なんか、カードゲームとアクションゲームの二つの方向が人気が高そうなので、
…ニ兎を追ってみましょうかw
カードゲーム課題1
ペア判定しか無いポーカーを作りましょう。
ジョーカー無しのワンセット52枚をランダムに四人に五枚ずつ配り、ペアの判定のみで勝ち負けを判定し順位を出して貰います。
アクションゲーム課題1
…赤い四角再登場ですw
640*480のウィンドウ内に青い四角を使って道を作成して貰います。
各四角のサイズは64*64で青い四角の位置は問いません。
赤い四角を移動させ、スペースでジャンプ下に何もなければ落下です。
重力加速度は1.5ピクセル/フレームが自然っぽいです。
(凡に、アクションゲームの落下判定は、キャラを常に落下状態にして足場の上のみ判定をOFFにすると、楽に作れます。)
- 416 :名前は開発中のものです。:04/07/24 00:07 ID:jMxmp7dj.net
- >>414
荒らすなよ
- 417 :名前は開発中のものです。:04/07/24 00:39 ID:sBREqJXF.net
- >>396の課題をやりますた
http://gamdev.org/up/img/889.zip
計算はこんな感じでやってます
add+=g;
y+=add;
if (y>20)
{
add=-add*0.95f;
if (abs(add)<0.01)
{
g=0;
add=0;
}
}
- 418 :名前は開発中のものです。:04/07/25 15:28 ID:4bIxnMko.net
- アクションゲーム課題1できました。
むやみに画面外に出ると、(特に左側)「インデックスが有効範囲にありません」と怒られますが仕様です
http://gamdev.org/up/img/898.lzh
- 419 :134:04/07/25 19:08 ID:4bIxnMko.net
- ちょっとだけ修正。
http://gamdev.org/up/img/899.lzh
- 420 :名前は開発中のものです。:04/07/26 11:51 ID:X3QiLV0p.net
- ポーカーむずい
- 421 :名前は開発中のものです。:04/07/27 23:03 ID:iQq31bJ4.net
- 突っ込んでいいとこかわかんないけど
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 ID:gCoWnE2N.net
- はじめましてJavaで参加してみたいのですが
GUIは何使えばいいでしょうか?
SWINGかAWTですか?
総レス数 787
293 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver.24052200