[過去ログ] 【初心者】課題をクリアしていくスレ【講習会】 (787レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
88: 生徒A [sage] 04/06/19 19:27 ID:GZf8LDr8(1) AAS
そういえば、新しい課題って無いの?
89(1): 名前は開発中のものです。 [sage] 04/06/19 20:08 ID:hqj9xu9C(1) AAS
素数とかはロジックを考えるのは大切だけど、できてもあまり嬉しくないからなぁ。
かといって特定の分野に特化すると、それぞれの分野には初心者スレがあるし。
「適当なウィンドウを作成してsin波形を描画する」あたりはどう?
90(1): 4 ◆3VUXqvbfSY [] 04/06/19 21:47 ID:wn6hjF1m(1/3) AAS
良いねその課題!…ってチョットレベル上がり杉な…
…まあ良いか…
でもまずは、640*480のウィンドウに
(0,0)320*240の赤い四角を描いてください。
91: 4 ◆3VUXqvbfSY [] 04/06/19 22:17 ID:wn6hjF1m(2/3) AAS
前課題解答例
#include <stdio.h>
int Check_Prime(long n)//素数判定
{
long loops;
loops=1;
while(loops*loops < n)
{
if(loops>2)loops+=2;
else loops++;
if(n%loops==0)return 1;
}
return 0;
}
void main(void)
{
long loops=2,m=1;
printf("%ld %ld\n",m,loops);
while(m<2000)
{
m++;
printf("%ld %ld\n",m,loops);
}
if(loops>2)loops+=2;
else loops++;
}
92(1): 63 ◆xdaKt6k1XI [sage] 04/06/19 22:23 ID:D2QJG2Dd(1/2) AAS
素数は無理でしたが・・・
>>90の課題はできました。
WIDTH 640,480
COLOR 255
BOXF 320,240,1,0
stop
93: 63 ◆xdaKt6k1XI [sage] 04/06/19 22:24 ID:D2QJG2Dd(2/2) AAS
>>92
BOXF 320,240,1,0
は
BOXF 320,240,0,0
です。
94: 4 [] 04/06/19 22:25 ID:wn6hjF1m(3/3) AAS
ミスった(汗。訂正
void main(void)
{
long loops=2,m=1;
printf("%ld %ld\n",m,loops);
while(loops<2000)
{
if(Check_Prime(loops)==0)
{
m++;
printf("%ld %ld\n",m,loops);
}
if(loops>2)loops+=2;
else loops++;
}
}
95: 生徒A [sage] 04/06/20 04:33 ID:9LoKJ5Oe(1/3) AAS
なんだか、構造体とかポインタとかWin32APIとかGDIとかメッセージループとか
難しすぎなんですけど…
できたには、できました。
#include "windows.h"
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow )
{
WNDCLASSEX wcex;HWND hWnd;MSG msg;
// ウィンドウクラス構造体を設定
wcex.cbSize = sizeof(WNDCLASSEX);wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC)WndProc;wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;wcex.hInstance = hInstance;wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wcex.lpszMenuName = NULL;wcex.lpszClassName = "ModelApp";
wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
// ウインドウクラスを登録
RegisterClassEx(&wcex);
// ウインドウを作成
hWnd = CreateWindow(wcex.lpszClassName,
"640×480のウィンドウ上の(0,0)へ320×240の赤い四角を描く",
WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,640,480,NULL,NULL,hInstance,NULL);
ShowWindow(hWnd, nCmdShow);UpdateWindow(hWnd);
// メッセージループ
while(GetMessage(&msg, NULL, 0, 0))
{TranslateMessage(&msg);DispatchMessage(&msg);}return msg.wParam;
}
96: 生徒A [sage] 04/06/20 04:33 ID:9LoKJ5Oe(2/3) AAS
// ウインドウプロシージャ
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;
// メッセージの種類に応じて処理を分岐
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);
SelectObject(hDC,hPen);Rectangle(hDC,0,0,320,240);EndPaint(hWnd,&ps);return 0;
case WM_DESTROY:PostQuitMessage(0);return 0;
default:return DefWindowProc(hWnd, message, wParam, lParam);}
}
97: 生徒A [sage] 04/06/20 04:36 ID:9LoKJ5Oe(3/3) AAS
正直、4行で実現できるHSPがうらやましいと思った…
98(1): 名前は開発中のものです。 [] 04/06/20 04:46 ID:l91pLvEB(1) AAS
ここはJavaでは参加できないですか?
99: 名前は開発中のものです。 [sage] 04/06/20 07:05 ID:w0wGxy3B(1) AAS
>>98
問題ないと思いますよ
100: 名前は開発中のものです。 [sage] 04/06/20 07:50 ID:NlSC2nfH(1/2) AAS
赤い四角
<html><body><script>
s='<body><div style="position:absolute;left:0px;top:0px;background-color:Red;width:320px;height:240;"></div></body>';
window.open('','','width=640,height=480').document.write(s);
</script></body></html>
101: 名前は開発中のものです。 [sage] 04/06/20 07:51 ID:NlSC2nfH(2/2) AAS
SIN波
<html><body></div><script>
var a=[];
for(i=0;i<10000;i++)a[i]=0;
for(i=0;i<100;i++)a[(Math.sin(Math.PI/50*i)*50+50|0)*100+i]=1;
var s='<body><font face="MS ゴシック" style="font-size:4px;">';
for(i=0;i<100;i++){for(j=0;j<100;j++)s+=a[i*100+j]?'■':' ';s+='<br>';}
s+='</font></body>';
window.open('','','width=640,height=480').document.write(s);
</script></body></html>
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);
}
103: 名前は開発中のものです。 [sage] 04/06/21 12:47 ID:X4sdLydq(1) AAS
>>102
イイともワルいともいえないというか、
ウィンドウを更新するとか必要だけど、まぁ、そんな感じ。
つーか、先生はどこだ?!
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
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
>>227227(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)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
私は、インベーダーの方が良いと思います。
上下前次1-新書関写板覧索設栞歴
あと 675 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.023s