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

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
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
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)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);}
}
作ったペンとブラシは終了時に開放したほうがいいですよ。
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も参加していいですか?
129
(3): 名前は開発中のものです。 [sage] 04/06/23 19:25 ID:mQ2LYzxk(1) AAS
mingwとかSDLとかHSPとかSDKとかSDLPerlとかが一体なんなのか
理解できない漏れ…

とりあえずHelloWorldはできたけどウインドウ表示なんて壁高杉
どうすればいいんだよう…
130
(3): 4 ◆3VUXqvbfSY [] 04/06/23 20:11 ID:YwmthHB/(1) AAS
>>128
ぜんぜんOK!HSPが居るんだから大じょーぶ。

>>129
MSDNライブラリを読む事から始めましょう。
ウィンドウ表示に関しては、VCの最初の壁です。コレがあるからVCは面倒くさいんですが…。
しかし、ウィンドウが表示できれば、簡単なゲームは直ぐ作れるようになりますって。

まあ、難しければHSPに転向しちゃうって手もあります。
スピードが要求されなければ、かなり便利な言語です。

HSPでググってみてください。

>>ALL
わかりました。インベーダーで始めましょう。
ただし、インベーダーが一通り作れたら、落ちゲーにも触れますよ(ぷよぷよやドリラー等)

階級制は面白いんですが…判断基準が…微妙…。
昇級試験制にしたらどうでしょう。
たとえば。
問題(if文を使わずに、A=Bなら0。A≠Bなら1を表示するプログラムを作れ)

とか
131
(1): 名前は開発中のものです。 [sage] 04/06/23 20:12 ID:bTZutcV4(1) AAS
真に初心者であれば分からないのは当然。
とりあえず分からない単語を列挙すれば、誰か暇な人が答えてくれるかもしれない。
132
(1): 名前は開発中のものです。 [sage] 04/06/23 22:00 ID:dPgxaG/R(1) AAS
>>129
hello worldを何で表示したか分からんからアレだけど、
取り合えずC/C++と仮定した場合、キミがいくべきところはここだ。

外部リンク:www.kumei.jp
133
(1): 生徒BLUE@入隊希望 [] 04/06/23 22:23 ID:G2RbfgcV(2/2) AAS
>>127の続き
これで完了です
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch (msg) {
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_PAINT:
DrawGr(hWnd);
break;
default:
return(DefWindowProc(hWnd, msg, wParam, lParam));
}
return (0L);
}
134
(16): 名前は開発中のものです。 [] 04/06/24 00:34 ID:9IgBi+UW(1) AAS
>>130 ありがとうございます。C言語でも出来ますけど、あまり自信が無いんです…。

VBでキャラの移動と弾の発射だけやってみました。
←→キーで左右移動、Z or Spaceキーで弾の発射です。
外部リンク[lzh]:gamdev.org
135: 名前は開発中のものです。 [sage] 04/06/24 14:35 ID:9ja3YKOg(1) AAS
>>134
×押して終了しても、プロセスが残ってるみたい
136: メトロイド オモロイド [sage] 04/06/24 21:11 ID:Yq9S/x7T(1) AAS
2Dメトロイド&3Dメトロイド作ってみたらどうだ?
難しいがエラー無く完成したら腕上がるぞ。
137: 生徒BLUE [] 04/06/24 23:20 ID:kfww3pCy(1) AAS
次はいよいよインベーダーですか

参考にしたサイト:外部リンク:www3.omn.ne.jp
今回新しく使った関数:MoveToEx、LineTo

>>125>>127>>133の中からDrawGr関数を書き換えて#include <math.h>を追加します。
//課題4sin波
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);
MoveToEx(hdc,0,sin(0.0)*100+240,NULL);
for (float i=0; i<6.28; i+=0.01) {
LineTo(hdc,i*100,sin(i)*100+240);
}
SelectObject(hdc, hBrush);
DeleteObject(hPen);
SelectObject(hdc, hOldPen);
DeleteObject(hPen);
EndPaint(hWnd, &paint);
return 0;
}
1-
あと 650 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.026s