English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

期末要交一個C++的報告
可是C++我沒有很精通
所以可以幫我設計一個
C++的遊戲嗎??

恩....老師是有打比方說"小精靈"

麻煩一下各位大大
謝謝~!

2007-11-12 13:59:36 · 5 個解答 · 發問者 鄭毛仔 1 in 電腦與網際網路 程式設計

TO:ㄚ旺
沒有目標訂太高拉!就是不會才要求救押!!
老師只是打比方,但我卻沒有打算要用
只是不知道要怎樣寫一個遊戲
沒辦法我只能用C++寫
如果可以我就能像你說的上網找"小精靈"
或許我就有救了

2007-11-12 15:42:03 · update #1

5 個解答

只有45行的貪吃蛇 夠簡單了吧
記得要選視窗專案才能編譯
按enter可以暫停或新遊戲

#include
int s[256], len=2, mov=1, food=100, u=12,pause=0;
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
if (msg == WM_KEYDOWN) {
if (wParam == VK_LEFT&&mov!=16) mov=-16;
else if (wParam == VK_RIGHT&&mov!=-16) mov=16;
else if (wParam == VK_UP&&mov!=1) mov=-1;
else if (wParam == VK_DOWN&&mov!=-1) mov=1;
else if (wParam == VK_SPACE||wParam == VK_RETURN) {pause^=1;}
} else if (msg == WM_TIMER && !pause) {
HDC hdc=GetDC(hwnd);
memmove(s+1, s, sizeof(s[0])*len);
s[0]=(s[0]+mov&0xf)|(s[0]+mov&0xf0);
len+=(s[0]==food?food=rand()%255,1:0);
Rectangle(hdc, 0, 0, 16*u, 16*u);
for (int i=0; i Ellipse(hdc, (s[i]>>4)*u, (s[i]&15)*u, (s[i]>>4)*u+u, (s[i]&15)*u+u);
Rectangle(hdc, (food>>4)*u, (food&15)*u, (food>>4)*u+u, (food&15)*u+u);
for (int j=1; j if (pause=(s[j]==s[0])) {
MessageBox(hwnd, "GAME OVER!!\nPress ENTER for new game", "Snake", MB_OK);
len=2;
}
ReleaseDC(hwnd, hdc);
} else if (msg == WM_DESTROY) {
KillTimer(hwnd, 101);
PostQuitMessage(0);
}
return DefWindowProc(hwnd, msg, wParam, lParam);
}
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR cmd, int mode) {
MSG msg;
WNDCLASS wndclass={CS_HREDRAW|CS_VREDRAW,WndProc,0,0,hInst,0,
LoadCursor(0,IDC_ARROW),(HBRUSH)GetStockObject(WHITE_BRUSH),0,"Snake"};
RegisterClass(&wndclass);
HWND hwnd=CreateWindow("Snake", "Snake by novus", WS_OVERLAPPEDWINDOW|WS_VISIBLE,
CW_USEDEFAULT, CW_USEDEFAULT, 300, 320, 0, 0, hInst, 0);
s[0]=85;s[1]=86;
SetTimer(hwnd, 101, 150, NULL);
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}




2007-11-18 14:35:26 補充:
我本來不打算幫人寫作業的
不過看了樓上小綿羊的幾個迷思之後,提出一些個人的感想

一提到視窗大家都會覺得要用MFC、BCB、VB
這些工具都提供了許多好用的元件,但是當程式本身沒有使用太多的GUI元件時,用這些東西真的會比較容易嗎?或是直接用Win32 API比較簡短易懂?

各位可以想想看、寫寫看
(像打磚塊、俄羅斯、踩地雷、貪吃蛇等用Win32 API可能只要五六十行就可以做出陽春版,百來行就有相當的質感了)

2007-11-18 14:37:56 補充:
篇幅有限
這裡只貼出最陽春的功能

2007-11-18 09:19:19 · answer #1 · answered by novus 6 · 0 0

我記得 C++ HOW TO PROGRAM
書上好像有撲克牌發牌的範例
改一改應該就變成撲克牌遊戲了
譬如說 發牌比大小
夠簡單吧

2007-11-13 15:30:51 · answer #2 · answered by Ashley 7 · 1 0

/*##########這是數字方塊###########*/
#include
#include
#include
#include
void main()
{
srand(time(NULL));
char a[9]={' ',' ',' ',' ',' ',' ',' ',' ',' '};
int b,c,d,temp,times=0;
for(b='8';b>='0';b--)
a[(c=rand()%9)]==' '?a[c]=b:b++;
a[c]=' ';
for(b=0;b<9;b++)
printf("%c%c",a[b],(b%3==2?'\n':' '));
do{
switch(getch())
{
case 80:if(c>2)temp=a[c],a[c]=a[c-3],a[c=c-3]=temp,times++;break;
case 72:if(c<6)temp=a[c],a[c]=a[c+3],a[c=c+3]=temp,times++;break;
case 77:if(c!=0&&c!=3&&c!=6)temp=a[c],a[c]=a[c-1],a[c=c-1]=temp,times++;break;
case 75:if(c!=2&&c!=5&&c!=8)temp=a[c],a[c]=a[c+1],a[c=c+1]=temp,times++;break;
}
system("cls");
for(b=0;b<9;b++)
printf("%c%c",a[b],(b%3==2?'\n':' '));
printf("第%d步",times);
for(d=0;d<=8;d++)
if(a[d]!=d+'1')
break;
}while(d!=8);
printf("\r共花了%d步完成\n",times);
}

2007-11-13 23:10:54 · answer #3 · answered by 達達 5 · 0 0

最簡單是用 VB 寫。

用 C 語言或 C++? 除非你會編寫 MFC 相關的視窗程式,或者是 DOS 版本的電腦遊戲。

2007-11-12 17:23:57 · answer #4 · answered by Big_John-tw 7 · 0 0

"小精靈"遊戲程式上網找就有了

專題報告,自己寫才有意義,目標不要定太大,打磚塊就簡單多了...用BCB寫打磚塊程式碼不會超過500行...若有興趣,用socket 寫雙人打磚塊也超棒的.

2007-11-12 15:28:57 · answer #5 · answered by ㄚ旺 5 · 0 0

fedest.com, questions and answers