Jump to content
  • Advertisement
Sign in to follow this  
kclemens

Compiling

This topic is 4610 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

When I try to compile this Tetris game I get: --------------------Configuration: falling - Win32 Debug-------------------- Compiling... falling.cpp c:\documents and settings\kclemens\desktop\falling.cpp(1) : error C2501: 'FBS' : missing storage-class or type specifiers c:\documents and settings\kclemens\desktop\falling.cpp(1) : error C2065: 'Falling' : undeclared identifier c:\documents and settings\kclemens\desktop\falling.cpp(1) : error C2440: 'initializing' : cannot convert from 'int' to 'int *' Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast c:\documents and settings\kclemens\desktop\falling.cpp(1) : error C2146: syntax error : missing ';' before identifier 'Block' c:\documents and settings\kclemens\desktop\falling.cpp(1) : warning C4138: '*/' found outside of comment c:\documents and settings\kclemens\desktop\falling.cpp(1) : error C2146: syntax error : missing ';' before identifier 'Game' c:\documents and settings\kclemens\desktop\falling.cpp(1) : error C2501: 'Block' : missing storage-class or type specifiers c:\documents and settings\kclemens\desktop\falling.cpp(1) : fatal error C1004: unexpected end of file found Error executing cl.exe. falling.obj - 7 error(s), 1 warning(s) I read the other post, and the guy said to change from Unicode to Multi Language something. How do I go about changing from Unicode? Thanks, Kclemens

Share this post


Link to post
Share on other sites
Advertisement
It looks to me as though that is not your problem.

First of all it looks like you have missed including a header file, which has some class definitions in it.
The third error I think you are passing an int to a function rather than a pointer to an int.
You are using */ without using /* before it.
Lastly I think you have missed a }.

Though it would be much easier to help if you posted the code.

Share this post


Link to post
Share on other sites
/* FBS = Falling Block Game */

#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <stdlib.h>
#include "bitmapobject.h"

#define WINDOWCLASS "FallingBlockGame"
#define WINDOWTITLE "Falling Block Game"

const int TILESIZE = 16; // Size of one tile
const int MAPWIDTH = 10; //
const int MAPHEIGHT = 30; //
const int GREYAREA = 8; // Side bar

enum color {NODRAW,BLACK,GREY,BLUE,RED,GREEN,YELLOW,WHITE,STEEL,PURPLE};

bool GameInit(); // Game initialization function
void GameLoop(); // Where the game actually takes place
void GameDone(); // Clean up!
void DrawTile(int x, int y, int tile); // Coordinates & tile type
void DrawMap(); // Draw the whole map.. render function, basically
void NewBlock(); // Create a new block!
void RotateBlock(); // Rotate a block.. if you can!
void Move(int x, int y); // Coordinates to move.
int CollisionTest(int nx, int ny); // Test collision of blocks
void RemoveRow(int row); // Remove a row.. that would be the 'x'.
void NewGame(); // Make a new game!

HINSTANCE hInstMain=NULL; // Main app handle
HWND hWndMain=NULL; // Main window handle

int Map[MAPWIDTH][MAPHEIGHT+1]; //the game map!

struct Piece {
int size[4][4];
int x;
int y;
};

Piece sPrePiece; // Preview piece.
Piece sPiece; // The 's' prefixes indicate this is a 'structure'

DWORD start_time; // Used in timing
bool GAMESTARTED = false; // Used by NewBlock()

BitMapObject bmoMap; // Map for the program
BitMapObject bmoBlocks; // Block images

LRESULT CALLBACK TheWindowProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
//which message did we get?
switch(uMsg) {
case WM_KEYDOWN: {
if(wParam==VK_ESCAPE) { //check for escape key
DestroyWindow(hWndMain);
return(0);//handled message
}
else if(wParam==VK_DOWN) { //check for down arrow key
Move(0,1);
return(0);//handled message
}
else if(wParam==VK_UP) { //check for up arrow key
RotateBlock();
return(0);//handled message
}
else if(wParam==VK_LEFT) { //check for left arrow key
Move(-1,0);
return(0);//handled message
}
else if(wParam==VK_RIGHT) { //check for right arrow key
Move(1,0);
return(0);//handled message
}
} break;
case WM_DESTROY: { //the window is being destroyed
//tell the application we are quitting
PostQuitMessage(0);
//handled message, so return 0
return(0);
} break;
case WM_PAINT: { //the window needs repainting
//a variable needed for painting information
PAINTSTRUCT ps;
//start painting
HDC hdc=BeginPaint(hwnd,&ps);
//redraw the map
BitBlt(hdc,0,0,TILESIZE*MAPWIDTH+TILESIZE*GREY,TILESIZE*MAPHEIGHT,bmoMap,0,0,SRCCOPY);
//end painting
EndPaint(hwnd,&ps);

//handled message, so return 0
return(0);
}break;
}

