1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
pacman
จงเขียนเกม PACMAN โดยมีรายละเอียดดังนี้ 1. มีลูกบอลทั้งหมด 80 ลูก 2. มีการเก็บคะแนนและแสดงคะแนนด้านซ้ายบน 3. หากกินลูกบอลหมดจะขึ้นคำว่า YOU WINscreen shot Thanks: Ro ฝากรูป Thanks: Ro ฝากรูป Thanks: Ro ฝากรูป อธิบายการทำงานของโปรแกรม VIDEO VIDEO codeเกม PACMAN
#include // ------------------------------------------------------------------ // CDX Objects // ------------------------------------------------------------------ CDXScreen *Screen = 0; // The screen object, every program must have one CDXInput *Input = 0; //*เป็นการประกาศpointer FPSmanager *Fps = 0; //ลองใส่ภาพ///////////////// CDXSprite* pac = 0; // //ตัวแปรในการเคลื่อนที่///////////////// int x, y, i, j; //x y ใช้ในการเคลื่อนที่ i jสร้างลูปลูกบอล int pc=0; //นับแต้ม typedef struct //ข้อมูลของsprite ลูกบอล { int x, y; CDXSprite* ball; bool Active; //ตัวแปรบูลีน ตัวบอกสถานะ }BALLINFO; BALLINFO myball[10][8]; // ------------------------------------------------------------------ // cdx_Init - handles initialization of the CDX objects // ------------------------------------------------------------------ BOOL cdx_Init() // จองหน่วยความจำ { Screen = new CDXScreen(); // new คือ จองหน่วยความจำ Screen->Create( ); Screen->CreateWindowed( 480, 272, 32, SDL_DOUBLEBUF | SDL_HWSURFACE | SDL_INIT_TIMER ); // 480*272 คือขนาดหน้าจอPSP Input = new CDXInput( ); // ปุ่มบังคับ Input->Create( ); Fps = new FPSmanager( ); SDL_initFramerate( Fps ); SDL_setFramerate( Fps, 30 ); // TODO: Initialize your own CDX objects here //ลอง////////////////////////////////// pac = new CDXSprite( ); // pac->Create( "pm.png", 1 ); // // for( i = 0; i < 10; i++ ) for( j = 0; j < 8; j++ ) { myball[i][j].ball = new CDXSprite( ); myball[i][j].ball->Create( "ball.png", 1 ); myball[i][j].x = 45*(i+1); myball[i][j].y = 32*(j+1); myball[i][j].ball->SetPos( myball[i][j].x, myball[i][j].y ); myball[i][j].Active = true; } return TRUE; } // ------------------------------------------------------------------ // cdx_DeInit - handles cleanup of CDX objects // ------------------------------------------------------------------ void cdx_DeInit( void ) { // TODO: Destroy your CDX objects here for( i = 0; i < 10; i++ ) for( j = 0; j < 8; j++ ) SAFEDELETE( myball[i][j].ball ); SAFEDELETE(pac); SAFEDELETE( Fps ); //SAFEDELETEเป็นการคืนmemory SAFEDELETE( Input ); SAFEDELETE( Screen ); //ลอง///////////////// // } // ------------------------------------------------------------------ // cdx_DoFrame - performs drawing of the current frame // ------------------------------------------------------------------ void cdx_DoFrame() { Input->Update( ); Screen->GetBackEx()->Fill(0); //Fill คือ สี // TODO: Add code to draw your objects during each frame [ใส่codeเพิ่มเติม] if( Input->GetKeyState(SDLK_RETURN)||( Input->GetKeyState(CDXKEY_JOYBUTN11))){ pc=0; for( i = 0; i < 10; i++ ) for( j = 0; j < 8; j++ ) { myball[i][j].ball->SetPos( myball[i][j].x, myball[i][j].y ); myball[i][j].Active = true; } } //การเคลื่อนที่ของภาพ if(( Input->GetKeyState(SDLK_RIGHT))||( Input->GetKeyState(CDXKEY_JOYBUTN9))) x += 7; if(( Input->GetKeyState(SDLK_LEFT))||( Input->GetKeyState(CDXKEY_JOYBUTN7))) x -= 7; if(( Input->GetKeyState(SDLK_UP))||( Input->GetKeyState(CDXKEY_JOYBUTN8))) y -= 7; if(( Input->GetKeyState(SDLK_DOWN))||( Input->GetKeyState(CDXKEY_JOYBUTN6))) y += 7; if(y>230) y=230; if(y<0) y=0; if(x>430) x=430; if(x<0) x=0; pac->SetPos( x, y ); pac->Draw( Screen->GetBack(), 0, 0, CDXBLT_TRANS ); for( i = 0; i < 10; i ++ ) for( j = 0; j < 8; j++ ) { if( pac->SpriteHit(myball[i][j].ball) && myball[i][j].Active ){ myball[i][j].Active = false; pc++; } if( myball[i][j].Active ) myball[i][j].ball->Draw( Screen->GetBack(), 0, 0, CDXBLT_TRANS ); } // for j TextXY( Screen->GetBack(), 20, 5, 233, 227, 66, 255, ETA_LEFT ,"Your Score %d ",pc ); if(pc == 80){ TextXY( Screen->GetBack(), 20, 128, 233, 100, 66, 255, ETA_CENTER, "You Win" ); TextXY( Screen->GetBack(), 20, 148, 233, 100, 66, 255, ETA_CENTER, "Press Start to continue" ); } Screen->Flip( 0, 0, 1 ); SDL_framerateDelay( Fps ); } int main( int argc, char* args[] ) { #ifdef _PSP #ifndef NDEBUG pspDebugScreenInit( ); #endif SetupCallbacks( ); #endif cdx_Init(); while(1) { #ifdef WIN32 if( Input->GetKeyState(SDLK_ESCAPE) ) break; #endif cdx_DoFrame(); } cdx_DeInit(); return 0; }
Create Date : 29 มิถุนายน 2554
Last Update : 1 กรกฎาคม 2554 21:16:48 น.
1 comments
Counter : 566 Pageviews.
โดย: sbo (ponglds ) วันที่: 1 เมษายน 2555 เวลา:16:17:29 น.