螢幕截圖:
#include"SDL/SDL.h"
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(int argc,char** argv)
{
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Surface *screen;
screen=SDL_SetVideoMode(300,300,32,SDL_SWSURFACE);
bool running=true;
int dx=1,dy=1,R=255,G=255,B=255;
bool a[2]={0,0};
bool b[2]={0,0};
Uint32 start;
SDL_Rect rect,board1,board2;
srand(time(NULL));
/*ball*/
rect.x=145;
rect.y=145;
rect.w=20;
rect.h=20;
/*board1*/
board1.x=290;
board1.y=0;
board1.w=10;
board1.h=80;
/*board2*/
board2.x=0;
board2.y=0;
board2.w=10;
board2.h=80;
Uint32 color=SDL_MapRGB(screen->format,0,0,0);
Uint32 color2;
Uint32 color3=SDL_MapRGB(screen->format,255,0,0);
Uint32 color4=SDL_MapRGB(screen->format,0,255,0);
while(running)
{
start = SDL_GetTicks();
SDL_Event event;
Uint32 color2=SDL_MapRGB(screen->format,R,G,B);
while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_QUIT:
running=false;
break;
case SDL_KEYDOWN:
switch(event.key.keysym.sym)
{
case SDLK_ESCAPE:
running=false;
break;
case SDLK_UP:
a[0]=1;
break;
case SDLK_DOWN:
a[1]=1;
break;
case SDLK_w:
b[0]=1;
break;
case SDLK_x:
b[1]=1;
break;
}
break;
case SDL_KEYUP:
switch(event.key.keysym.sym)
{
case SDLK_UP:
a[0]=0;
break;
case SDLK_DOWN:
a[1]=0;
break;
case SDLK_w:
b[0]=0;
break;
case SDLK_x:
b[1]=0;
break;
}
break;
}
}
/*red board move*/
if(a[0])
board1.y-=10;
if(a[1])
board1.y+=10;
/*red board move 邊界*/
if(board1.y<=0)
board1.y=0;
if(board1.y>=220)
board1.y=220;
/*green board move*/
if(b[0])
board2.y-=10;
if(b[1])
board2.y+=10;
/*green board move邊界*/
if(board2.y<=0)
board2.y=0;
if(board2.y>=220)
board2.y=220;
/*變色*/
if(rect.y==0 || rect.y==280)
{
R=rand()%256;
G=rand()%256;
B=rand()%256;
}
rect.x+=dx;
rect.y+=dy;
/*ball死亡條件*/
if(rect.x<0)
{
rect.x=145;
rect.y=145;
rect.w=20;
rect.h=20;
}
if(rect.x>=300)
{
rect.x=145;
rect.y=145;
rect.w=20;
rect.h=20;
}
if(rect.y<=0)
dy=-dy;
if(rect.y>=280)
dy=-dy;
/*上下邊界*/
if(rect.y<=0)
rect.y=0;
if(rect.y>=280)
rect.y=280;
/*ball and green board 反彈*/
if(rect.x==10)
if(rect.y>=board2.y-20 && rect.y<=board2.y+80)
{
dx=-dx;
rect.x=10;
}
/*ball and red board 反彈*/
if(rect.x==270)
if(rect.y>=board1.y-20 && rect.y<=board1.y+80)
{
dx=-dx;
rect.x=270;
}
/*render*/
SDL_FillRect(screen,&screen->clip_rect,color);
SDL_FillRect(screen,&rect,color2);
SDL_FillRect(screen,&board1,color3);
SDL_FillRect(screen,&board2,color4);
SDL_Flip(screen);
SDL_Delay(10);
}
SDL_Quit();
return 0;
}

沒有留言:
張貼留言