//pass along any other message to default message handler
return(DefWindowProc(hwnd,uMsg,wParam,lParam));
}

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
//assign instance to global variable
hInstMain=hInstance;

//create window class
WNDCLASSEX wcx;

//set the size of the structure
wcx.cbSize=sizeof(WNDCLASSEX);

//class style
wcx.style = CS_OWNDC | CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;

//window procedure
wcx.lpfnWndProc=TheWindowProc;

//class extra
wcx.cbClsExtra=0;

//window extra
wcx.cbWndExtra=0;

//application handle
wcx.hInstance=hInstMain;

//icon
wcx.hIcon=LoadIcon(NULL,IDI_APPLICATION);

//cursor
wcx.hCursor=LoadCursor(NULL,IDC_ARROW);

//background color
wcx.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);

//menu
wcx.lpszMenuName=NULL;

//class name
wcx.lpszClassName=WINDOWCLASS;

//small icon
wcx.hIconSm=NULL;

//register the window class, return 0 if not successful
if(!RegisterClassEx(&wcx)) return(0);

//create main window
hWndMain=CreateWindowEx(0,WINDOWCLASS,WINDOWTITLE, WS_BORDER | WS_SYSMENU | WS_CAPTION| WS_VISIBLE,0,0,320,240,NULL,NULL,hInstMain,NULL);

//error check
if(!hWndMain) return(0);

//if program initialization failed, then return with 0
if(!GameInit()) return(0);

//message structure
MSG msg;

//message pump
for( ; ; )
{
//look for a message
if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
//there is a message

//check that we arent quitting
if(msg.message==WM_QUIT) break;

//translate message
TranslateMessage(&msg);

//dispatch message
DispatchMessage(&msg);
}

//run main game loop
GameLoop();

}

//clean up program data
GameDone();

//return the wparam from the WM_QUIT message
return(msg.wParam);
}

bool GameInit()
{
//set the client area size
RECT rcTemp;
SetRect(&rcTemp,0,0,MAPWIDTH*TILESIZE+TILESIZE*GREY,MAPHEIGHT*TILESIZE);//160x480 client area
AdjustWindowRect(&rcTemp,WS_BORDER | WS_SYSMENU | WS_CAPTION| WS_VISIBLE,FALSE);//adjust the window size based on desired client area
SetWindowPos(hWndMain,NULL,0,0,rcTemp.right-rcTemp.left,rcTemp.bottom-rcTemp.top,SWP_NOMOVE);//set the window width and height

//create map image
HDC hdc=GetDC(hWndMain);
bmoMap.Create(hdc,MAPWIDTH*TILESIZE+TILESIZE*GREY,MAPHEIGHT*TILESIZE);
FillRect(bmoMap,&rcTemp,(HBRUSH)GetStockObject(BLACK_BRUSH));
ReleaseDC(hWndMain,hdc);

bmoBlocks.Load(NULL,"blocks.bmp");
NewGame();

return(true);//return success
}

void GameDone()
{
//clean up code goes here
}

void GameLoop()
{
if( (GetTickCount() - start_time) > 1000)
{
Move(0,1);
start_time=GetTickCount();
}

}

void NewGame()
{
start_time=GetTickCount();
GAMESTARTED=false;
color black = BLACK;
color grey = GREY;

//start out the map
for(int x = 0;x < MAPWIDTH;x++)
{
for(int y = 0;y < MAPHEIGHT+1;y++)
{
if(y == MAPHEIGHT) //makes Y-collision easier.
Map[x][y] = grey;
else
Map[x][y] = black;
}
}
NewBlock();
DrawMap();
}

void DrawTile(int x,int y,int tile)//put a tile
{
//mask first
BitBlt(bmoMap,x*TILESIZE,y*TILESIZE,TILESIZE,TILESIZE,bmoBlocks,tile*TILESIZE,TILESIZE,SRCAND);
//then image
BitBlt(bmoMap,x*TILESIZE,y*TILESIZE,TILESIZE,TILESIZE,bmoBlocks,tile*TILESIZE,0,SRCPAINT);
}

