Code:
#include "Globals.h"
void Main_Loop()
{
if (KEYDOWN(VK_ESCAPE))
{
SendMessage(GameHandle, WM_CLOSE, 0,0);
}
weaponendtime=(GetTickCount()-weaponstarttime);
if ((int)weaponendtime>weaponspeed)
{
if (KEYDOWN(VK_RIGHT))
{
if (ShipX<757)
{
Clear_Ship();
ShipX+=5;
Draw_Ship();
//Sleep(1);
}
}
if (KEYDOWN(VK_LEFT))
{
if (ShipX>3)
{
Clear_Ship();
ShipX-=5;
Draw_Ship();
//Sleep(1);
}
}
weaponstarttime=GetTickCount();
}
endtime=(GetTickCount()-starttime);
if ((int)endtime>movespeed)
{
Move_Enemies();
starttime=GetTickCount();
}
}
void Initialise()
{
int xpos,ypos,xsub,ysub;
Draw_Ship();
for (xpos=100, xsub=0; xpos<=640; xpos+=60, xsub++)
{
for (ypos=280, ysub=0; ypos<=400; ypos+=60, ysub++)
{
Enemies[xsub][ysub].x=xpos;
Enemies[xsub][ysub].y=ypos;
Enemies[xsub][ysub].alive=1;
Draw_Enemies(xpos,ypos);
}
}
starttime=GetTickCount();
for (xpos=100, xsub=0; xpos<=640; xpos+=60, xsub++)
{
for (ypos=460, ysub=0; ypos<=520; ypos+=60, ysub++)
{
Enemies2[xsub][ysub].x=xpos;
Enemies2[xsub][ysub].y=ypos;
Enemies2[xsub][ysub].alive=1;
Draw_Enemies2(xpos,ypos);
}
}
/*for (xpos=260; xpos<=530; xpos+=30)
{
for (ypos=116; ypos<=148; ypos+=30)
{
Draw_Enemies3(xpos,ypos);
}
}*/
}
void Draw_Ship()
{
HDC hdc;
HBRUSH hbrush;
hdc = GetDC(GameHandle);
RECT rect; // used to hold rect info
hbrush = CreateSolidBrush(RGB(255,0,0));
rect.left = ShipX+13;
rect.top = ShipY+3;
rect.right = ShipX+26;
rect.bottom = ShipY+26;
FillRect(hdc,&rect,hbrush);
DeleteObject(hbrush);
hbrush = CreateSolidBrush(RGB(0,0,255));
rect.left = ShipX+3;
rect.top = ShipY+10;
rect.right = ShipX+13;
rect.bottom = ShipY+16;
FillRect(hdc,&rect,hbrush);
DeleteObject(hbrush);
hbrush = CreateSolidBrush(RGB(0,0,255));
rect.left = ShipX+26;
rect.top = ShipY+10;
rect.right = ShipX+36;
rect.bottom = ShipY+16;
FillRect(hdc,&rect,hbrush);
DeleteObject(hbrush);
hbrush = CreateSolidBrush(RGB(0,255,0));
rect.left = ShipX-1;
rect.top = ShipY+5;
rect.right = ShipX+3;
rect.bottom = ShipY+22;
FillRect(hdc,&rect,hbrush);
DeleteObject(hbrush);
hbrush = CreateSolidBrush(RGB(0,255,0));
rect.left = ShipX+36;
rect.top = ShipY+5;
rect.right = ShipX+40;
rect.bottom = ShipY+22;
FillRect(hdc,&rect,hbrush);
DeleteObject(hbrush);
hbrush = CreateSolidBrush(RGB(255,255,0));
rect.left = ShipX+16;
rect.top = ShipY;
rect.right = ShipX+23;
rect.bottom = ShipY+3;
FillRect(hdc,&rect,hbrush);
DeleteObject(hbrush);
ReleaseDC(GameHandle,hdc);
}
void Clear_Ship()
{
RECT BlankRect; // used to write a blank
HDC hdc;
HBRUSH hbrush;
hdc = GetDC(GameHandle);
hbrush = CreateSolidBrush(RGB(0,0,0));
BlankRect.left = ShipX-5;
BlankRect.top = ShipY;
BlankRect.right = ShipX+40;
BlankRect.bottom = ShipY+26;
FillRect(hdc,&BlankRect,hbrush);
}
void Draw_Enemies(int x, int y)
{
HDC hdc;
HBRUSH hbrush;
hdc = GetDC(GameHandle);
RECT rect; // used to hold rect info
hbrush = CreateSolidBrush(RGB(0,100,255));
rect.left = x+5;
rect.top = y+3;
rect.right = x+25;
rect.bottom = y+20;
FillRect(hdc,&rect,hbrush);
rect.left = x+7;
rect.top = y+20;
rect.right = x+23;
rect.bottom = y+25;
FillRect(hdc,&rect,hbrush);
rect.left = x;
rect.top = y+5;
rect.right = x+5;
rect.bottom = y+7;
FillRect(hdc,&rect,hbrush);
rect.left = x+25;
rect.top = y+5;
rect.right = x+30;
rect.bottom = y+7;
FillRect(hdc,&rect,hbrush);
rect.left = x;
rect.top = y;
rect.right = x+2;
rect.bottom = y+5;
FillRect(hdc,&rect,hbrush);
rect.left = x+28;
rect.top = y;
rect.right = x+30;
rect.bottom = y+5;
FillRect(hdc,&rect,hbrush);
rect.left = x+12;
rect.top = y+25;
rect.right = x+18;
rect.bottom = y+30;
FillRect(hdc,&rect,hbrush);
DeleteObject(hbrush);
hbrush = CreateSolidBrush(RGB(255,255,255));
rect.left = x+8;
rect.top = y+7;
rect.right = x+12;
rect.bottom = y+10;
FillRect(hdc,&rect,hbrush);
rect.left = x+18;
rect.top = y+7;
rect.right = x+22;
rect.bottom = y+10;
FillRect(hdc,&rect,hbrush);
DeleteObject(hbrush);
ReleaseDC(GameHandle,hdc);
}
void Draw_Enemies2(int x, int y)
{
HDC hdc;
HBRUSH hbrush;
hdc = GetDC(GameHandle);
RECT rect; // used to hold rect info
hbrush = CreateSolidBrush(RGB(255,0,50));
rect.left = x+5;
rect.top = y+3;
rect.right = x+25;
rect.bottom = y+20;
FillRect(hdc,&rect,hbrush);
rect.left = x+7;
rect.top = y+20;
rect.right = x+23;
rect.bottom = y+25;
FillRect(hdc,&rect,hbrush);
rect.left = x;
rect.top = y+5;
rect.right = x+5;
rect.bottom = y+7;
FillRect(hdc,&rect,hbrush);
rect.left = x+25;
rect.top = y+5;
rect.right = x+30;
rect.bottom = y+7;
FillRect(hdc,&rect,hbrush);
rect.left = x;
rect.top = y;
rect.right = x+2;
rect.bottom = y+5;
FillRect(hdc,&rect,hbrush);
rect.left = x+28;
rect.top = y;
rect.right = x+30;
rect.bottom = y+5;
FillRect(hdc,&rect,hbrush);
rect.left = x+12;
rect.top = y+25;
rect.right = x+18;
rect.bottom = y+30;
FillRect(hdc,&rect,hbrush);
DeleteObject(hbrush);
hbrush = CreateSolidBrush(RGB(255,255,255));
rect.left = x+8;
rect.top = y+7;
rect.right = x+12;
rect.bottom = y+10;
FillRect(hdc,&rect,hbrush);
rect.left = x+18;
rect.top = y+7;
rect.right = x+22;
rect.bottom = y+10;
FillRect(hdc,&rect,hbrush);
DeleteObject(hbrush);
ReleaseDC(GameHandle,hdc);
}
/*void Draw_Enemies3(int x, int y)
{
HDC hdc;
HBRUSH hbrush;
hdc = GetDC(GameHandle);
hbrush = CreateSolidBrush (RGB(0,200,0));
SelectObject(hdc,hbrush);
int num_points=11;
POINT point_list[11];
point_list[0].x=x;
point_list[0].y=y+2;
point_list[1].x=x+5;
point_list[1].y=y+2;
point_list[2].x=x+5;
point_list[2].y=y;
point_list[3].x=x+7;
point_list[3].y=y;
point_list[4].x=x+7;
point_list[4].y=y+2;
point_list[5].x=x+13;
point_list[5].y=y+2;
point_list[6].x=x+13;
point_list[6].y=y;
point_list[7].x=x+15;
point_list[7].y=y;
point_list[8].x=x+15;
point_list[8].y=y+2;
point_list[9].x=x+20;
point_list[9].y=y+2;
point_list[10].x=x+10;
point_list[10].y=y+22;
Polygon(hdc,point_list,num_points); //Main body of the enemies
DeleteObject(hbrush);
}*/
void Clear_Enemies(int x, int y)
{
RECT BlankRect; //used to write a blank
HDC hdc;
HBRUSH hbrush;
hdc = GetDC(GameHandle);
hbrush = CreateSolidBrush(RGB(0,0,0));
BlankRect.left = x;
BlankRect.top = y;
BlankRect.right = x+30;
BlankRect.bottom = y+30;
FillRect(hdc,&BlankRect,hbrush);
DeleteObject(hbrush);
ReleaseDC(GameHandle,hdc);
}
void Move_Enemies()
{
HDC hdc;
hdc = GetDC(GameHandle);
if (direction=='L')
{
trackx-=pixelmove;
}
else
{
trackx+=pixelmove;
}
for (int enemyx=0; enemyx<10; enemyx++)
{
for (int enemyy=0; enemyy<5; enemyy++)
{
if (Enemies[enemyx][enemyy].alive==1)
{
Clear_Enemies(Enemies[enemyx][enemyy].x,
Enemies[enemyx][enemyy].y);
if (direction=='L')
{
Enemies[enemyx][enemyy].x-=pixelmove;
}
else
{
Enemies[enemyx][enemyy].x+=pixelmove;
}
Draw_Enemies(Enemies[enemyx][enemyy].x, Enemies[enemyx][enemyy].y);
}
}
}
if (direction=='L')
{
for (int pos=100; pos<600; pos++)
{
if (GetPixel(hdc,5,pos)==RGB(255,0,0))
{
direction='R';
}
}
}
if (direction=='R')
{
for (int pos=100; pos<600; pos++)
{
if (GetPixel(hdc,790,pos)==RGB(255,0,0))
{
direction='L';
}
}
}
ReleaseDC(GameHandle,hdc);
}
#include "Globals.h"
HWND GameHandle;
int ShipX=380, ShipY=570;
int weaponspeed=1;
int enemyx=50, enemyy=250;
int movespeed=300, trackx=50, tracky=250, pixelmove=6;
char direction='L';
ENEMY Enemies[10][3];
ENEMY2 Enemies2[10][1];
DWORD weaponstarttime, weaponendtime;
DWORD starttime, endtime;
#pragma once
#define WIN32_LEAN_AND_MEAN // Compile only necessary elements
#include <windows.h> // include all the windows headers
#include <stdlib.h>
#include <stdio.h>
// defines for windows
#define WINDOW_CLASS_NAME "WINCLASS1"
#define TITLE "Space_Engagement"
#define WINDOW_WIDTH 808 // Need these settings to give 800x600 ex border
#define WINDOW_HEIGHT 634
// Macros
#define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
#define KEYUP(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)
// Structures
struct ENEMY
{
int x;
int y;
int alive; // 1=alive, 0=dead;
}
;
extern ENEMY Enemies[10][3];
extern ENEMY2 Enemies2[10][1];
//Globals
extern int ShipX, ShipY;
extern HWND GameHandle;
extern DWORD weaponstarttime, weaponendtime;
extern int weaponspeed;
extern int enemyx, enemyy;
extern DWORD endtime, starttime;
// Function Prototypes ////////////////////////////////
void Main_Loop();
void Draw_Ship();
void Initialise();
void Clear_Ship();
void Draw_Enemies(int x, int y);
void Draw_Enemies2(int x, int y);
/*void Draw_Enemies3(int x, int y);*/
void Clear_Enemies(int x, int y);
extern int movespeed, trackx, tracky, pixelmove;
extern char direction;
void Move_Enemies();
Can anyone see where I am going wrong?