#include "DarkGDK.h"
// Backround constants
int StartScreen = 1;
int playerSprite = 2;
//functional variables
void playerMovement(int &, int &);
void loadFiles();
void loadMap();
void debug();
// Variables
bool debugEnabled = true;
int playerSpeed = 10;
int walkAnimationSpeed = 150;
int playerX = 512;
int playerY = 350;
int currentDirection = 0;
void playerMovement(int &playerX, int &playerY)
{
// Standard Movement
if(dbLeftKey() && dbDownKey() == 0 && dbUpKey() == 0)
{
if( currentDirection != 1) { dbSetSpriteFrame(playerSprite,5); }
currentDirection = 1;
//dbPlaySprite(playerSprite,5,8,walkAnimationSpeed);
(playerX) -= playerSpeed;
}
if(dbRightKey() && dbDownKey() == 0 && dbUpKey() == 0)
{
if( currentDirection != 2) { dbSetSpriteFrame(playerSprite,9); }
currentDirection = 2;
//dbPlaySprite(playerSprite,9,12,walkAnimationSpeed);
(playerX) += playerSpeed;
}
if(dbUpKey() && dbLeftKey() == 0 && dbRightKey() == 0)
{
if( currentDirection != 3) { dbSetSpriteFrame(playerSprite,13); }
currentDirection = 3;
//dbPlaySprite(playerSprite,13,16,walkAnimationSpeed);
(playerY) -= playerSpeed;
}
if(dbDownKey() && dbLeftKey() == 0 && dbRightKey() == 0)
{
if( currentDirection != 4) { dbSetSpriteFrame(playerSprite,1); }
currentDirection = 4;
//dbPlaySprite(playerSprite,1,4,walkAnimationSpeed);
(playerY) += playerSpeed;
}
// Diagonal Movement
if(dbLeftKey() && dbUpKey())
{
if( currentDirection != 5) { dbSetSpriteFrame(playerSprite,5); }
currentDirection = 5;
//dbPlaySprite(playerSprite,5,8,walkAnimationSpeed);
(playerX) -= playerSpeed;
(playerY) -= playerSpeed;
}
if(dbRightKey() && dbUpKey())
{
if( currentDirection != 6) { dbSetSpriteFrame(playerSprite,9); }
currentDirection = 6;
//dbPlaySprite(playerSprite,9,12,walkAnimationSpeed);
(playerX) += playerSpeed;
(playerY) -= playerSpeed;
}
if(dbLeftKey() && dbDownKey())
{
if( currentDirection != 7) { dbSetSpriteFrame(playerSprite,5); }
currentDirection = 7;
//dbPlaySprite(playerSprite,5,8,walkAnimationSpeed);
(playerX) -= playerSpeed;
(playerY) += playerSpeed;
}
if(dbRightKey() && dbDownKey())
{
if( currentDirection != 8) { dbSetSpriteFrame(playerSprite,9); }
currentDirection = 8;
//dbPlaySprite(playerSprite,9,12,walkAnimationSpeed);
(playerX) += playerSpeed;
(playerY) += playerSpeed;
}
// Check to prevent players leaving screen
if ((playerX) > 1000)
{
dbPasteSprite(playerSprite,1000,(playerY));
(playerX) = 1000;
}
if ((playerX) < 0)
{
dbPasteSprite(playerSprite,0,(playerY));
(playerX) = 0;
}
if ((playerY) < 0)
{
dbPasteSprite(playerSprite,(playerX),0);
(playerY) = 0;
}
if ((playerY) > 690)
{
dbPasteSprite(playerSprite,(playerX),690);
(playerY) = 690;
}
// Update screen position.
dbPasteSprite(playerSprite,playerX,playerY);
}
void loadFiles()
{
// Set Transparency
dbSetImageColorKey ( 0, 0, 0 );
// Load Player Sprite
dbCreateAnimatedSprite(playerSprite,"START\\Sprites\\Player.png",4,4,playerSprite);
dbSprite(playerSprite,playerX,playerY,playerSprite);
dbHideSprite(playerSprite);
}
void loadMap()
{
// load images
dbLoadImage("START\\Backgrounds\\Screen1.jpg",StartScreen);
dbPasteImage(StartScreen,0,0,0);
playerMovement(playerX,playerY);
}
void debug()
{
if (debugEnabled == true)
{
// Debug Display
dbInk(dbRGB(255,0,0),1);
dbText(760,30,"PlayerX : ");
dbText(850,30,dbStr(playerX));
dbText(760,45,"PlayerY : ");
dbText(850,45,dbStr(playerY));
}
}
void DarkGDK ( void )
{
//dbSyncOn ( );
//dbSyncRate ( 60 );
dbDisableEscapeKey ( );
//dbRandomize ( dbTimer ( ) );
// Set up Game Screen
dbSetDisplayMode(1024,736,0);
dbMaximizeWindow ();
dbSetWindowTitle("THE NIGHTMARE BEGINS");
loadFiles();
while ( LoopGDK ( ) )
{
// Load Map
loadMap();
//playerMovement(int *playerX, int *playerY);
// Debug
debug();
if ( dbEscapeKey ( ) )
break;
// Sync Screen
dbSync ( );
}
return;
}
Ok so I'm making a really basic 2d perspective view type game for a class assessment, my setup is in the code but the character sprite movement is really laggy, when i change the speed the sprite moves slightly faster but in a blinking motion(best description in can think of). So is there anywhere i should put dbSync() or is there an other fix, thanks in advance.