void DrawMap()//draw screen
{
int xmy, ymx;
color grey = GREY, nodraw = NODRAW;

//place the toolbar
for(xmy=MAPWIDTH; xmy< MAPWIDTH+GREYAREA; xmy++)
for(ymx=0; ymx< MAPHEIGHT; ymx++)
DrawTile(xmy, ymx, grey);

//draw preview block
for(xmy=0; xmy<4; xmy++)
for(ymx=0; ymx<4; ymx++)
if(sPrePiece.size[xmy][ymx] != nodraw)
DrawTile(sPrePiece.x+xmy, sPrePiece.y+ymx, sPrePiece.size[xmy][ymx]);

//draw the map
//loop through the positions
for(xmy=0;xmy< MAPWIDTH;xmy++)
for(ymx=0;ymx< MAPHEIGHT;ymx++)
DrawTile(xmy,ymx,Map[xmy][ymx]);

//draw moving block
for(xmy=0; xmy<4; xmy++)
for(ymx=0; ymx<4; ymx++)
if(sPiece.size[xmy][ymx] != nodraw)
DrawTile(sPiece.x+xmy, sPiece.y+ymx, sPiece.size[xmy][ymx]);

//invalidate the window rect
InvalidateRect(hWndMain,NULL,FALSE);
}

void NewBlock()
{
int newblock;
int i,j;
color nodraw = NODRAW, col;
// 0 1 2 3 4 5 6
// X These
// X XX X XX XX XX XX are
// X XX XXX XX XX X X block
// X X X types

//begin game! make generate a block and then one in preview.

srand(GetTickCount());

//initialize the piece to all blank.
for(i=0; i<4; i++)
for(j=0; j<4; j++)
sPiece.size[ i ][j]=nodraw;

sPiece.x=MAPWIDTH/2-2;
sPiece.y=-1;

//let's see if the game's started yet
if(GAMESTARTED == false)
{
//guess not..
//Generate a piece right off.
//From now on, use previous preview block.
GAMESTARTED=true;

newblock=rand()%7;

switch (newblock)
{
case 0: //Tower!
{
col = RED;
sPiece.size[1][0]=col;
sPiece.size[1][1]=col;
sPiece.size[1][2]=col;
sPiece.size[1][3]=col;
sPiece.y=0;
}break;
case 1: //Box!
{
col = BLUE;
sPiece.size[1][1]=col;
sPiece.size[1][2]=col;
sPiece.size[2][1]=col;
sPiece.size[2][2]=col;
}break;
case 2: //Pyramid!
{
col = STEEL;
sPiece.size[1][1]=col;
sPiece.size[0][2]=col;
sPiece.size[1][2]=col;
sPiece.size[2][2]=col;
}break;
case 3://Left Leaner
{
col = YELLOW;
sPiece.size[0][1]=col;
sPiece.size[1][1]=col;
sPiece.size[1][2]=col;
sPiece.size[2][2]=col;
}break;
case 4://Right Leaner
{
col = GREEN;
sPiece.size[2][1]=col;
sPiece.size[1][1]=col;
sPiece.size[1][2]=col;
sPiece.size[0][2]=col;
}break;
case 5://Left Knight
{
col = WHITE;
sPiece.size[1][1]=col;
sPiece.size[2][1]=col;
sPiece.size[2][2]=col;
sPiece.size[2][3]=col;
}break;
case 6://Right Knight
{
col = PURPLE;
sPiece.size[2][1]=col;
sPiece.size[1][1]=col;
sPiece.size[1][2]=col;
sPiece.size[1][3]=col;
}break;
}
}
else
{
for(i=0; i<4; i++)
for(j=0; j<4; j++)
sPiece.size[ i ][j]=sPrePiece.size[ i ][j];

}

newblock=rand()%7;

for(i=0; i<4; i++)
for(j=0; j<4; j++)
sPrePiece.size[ i ][j]=nodraw;

sPrePiece.x=MAPWIDTH+GREY/4;
sPrePiece.y=GREY/4;

switch (newblock)
{
case 0: //Tower!
{
col = RED;
sPrePiece.size[1][0]=col;
sPrePiece.size[1][1]=col;
sPrePiece.size[1][2]=col;
sPrePiece.size[1][3]=col;
}break;
case 1: //Box!
{
col = BLUE;
sPrePiece.size[1][1]=col;
sPrePiece.size[1][2]=col;
sPrePiece.size[2][1]=col;
sPrePiece.size[2][2]=col;
}break;
case 2: //Pyramid!
{
col = STEEL;
sPrePiece.size[1][1]=col;
sPrePiece.size[0][2]=col;
sPrePiece.size[1][2]=col;
sPrePiece.size[2][2]=col;
}break;
case 3://Left Leaner
{
col = YELLOW;
sPrePiece.size[0][1]=col;
sPrePiece.size[1][1]=col;
sPrePiece.size[1][2]=col;
sPrePiece.size[2][2]=col;
}break;
case 4://Right Leaner
{
col = GREEN;
sPrePiece.size[2][1]=col;
sPrePiece.size[1][1]=col;
sPrePiece.size[1][2]=col;
sPrePiece.size[0][2]=col;
}break;
case 5://Left Knight
{
col = WHITE;
sPrePiece.size[1][1]=col;
sPrePiece.size[2][1]=col;
sPrePiece.size[2][2]=col;
sPrePiece.size[2][3]=col;
}break;
case 6://Right Knight
{
col = PURPLE;
sPrePiece.size[2][1]=col;
sPrePiece.size[1][1]=col;
sPrePiece.size[1][2]=col;
sPrePiece.size[1][3]=col;
}break;
}

DrawMap();
}

