[過去ログ] 【初心者】課題をクリアしていくスレ【講習会】 (787レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
104: 4 ◆3VUXqvbfSY [] 04/06/21 13:24 ID:xh+2kWgx(1) AAS
ココw
…まあ、VCの人が出来てんだから、sinの課題も可能か…

sinの方の制作もどうぞ。

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

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

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

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

まあ、どちらも一気にはつくりませんw
方向性が決まったら、ボトムアップに作りましょうw
105: 名前は開発中のものです。 [sage] 04/06/21 13:30 ID:Z9w22r4l(1/2) AAS
>>102
102(2): 名前は開発中のものです。 [sage] 04/06/20 11:15 ID:B7NIG/G/(1) AAS
画面を黒でクリアする方法ってこれでいいんですか?
void Clear(void)
{
SelectObject(hDC , GetStockObject(BLACK_BRUSH));
Rectangle(hDC , 0 , 0 , WIDTH , HEIGHT);
}
DCはグローバルで持ってるのか?引数で渡した方が良いぞ。
106: 名前は開発中のものです。 [sage] 04/06/21 15:47 ID:6NF9APWD(1) AAS
どちらにせよソースが収まらない悪寒
107
(1): x≠先生かつx=生徒 ⇒ x=俺 [sage] 04/06/21 18:09 ID:X+fe3iOx(1) AAS
HSP版
#include "hspext.as"

pos 0, 240
repeat 640
emsin sin, cnt\256
line cnt, 240+(sin*240/256)
loop
stop
108: 名前は開発中のものです。 [sage] 04/06/21 19:41 ID:/2qctf8W(1) AAS
テトリスは専用スレがあるし、JavaScriptで7行に収まったりと、
ネタが出尽くしているので飽きてます。
109: 名前は開発中のものです。 [sage] 04/06/21 19:57 ID:8Xx3uQUF(1/3) AAS
237 名前:名前は開発中のものです。[sage] 投稿日:03/09/21(日) 18:16 ID:vg0x9Gpj
>>227
227(1): 名前は開発中のものです。 [sage] 04/07/01 15:45 ID:bdPAbTo6(1) AAS
>>226
キミのソースに少し手を加えたやつをうpろだにあげたから試してみれ。780.lzhだ。
ただしオフスクリーン処理以外(後始末とか)は端折ってるのでそこは参考にしないように。
外部リンク:www.excite.co.jp
2Freference%2Fdesign%2Ffeatures%2Fmakegames%2Fpage2.asp&wb_lp=ENJA&wb_dis=2

テトリス→ブロック崩し→パックマン→スーパーマリオ→ギャラガ
がいいらしい

リンク先のスーパーマリオ2が違うゲーム(夢工場?)に見えるけどなんなんだろ
110: 名前は開発中のものです。 [sage] 04/06/21 20:05 ID:B4V2NoLh(1) AAS
メッセージループを使う60fpsのゲームにして欲しい。
後々こっちのほうが役に立つと思う。
111
(1): 生徒A [sage] 04/06/21 21:54 ID:jNWjDlXF(1/3) AAS
とりあえず、sinカーブの方を少し遅れたんですが、作ってみました。

一番先頭に#include<math.h>を付けたら、あとはキャプション以外は、ウィンドウプロシージャーしか違わないので
そこだけ書く事にしました。

// ウインドウプロシージャ
LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
{
HDC hDC;PAINTSTRUCT ps;static HPEN hPen;static HBRUSH hBr;
RECT box;box.bottom =480;box.left =0;box.right =640;box.top =0;
int x=0,y,k=0; double rad=3.14159/180;
// メッセージの種類に応じて処理を分岐
switch (message){
case WM_CREATE:
hPen=CreatePen(PS_SOLID,1,RGB(255,0,0));hBr=CreateSolidBrush(0x00000000);
return 0;
case WM_PAINT:
hDC=BeginPaint(hWnd,&ps);SelectObject(hDC,hBr);FillRect(hDC,&box,hBr);
for(x=0;x<=640;x++){
y=(int)(sin((double)k*rad)*100.0+240.0);
x++; k++;
if(k>360
360(1): 名前は開発中のものです。 [sage] 04/07/18 01:40 ID:C6k4fMne(1) AAS
ライフゲームいいねぇ。シムシティで町を育てるの思い出した。原理的には同じだよね。
)k=0;
SelectObject(hDC,hPen); SetPixel(hDC,x,y,RGB(255,0,0));
}
EndPaint(hWnd,&ps);
return 0;
case WM_DESTROY:PostQuitMessage(0);return 0;
default:return DefWindowProc(hWnd, message, wParam, lParam);}
}
112: 生徒A [sage] 04/06/21 21:57 ID:jNWjDlXF(2/3) AAS
私は、インベーダーの方が良いと思います。
113
(1): 名前は開発中のものです。 [sage] 04/06/21 22:10 ID:MJraUy6q(1/2) AAS
本当に一からやるんだったら、まだまだ基礎的なことはたくさんあるですよ。

o 描いた四角を横に動かし続ける
o 画面の端で跳ね返るようにする
o 2つの四角を描いてを横に動かし続ける(速度が違うようにする)
o 四角同士が衝突したら跳ね返るようにする
o 四角を斜めに動かす
o 斜めに跳ね返るようにする
o 丸を描く
o 丸同士を当てたら跳ね返るようにする(ビリヤードみたいなの)
o etc, etc, etc...
114: 名前は開発中のものです。 [sage] 04/06/21 22:13 ID:MJraUy6q(2/2) AAS
あと、できればバイナリ付きソースをUPして欲しかったり…
115
(1): 名前は開発中のものです。 [sage] 04/06/21 22:17 ID:8Xx3uQUF(2/3) AAS
まとめページ
外部リンク:gamdev.org
アップローダ
外部リンク:gamdev.org
116: 名前は開発中のものです。 [sage] 04/06/21 22:23 ID:Z9w22r4l(2/2) AAS
誰かsin関数くらい自前で用意して描画しろよ。
117: 生徒A [sage] 04/06/21 22:33 ID:jNWjDlXF(3/3) AAS
sin関数を自前で用意するとなると、テイラー級数展開?が必要になる気がしたんですが…

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

sin(x) = x-(x^3/3!)+(x^5/5!)-(x^7/7!)+…
118
(1): 名前は開発中のものです。 [sage] 04/06/21 23:47 ID:8Xx3uQUF(3/3) AAS
赤い四角、Delphiです
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientWidth:=640;
ClientHeight:=480;
Canvas.Brush.Color:=clRed;
Canvas.FillRect(Rect(0,0,320,240));
end;
119
(1): 名前は開発中のものです。 [sage] 04/06/22 00:43 ID:z3uDPhKo(1/2) AAS
sin波形、Delphi
procedure TForm1.Button1Click(Sender: TObject);
var
 i: Integer;
begin
  ClientWidth:=640;
  ClientHeight:=480;
  Canvas.Pen.Color:=clRed;
  Canvas.MoveTo(0,240);
  for i:=0 to 627 do begin
    Canvas.LineTo(i, Trunc(sin(i/100)*100)+240);
  end;
end;
120: 4 ◆3VUXqvbfSY [] 04/06/22 06:00 ID:tegmloOZ(1) AAS
>>113
勿論、選んだ方の基礎からやっていきますから。大丈夫です。ただ、大まかな指針が欲しいだけで。

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

>>ALL
マジで、先生増やしてよ〜。僕一人じゃ不安だよ〜
121: 名前は開発中のものです。 [sage] 04/06/22 08:07 ID:bOsE7Dq6(1) AAS
>>118-119
正解。
122: 名前は開発中のものです。 [sage] 04/06/22 12:14 ID:vyNZUIcy(1) AAS
>>111
作ったペンとブラシは終了時に開放したほうがいいですよ。
123: 名前は開発中のものです。 [sage] 04/06/22 13:59 ID:z3uDPhKo(2/2) AAS
階級制にしようぜ!

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

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

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

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

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

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

たまに天才がいて、Tシャツ短パンで一直線にエベレストに登頂したりするけど
そういうやつ以外は「大佐のくせにそんなことも知らないのかよ。プッ」って言われるのがオチかも。
125
(2): 生徒BLUE@入隊希望 [] 04/06/22 23:32 ID:ImuZbVzv(1) AAS
赤い四角の課題解きました
書き込み制限に引っ掛かりますのでのんびり貼り付けていきます
参考にしたのは猫でもわかるプログラミングとSTGを最初からみんなで作るスレです
TABやスペースをnbspに変換するツールって欲しい時にはなかなか出てこないですね
ム板でたまに見かけた記憶はあるのですが……、持ってる人いたらください
それでは貼り付け開始

// 課題 赤い四角
#include <windows.h>
#define WIDTH 640
#define HEIGHT 480
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
char szClassNme[] = "WINDOWCLASSNAME";
int DrawGr(HWND hWnd)
{
PAINTSTRUCT paint;
HDC hdc = BeginPaint(hWnd, &paint);
HPEN hPen, hOldPen;
RECT rt;
GetClientRect(hWnd, &rt);
hPen = CreatePen(PS_SOLID, 1, RGB(255, 0, 0));
hOldPen = (HPEN)SelectObject(hdc, hPen);
HBRUSH hBrush = CreateSolidBrush( RGB(255, 0, 0));
SelectObject(hdc, hBrush);
Rectangle(hdc, 0, 0, 320, 240);
SelectObject(hdc, hBrush);
DeleteObject(hPen);
SelectObject(hdc, hOldPen);
DeleteObject(hPen);
EndPaint(hWnd, &paint);
return 0;
}
126: 名前は開発中のものです。 [sage] 04/06/23 01:15 ID:4HGTxQki(1) AAS
怖いのは登山ルートが間違った状態で登っていることだ
行き先は崖だったり
127
(2): 生徒BLUE@入隊希望 [] 04/06/23 15:21 ID:G2RbfgcV(1/2) AAS
>>125の続き
//640x480ってひょっとしてクライアントウィンドウじゃなくてウィンドウのサイズでよかったですか?
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPreInst,LPSTR lpszCmdLine, int nCmdShow)
{
HWND hWnd;
MSG msg;
WNDCLASS myProg;
if (!hPreInst) {
myProg.style =CS_HREDRAW | CS_VREDRAW;
myProg.lpfnWndProc =WndProc;
myProg.cbClsExtra =0;
myProg.cbWndExtra =0;
myProg.hInstance =hInstance;
myProg.hIcon =NULL;
myProg.hCursor =LoadCursor(NULL, IDC_ARROW);
myProg.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH);
myProg.lpszMenuName =NULL;
myProg.lpszClassName =szClassNme;
if (!RegisterClass(&myProg))
return FALSE;
}
RECT rect; rect.top = 0; rect.left = 0; rect.right = WIDTH; rect.bottom = HEIGHT;
DWORD style=WS_BORDER | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX;
AdjustWindowRect(&rect, style, FALSE); int width = rect.right - rect.left; int height = rect.bottom - rect.top;
hWnd=CreateWindow(szClassNme, "【初心者】課題をクリアしていくスレ【講習会】", style, CW_USEDEFAULT,0,width,height,NULL,NULL,hInstance,NULL);
ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd);
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (msg.wParam);
}
128
(1): 名前は開発中のものです。 [] 04/06/23 18:23 ID:XpSZny8Q(1) AAS
VBも参加していいですか?
1-
あと 659 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.022s