#include "SDL/SDL.h" #include "SDL/SDL_image.h" #include #include const int SCREEN_BPP = 32; SDL_Rect clip; const int FRAMES_PER_SECOND = 20; bool skiblit = true; int x; int y; int turnnum = 6; bool run = true; short speed = 25; const int screenwidth = 480; const int screenheight = 272; short directionx = 0; short directiony = 0; const int numobjects = 14; short height = 0; short jumpheight = 0; char timetext[6]; char speedtext[5]; char disttext[5]; char styletext[5]; int style = 0; int disty = 1; int distx = 0; int timer = 0; short pushedx = 0; short pushedo = 0; short gametype = 0;//0 = freestyle 1 = slolem 2 = tree slolem bool snowbump = 0; bool hitramp = 0; short monsteraction = 0; short eatpicnum= 0; int objwidth; int objheight; short row; short column; int oldlx; int oldly; int oldbuttons; typedef struct{ short picx; short picy; int height; int width; int x; int y; short action; short movex; short movey; /* type 1 = tree, type 2 = rocks, type 3 = snow type 4 = person */ /* type 5 = snowboarder type 6 = skilift type 7 = dog, type 8 = ramp*/ /* type 9 = skilift poles type 10 = snowjump*/ int type; }objects; objects skiier; objects object[14]; objects objsign[6]; objects monster[2]; SDL_Surface *sprites = NULL; SDL_Surface *background = NULL; SDL_Surface *buffer1 = NULL; SDL_Surface *load_image( std::string filename ) { //The image that's loaded SDL_Surface* loadedImage = NULL; //The optimized surface that will be used SDL_Surface* optimizedImage = NULL; //Load the image loadedImage = IMG_Load( filename.c_str() ); //If the image loaded if( loadedImage != NULL ) { //Create an optimized surface optimizedImage = SDL_DisplayFormat( loadedImage ); //Free the old surface SDL_FreeSurface( loadedImage ); //If the surface was optimized if( optimizedImage != NULL ) { //Color key surface SDL_SetColorKey( optimizedImage, SDL_RLEACCEL | SDL_SRCCOLORKEY, SDL_MapRGB( optimizedImage->format, 0, 0xFF, 0xFF ) ); } } //Return the optimized surface return optimizedImage; } void apply_surface( int x, int y, SDL_Surface* source, SDL_Surface* destination, SDL_Rect* clip = NULL ) { //Holds offsets SDL_Rect offset; //Get offsets offset.x = x; offset.y = y; //Blit SDL_BlitSurface( source, clip, destination, &offset ); } void blitAlphaImageToScreen( int picx, int picy, int width, int height, SDL_Surface* source, int x, int y) { clip.x = picx; clip.y = picy; clip.w = width; clip.h = height; apply_surface( x, y, sprites, buffer1, &clip ); } int getobject(int row1, int column1, int objnum){ if (row1 == 1 && objnum > numobjects){ object[objnum].picy = 0; switch(column1){ case 1: skiier.picx = 0; skiier.width = 31; skiier.height = 23; break; case 2: skiier.picx = 32; skiier.width = 32; skiier.height = 25; break; case 3: skiier.picx = 65; skiier.width = 23; skiier.height = 26; break; case 4: skiier.picx = 89; skiier.width = 23; skiier.height = 26; break; case 5: skiier.picx = 113; skiier.width = 30; skiier.height = 31; break; case 6: skiier.picx = 144; skiier.width = 32; skiier.height = 32; break; case 7: skiier.picx = 177; skiier.width = 29; skiier.height = 32; break; case 8: skiier.picx = 207; skiier.width = 15; skiier.height = 32; break; case 9: skiier.picx = 223; skiier.width = 22; skiier.height = 28; break; case 10: skiier.picx = 246; skiier.width = 22; skiier.height = 28; break; case 11: skiier.picx = 269; skiier.width = 16; skiier.height = 31; break; case 12: skiier.picx = 286; skiier.width = 16; skiier.height = 31; break; case 13: skiier.picx = 303; skiier.width = 31; skiier.height = 24; break; } } else if (row1 == 2){ monster[objnum].picy = 32; switch(column1){ case 1: monster[objnum].picx = 0; monster[objnum].width = 30; monster[objnum].height = 38; break; case 2: monster[objnum].picx = 31; monster[objnum].width = 30; monster[objnum].height = 38; break; case 3: monster[objnum].picx = 62; monster[objnum].width = 28; monster[objnum].height = 42; break; case 4: monster[objnum].picx = 91; monster[objnum].width = 32; monster[objnum].height = 40; break; case 5: monster[objnum].picx = 124; monster[objnum].width = 25; monster[objnum].height = 40; break; case 6: monster[objnum].picx = 150; monster[objnum].width = 25; monster[objnum].height = 40; break; } } else if (row1 == 3){ monster[objnum].picy = 75; switch(column1){ case 1: monster[objnum].picx = 0; monster[objnum].width = 31; monster[objnum].height = 41; break; case 2: monster[objnum].picx = 32; monster[objnum].width = 29; monster[objnum].height = 41; break; case 3: monster[objnum].picx = 62; monster[objnum].width = 29; monster[objnum].height = 41; break; case 4: monster[objnum].picx = 92; monster[objnum].width = 23; monster[objnum].height = 41; break; case 5: monster[objnum].picx = 116; monster[objnum].width = 26; monster[objnum].height = 41; break; } } else if (row1 == 4){ object[objnum].picy = 117; switch(column1){ case 1: object[objnum].picx = 0; object[objnum].width = 22; object[objnum].height = 29; break; case 2: object[objnum].picx = 23; object[objnum].width = 22; object[objnum].height = 29; break; case 3: object[objnum].picx = 46; object[objnum].width = 24; object[objnum].height = 24; break; case 4: object[objnum].picx = 71; object[objnum].width = 20; object[objnum].height = 29; break; case 5: object[objnum].picx = 92; object[objnum].width = 20; object[objnum].height = 29; break; case 6: object[objnum].picx = 113; object[objnum].width = 26; object[objnum].height = 32; break; case 7: object[objnum].picx = 140; object[objnum].width = 26; object[objnum].height = 30; break; case 8: object[objnum].picx = 167; object[objnum].width = 19; object[objnum].height = 19; break; case 9: object[objnum].picx = 187; object[objnum].width = 21; object[objnum].height = 19; break; } } else if (row1 == 5){ object[objnum].picy = 150; switch(column1){ case 1: object[objnum].picx = 0; object[objnum].width = 32; object[objnum].height = 64; break; case 2: object[objnum].picx = 33; object[objnum].width = 28; object[objnum].height = 32; break; case 3: object[objnum].picx = 62; object[objnum].width = 22; object[objnum].height = 26; break; case 4: object[objnum].picx = 85; object[objnum].width = 23; object[objnum].height = 11; break; case 5: object[objnum].picx = 109; object[objnum].width = 16; object[objnum].height = 11; break; case 6: object[objnum].picx = 126; object[objnum].width = 16; object[objnum].height = 4; break; case 7: object[objnum].picx = 143; object[objnum].width = 64; object[objnum].height = 32; break; } } else if (row1 == 6){ object[objnum].picy = 215; switch(column1){ case 1: object[objnum].picx = 0; object[objnum].width = 40; object[objnum].height = 36; break; case 2: object[objnum].picx = 41; object[objnum].width = 40; object[objnum].height = 35; break; case 3: object[objnum].picx = 82; object[objnum].width = 44; object[objnum].height = 36; break; case 4: object[objnum].picx = 127; object[objnum].width = 50; object[objnum].height = 28; break; case 5: object[objnum].picx = 178; object[objnum].width = 50; object[objnum].height = 28; break; case 6: object[objnum].picx = 229; object[objnum].width = 42; object[objnum].height = 26; break; case 7: object[objnum].picx = 272; object[objnum].width = 42; object[objnum].height = 26; break; } } else if (row1 == 7){ object[objnum].picy = 252; switch(column1){ case 1: object[objnum].picx = 0; object[objnum].width = 24; object[objnum].height = 63; break; case 2: object[objnum].picx = 25; object[objnum].width = 32; object[objnum].height = 8; break; case 3: object[objnum].picx = 58; object[objnum].width = 12; object[objnum].height = 24; break; case 4: object[objnum].picx = 71; object[objnum].width = 12; object[objnum].height = 24; break; case 5: object[objnum].picx = 84; object[objnum].width = 12; object[objnum].height = 24; break; case 6: object[objnum].picx = 97; object[objnum].width = 12; object[objnum].height = 24; break; case 7: object[objnum].picx = 110; object[objnum].width = 22; object[objnum].height = 27; break; case 8: object[objnum].picx = 133; object[objnum].width = 22; object[objnum].height = 27; break; } } column1 = 0; row1 = 0; return 0; } void initall(){ srand(time(0)); skiier.x = (screenwidth / 2) - (skiier.width / 2); skiier.y = 50; skiier.action = 0; for(short i = 0;i < numobjects;i++){ object[i].picx = 0; object[i].picy = 0; object[i].height = 0; object[i].width = 0; object[i].x = 0; object[i].y = 0; object[i].type = 0; object[i].movex = 0; object[i].movey = 0; object[i].type = 0; } directionx = 0; directiony = 0; disty = 0; distx = 0; style = 0; timer = 0; skiier.action = 0; height = 0; jumpheight = 0; eatpicnum = 0; monster[1].y = 0; monsteraction = 0; x = screenwidth *.75; y = screenheight / 2 - 20; object[1].picx = 163; object[1].picy = 250; object[1].height = 67; object[1].width = 154; object[1].x = 30; object[1].y = 30; object[1].type = 0; object[2].picx = 222; object[2].picy = 167; object[2].height = 47; object[2].width = 92; object[2].x = 330; object[2].y = 100; object[2].type = 0; getobject(6,1,3); object[3].x = 48; object[3].y = 178; object[3].type = 0; getobject(6,2,4); object[4].x = 205; object[4].y = 177; object[4].type = 0; getobject(6,3,5); object[5].x = 368; object[5].y = 177; object[5].type = 0; getobject(1,4,99); } int getrandom(int min, int max){ int Diff = (max + 1) - min; return (rand() % Diff) + min; } int initobject(int i1){ object[i1].movey = 0; object[i1].movex = 0; switch(getrandom(1,16)){ case 1://tree case 2: case 3: case 4: case 5: case 6: case 7: getobject(5,getrandom(1,3),i1); object[i1].type = 1; break; case 8://rock case 9: getobject(5,getrandom(4,5),i1); object[i1].type = 2; break; case 10://snow getobject(5,7,i1); object[i1].type = 3; break; case 11://snow bump getobject(5,6,i1); object[i1].type = 10; break; case 12://person getobject(4,1,i1); object[i1].type = 4; object[i1].movey = 5; object[i1].movex = 3; break; case 13://snowboarder getobject(4,4,i1); object[i1].type = 5; object[i1].movex = 10; object[i1].movey = 12; break; case 14://dog getobject(4,9,i1); object[i1].type = 7; object[i1].movex = 5; object[i1].movey = 3; break; case 15://ramp case 16: getobject(7,2,i1); object[i1].type = 8; break; } if (object[i1].type != 5){ object[i1].x = getrandom(-100,(480 - object[i1].width) + 100); object[i1].y = getrandom(screenheight,screenheight + 200); object[i1].action = 0; } else if (object[i1].type == 5){ object[i1].x = getrandom(-100,(480 - object[i1].width) + 100); object[i1].y = -80; object[i1].action = 0; } return 0; } int moveobjects(){ for(short i = 0;i < numobjects;i++){ object[i].x -= directionx; object[i].y -= directiony; object[i].x += object[i].movex; object[i].y += object[i].movey; if (object[i].y + object[i].height <= 0 && object[i].type != 5){ initobject(i); } else if ((object[i].y + object[i].height <= -100 || object[i].y >= screenheight + 60) && object[i].type == 5){ initobject(i); } } monster[1].x -= directionx; monster[1].y -= directiony; monster[1].x += monster[1].movex; monster[1].y += monster[1].movey; return 0; } int detectcollisions(){ hitramp = 0; snowbump = 0; for(short i = 0;i < numobjects;i++){ if ((object[i].type == 1) && jumpheight == 0){ if (skiier.x + skiier.width >= object[i].x && skiier.x <= object[i].x + object[i].width && skiier.y + skiier.height >= object[i].y + object[i].height - 20 && skiier.y + skiier.height <= object[i].y + object[i].height - 5 && height == 0 && skiier.action == 0){ if (skiier.action == 0){ jumpheight = -25; skiier.action = 4; style -= 32; } }//ski hit object else if (skiier.x + skiier.width >= object[i].x && skiier.x <= object[i].x + object[i].width && skiier.y + skiier.height >= object[i].y && skiier.y + skiier.height <= object[i].y + object[i].height && height > 0 && height < object[i].height){ skiier.action = 3; if (object[i].picx == 62){ object[i].action = 1; }//burn dry tree }//jump hit object } else if (object[i].type == 2){ if (skiier.x + skiier.width >= object[i].x && skiier.x <= object[i].x + object[i].width && skiier.y + skiier.height >= object[i].y - 5 && skiier.y + skiier.height <= object[i].y + object[i].height + 5){ if (skiier.action == 0){ jumpheight = -25; skiier.action = 4; style -= 32; }//fall from rocks else if(skiier.action != 0 && skiier.action != 4){ skiier.action = 1; jumpheight = 5 + directiony; }//jump rocks } } else if (object[i].type == 5){ if (skiier.x + skiier.width >= object[i].x && skiier.x <= object[i].x + object[i].width && skiier.y + skiier.height <= object[i].y + object[i].height && skiier.y + skiier.height >= object[i].y && height == 0 && skiier.action == 0){ if (skiier.action == 0){ skiier.action = 4; jumpheight = -25; style -= 32; } }//hit snowboarder } else if (object[i].type == 8){ if (skiier.x + skiier.width >= object[i].x && skiier.x <= object[i].x + object[i].width && skiier.y + skiier.height <= object[i].y + object[i].height - 10 && skiier.y + skiier.height >= object[i].y - 10 && height == 0){ skiier.action = 1; hitramp = 1; if (speed == 40){ jumpheight = 25 + directiony; } else{ jumpheight = 40 + directiony; } } }// hit ramp else if (object[i].type == 7){ if (skiier.x + skiier.width >= object[i].x && skiier.x <= object[i].x + object[i].width && skiier.y + skiier.height >= object[i].y && skiier.y + skiier.height <= object[i].y + object[i].height && height == 0){ object[i].action = 1; getobject(4,8,i); style += 5; }//hit dog } else if (object[i].type == 4 && jumpheight == 0){ if (skiier.x + skiier.width >= object[i].x && skiier.x <= object[i].x + object[i].width && skiier.y + skiier.height >= object[i].y + object[i].height - 35 && skiier.y + skiier.height <= object[i].y + object[i].height + 5 && height == 0 && skiier.action == 0){ jumpheight = -20; object[i].action = 3; style -= 32; }//hit person } else if (object[i].type == 3){ if (skiier.x + skiier.width >= object[i].x && skiier.x <= object[i].x + object[i].width && skiier.y + skiier.height >= object[i].y && skiier.y + skiier.height <= object[i].y + object[i].height){ if (height == 0 && skiier.action == 0){ skiier.action = 1; jumpheight = 4; snowbump = 1; } else if (height > 4 && height < 15){ skiier.action = 1; jumpheight = 5 + directiony; } }//hit snow } else if (object[i].type == 10){ if (skiier.x + skiier.width >= object[i].x && skiier.x <= object[i].x + object[i].width && skiier.y + skiier.height <= object[i].y + object[i].height && skiier.y + skiier.height >= object[i].y - 5 && height == 0){ skiier.action = 1; jumpheight = 1 + directiony; } }// hit snow bump } if (skiier.x + skiier.width >= monster[1].x && skiier.x <= monster[1].x + monster[1].width && skiier.y + skiier.height <= monster[1].y + monster[1].height && skiier.y + skiier.height >= monster[1].y + monster[1].height - 10 && height == 0 && monster[1].action != 0){ directionx = 0; directiony = 0; monster[1].movex = 0; monster[1].movey = 0; monsteraction = 4; } return 0; } int jump(){ if (height == 0 && jumpheight == 0){ if (skiier.action == 1){ skiier.action = 0; getobject(1,8,99); directiony = 7; directionx = 0; }//land fine else if(skiier.action != 1 && skiier.action != 0 && skiier.action != 2 && skiier.action != 4){ jumpheight = -25; style -= 32; skiier.y = 50; skiier.action = 4; }//land and fall } if (jumpheight < 0){ jumpheight ++; skiier.y = 50; skiier.action = 4;//fall } if(jumpheight == 0 && skiier.action == 4){ skiier.action = 2; } if (jumpheight > 0){ if (height >= jumpheight){ jumpheight = 0;//end jumping up } else if (height < jumpheight){ height += 2; if (hitramp == 0){ skiier.y -= 5; } else{ skiier.y -= 1; } }//jump up } if (jumpheight == 0 && height > 0){ height -= 2; if (hitramp == 0){ skiier.y += 5; } else{ skiier.y += 1; } }// jump down return 0; } void checkkeys() { } void checkmouse() { SDL_Event event; SDL_PollEvent(&event); if(event.type == SDL_QUIT ) { run = false; } if (monsteraction < 3) { if(event.type == SDL_KEYDOWN && speed < 255 && event.key.keysym.sym == SDLK_DOWN) { speed += 5; } else if(event.type == SDL_KEYUP && speed > 5 && event.key.keysym.sym == SDLK_UP) { speed -= 5; } if(event.type == SDL_MOUSEMOTION) { x = event.button.x; y = event.button.y; } if (skiier.action == 0 && height == 0) { if(x > 240 && y <= 75) { getobject(1,4,99); directionx = 4; directiony = 0; skiier.action = 0; } else if(x <= 240 && y <= 75) { getobject(1,3,99); directionx = -4; directiony = 0; skiier.action = 0; } else if(x > 240 && y <= 130) { getobject(1,4,99); directionx = 0; directiony = 0; skiier.action = 0; } else if(x > 240 && y <= 130) { getobject(1,3,99); directionx = 0; directiony = 0; skiier.action = 0; } else if(x >= 200 && x <= 275 && y >= 130) { getobject(1,8,99); directionx = 0; directiony = 7; skiier.action = 0; } else if(x >= 275 && x < 400 && y >= 160) { getobject(1,12,99); directionx = 5; directiony = 5; skiier.action = 0; } else if(x >= 275 && y > 130) { getobject(1,10,99); directionx = 7; directiony = 3; skiier.action = 0; } else if(x <= 200 && x > 80 && y >= 130) { getobject(1,11,99); directionx = -5; directiony = 5; skiier.action = 0; } else if(x < 200 && y >= 130) { getobject(1,9,99); directionx = -7; directiony = 3; skiier.action = 0; } } if(event.type == SDL_MOUSEBUTTONDOWN && skiier.action == 0){ skiier.action = 1; jumpheight = 5; pushedx = 1; } else if (skiier.action == 1 || skiier.action == 5 || skiier.action == 6){ if(event.type == SDL_MOUSEBUTTONDOWN){ switch(skiier.action){ case 1: skiier.action = 5;//flip1 style += 5; break; case 5: skiier.action = 6;//flip2 style += 7; break; case 6: skiier.action = 1;//flip upright style += 10; break; } pushedx = 1; } } else if(event.type == SDL_MOUSEBUTTONDOWN && skiier.action == 2) { jumpheight = 10; skiier.action = 1; pushedx = 1; } } else { if(event.type == SDL_MOUSEBUTTONDOWN) { initall(); } } } int actions(){ //skiier actions //0 = fine //1 = jumping //2 = on ground //3 = falling from jump //4 = saying ouch from jump //5 = start flip //6 = end flip //8 = half flip when analog is pulled up switch(skiier.action){ case 0: skiier.y = 50; break; case 1: getobject(1,6,99); directionx = 0; if (snowbump == 0){ if (hitramp == 1){ directiony = 20; } else{ directiony = 14; } } else if (snowbump == 1){ directiony = 1; }//go slow for bumping on snow break; case 2: getobject(1,1,99); directionx = 0; directiony = 0; break; case 3: getobject(1,2,99); directionx = 0; if (hitramp == 1){ directiony = 20; }//if hit ramp go faster else{ directiony = 14; } break; case 4: getobject(1,5,99); directionx = 0; directiony = 0; break; case 5: getobject(1,7,99); directionx = 0; directiony = 14; break; case 6: getobject(1,13,99); directionx = 0; directiony = 14; break; case 8: getobject(1,7,99); directiony = 14; break; } for(short i = 0;i < numobjects;i++){ if (object[i].type == 7){ if(object[i].action == 1){ object[i].movex = 0; object[i].movey = 0; getobject(4,8,i); } //hit dog else if(object[i].action == 0){ object[i].movex = 3; getobject(4,9,i); } if (object[i].action == 0){ if (object[i].movey == 3){ object[i].movey = -3; } else if (object[i].movey == -3){ object[i].movey = 3; } } } if (object[i].type == 4){//person goes right or left if (getrandom(1,20) == 8 && object[i].action < 2){ if(object[i].action == 0){ object[i].movex = 4; object[i].movey = 2; object[i].action = 1; getobject(4,1,i); } else if (object[i].action == 1){ object[i].movex = -4; object[i].movey = 2; object[i].action = 0; getobject(4,2,i); } } if (object[i].action == 3){ object[i].movex = 0; object[i].movey = 0; getobject(4,3,i); } } if (object[i].type == 5){//snowboarder goes right or left if (getrandom(1,12) == 8){ if(object[i].action == 0){ object[i].movex = 10; object[i].action = 1; getobject(4,4,i); } else if (object[i].action == 1){ object[i].movex = -10; object[i].action = 0; getobject(4,5,i); } } } if (object[i].type == 1){//burn dry tree if(object[i].action == 1){ object[i].action = 2; getobject(7,7,i); } else if (object[i].action == 2){ object[i].action = 1; getobject(7,8,i); } } } return 0; } void monsteractions(){ if(monsteraction == 1){ if (monster[1].x < skiier.x){ monster[1].movex = 6; if (monster[1].action < 4){ monster[1].action ++; getobject(2,1,1); }//monster movement left 1 else if(monster[1].action == 5){ monster[1].action = 2; getobject(2,5,1); }//monster movement left 2 } else if (monster[1].x > skiier.x){ monster[1].movex = -6; if (monster[1].action != 0){ monster[1].action = 0; getobject(2,2,1); }//monster movement right 1 else if(monster[1].action != 1){ monster[1].action = 1; getobject(2,6,1); }//monster movement right 2 } if (monster[1].y < skiier.y){ if (speed == 40){ monster[1].movey = 14; }//move monster faster if speed is low else{ monster[1].movey = 6.5; }//move monster slower if speed is high } else if (monster[1].y > skiier.y){ if (speed == 40){ monster[1].movey = -14; }//move monster faster if speed is low else{ monster[1].movey = -6.5; }//move monster slower if speed is high } } else if (disty > 1950 && monsteraction == 0){ if(getrandom(1,500) == 400){ monster[1].y = screenheight + monster[1].height; monster[1].x = skiier.x - 75; monster[1].action = 0; getobject(2,3,1); } if (monsteraction == 0){//If you haven't been eaten if(monster[1].action < 10){ monster[1].action++; getobject(2,4,1); } else if (monster[1].action >= 10 && monster[1].action < 20){ monster[1].action ++; getobject(2,3,1); } else if (monster[1].action == 20){ monster[1].action = 0; }//monster before you get to him if (monster[1].y <= skiier.y - 25){ monsteraction = 1; } } } if (monster[1].y < -500){ monster[1].y = screenheight + 50; monster[1].x = skiier.x + 75; monsteraction = 0; } } int draw(){ clip.x = 0; clip.y = 0; clip.w = screenwidth; clip.h = screenheight; apply_surface( 0, 0, background, buffer1, &clip ); for(short i = 0;i < numobjects;i++) { if (object[i].x > 0 - object[i].width && object[i].x < screenwidth && object[i].y < screenheight) { if (object[i].x +object[i].width > skiier.x && object[i].x < skiier.x + skiier.width && object[i].y + object[i].height > skiier.height && skiblit == false) { if (monsteraction != 4) blitAlphaImageToScreen(skiier.picx,0, skiier.width, skiier.height, sprites, (screenwidth / 2) - (skiier.width / 2), skiier.y + skiier.height); blitAlphaImageToScreen(object[i].picx, object[i].picy, object[i].width, object[i].height, sprites,object[i].x, object[i].y); } else if (object[i].x + object[i].width > skiier.x && object[i].x < skiier.x + skiier.width && object[i].y + object[i].height < skiier.height && skiblit == false) { blitAlphaImageToScreen(object[i].picx, object[i].picy, object[i].width, object[i].height, sprites,object[i].x, object[i].y); if (monsteraction != 4) blitAlphaImageToScreen(skiier.picx,0, skiier.width, skiier.height, sprites, (screenwidth / 2) - (skiier.width / 2), skiier.y + skiier.height); } } } if (monsteraction != 4){//if monster isn't eating person if (disty > 1950){ blitAlphaImageToScreen(monster[1].picx, monster[1].picy, monster[1].width, monster[1].height, sprites, monster[1].x, monster[1].y); if(skiblit == true) { blitAlphaImageToScreen(skiier.picx,0, skiier.width, skiier.height, sprites, (screenwidth / 2) - (skiier.width / 2), skiier.y + skiier.height); } } } else if (monsteraction == 4){ if (eatpicnum < 5){ getobject(3,eatpicnum,1); eatpicnum ++; }//animate eating person else{ if (eatpicnum != 7){ eatpicnum = 7; getobject(2,3,1); } else if(eatpicnum != 8){ eatpicnum = 8; getobject(2,4,1); } checkmouse(); }//after eating person loop this SDL_Delay(speed); } skiblit = false; if( SDL_Flip( buffer1 ) == -1 ) { return 1; } return 0; } //The event structure //The portions of the sprite map to be blitted bool init() { //Initialize all SDL subsystems if( SDL_Init( SDL_INIT_EVERYTHING ) == -1 ) { return false; } //Set up the screen buffer1 = SDL_SetVideoMode(screenwidth, screenheight, SCREEN_BPP, SDL_SWSURFACE ); //If there was in error in setting up the screen if( buffer1 == NULL ) { return false; } //Set the window caption SDL_WM_SetCaption( "Skiclone", NULL ); //If everything initialized fine return true; } void clean_up() { //Free the sprite map SDL_FreeSurface(sprites); SDL_FreeSurface(background); SDL_FreeSurface(buffer1); //Quit SDL SDL_Quit(); } int main( int argc, char* args[] ) { sprites = load_image("sprites.png"); background = load_image("background.png"); if( init() == false ) { return 1; } initall(); for(short i = 6;i < numobjects;i++){ initobject(i); } while(run){ disty += directiony * 0.3; distx += directionx; timer++; jump(); checkkeys(); checkmouse(); actions(); monsteractions(); moveobjects(); detectcollisions(); draw(); SDL_Delay(speed); } clean_up(); return 0; }