void RotateBlock()
{
int i, j, temp[4][4];
color black = BLACK, nodraw = NODRAW;

//copy &rotate the piece to the temporary array
for(i=0; i<4; i++)
for(j=0; j<4; j++)
temp[3-j][ i ]=sPiece.size[ i ][j];

//check collision of the temporary array with map borders
for(i=0; i<4; i++)
for(j=0; j<4; j++)
if(temp[ i ][j] != nodraw)
if(sPiece.x + i < 0 || sPiece.x + i > MAPWIDTH - 1 ||
sPiece.y + j < 0 || sPiece.y + j > MAPHEIGHT - 1)
return;

//check collision of the temporary array with the blocks on the map
for(int x=0; x< MAPWIDTH; x++)
for(int y=0; y< MAPHEIGHT; y++)
if(x >= sPiece.x && x < sPiece.x + 4)
if(y >= sPiece.y && y < sPiece.y +4)
if(Map[x][y] != black)
if(temp[x - sPiece.x][y - sPiece.y] != nodraw)
return;

//end collision check

//successful! copy the rotated temporary array to the original piece
for(i=0; i<4; i++)
for(j=0; j<4; j++)
sPiece.size[ i ][j]=temp[ i ][j];

DrawMap();

return;
}

void Move(int x, int y)
{
color nodraw = NODRAW, black = BLACK;
if(CollisionTest(x, y))
{
if(y == 1)
{
if(sPiece.y<1)
{
//you lose! new game.
NewGame();
}
else
{
bool killblock=false;
int i,j;
//new block time! add this one to the list!
for(i=0; i<4; i++)
for(j=0; j<4; j++)
if(sPiece.size[ i ][j] != nodraw)
Map[sPiece.x+i][sPiece.y+j] = sPiece.size[ i ][j];

//check for cleared row!
for(j=0; j< MAPHEIGHT; j++)
{
bool filled=true;
for(i=0; i< MAPWIDTH; i++)
if(Map[ i ][j] == black)
filled=false;

if(filled)
{
RemoveRow(j);
killblock=true;
}
}

if(killblock)
{
for(i=0; i<4; i++)
for(j=0; j<4; j++)
sPiece.size[ i ][j]=nodraw;
}
NewBlock();
}
}

}
else
{
sPiece.x+=x;
sPiece.y+=y;
}

DrawMap();
}

int CollisionTest(int nx, int ny)
{
color nodraw = NODRAW, black = BLACK;
int newx=sPiece.x+nx;
int newy=sPiece.y+ny;

int i,j,x,y;

for(i=0; i< 4; i++)
for(j=0; j< 4; j++)
if(sPiece.size[ i ][j] != nodraw)
if(newx + i < 0 || newx + i > MAPWIDTH - 1 ||
newy + j < 0 || newy + j > MAPHEIGHT - 1)
return 1;

for(x=0; x< MAPWIDTH; x++)
for(y=0; y< MAPHEIGHT; y++)
if(x >= newx && x < newx + 4)
if(y >= newy && y < newy +4)
if(Map[x][y] != black)
if(sPiece.size[x - newx][y - newy] != nodraw)
return 1;
return 0;
}

void RemoveRow(int row)
{
int x,y;
int counter=0;

for(x=0; x< MAPWIDTH; x++)
for(y=row; y>0; y--)
Map[x][y]=Map[x][y-1];

}



[edit: changed code tags to source tags -SiCrane]

Share this post


Link to post
Share on other sites
The error messages suggest that the compiler is trying to compile this line:
/* FBS = Falling Block Game */

Very strange, it shouldn't compile comments ;)

Share this post


Link to post
Share on other sites
------ Rebuild All started: Project: falling1, Configuration: Debug Win32 ------
Deleting intermediate and output files for project 'falling1', configuration 'Debug|Win32'
Compiling...
falling.cpp
c:\c++\falling1\falling1\falling.cpp(592) : fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?
Build log was saved at "file://c:\C++\falling1\falling1\Debug\BuildLog.htm"
falling1 - 1 error(s), 0 warning(s)
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

Share this post


Link to post
Share on other sites
Now I got this...

------ Build started: Project: falling2, Configuration: Debug Win32 ------
Compiling...
falling.cpp
c:\c++\falling2\falling2\falling.cpp(4) : fatal error C1083: Cannot open include file: 'windows.h': No such file or directory
Build log was saved at "file://c:\C++\falling2\falling2\Debug\BuildLog.htm"
falling2 - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!