Programming Course
Programming Course
INTRODUCTION
INTRODUCTION
INTRODUCTION
INTRODUCTION
INTRODUCTION
Code example:
rect.left,
rect.top,
rect.right,
rect.bottom);
m_RenderTargetPtr->DrawRectangle(d2dRect, m_ColorBrushPtr,
(FLOAT) strokeWidth);
return true;
}
INTRODUCTION
INTRODUCTION
INTRODUCTION
INTRODUCTION
INTRODUCTION
INTRODUCTION
FirstExerc.cpp
GameEngine.cpp
Compile
obj
GameWinMain.cpp
Compile
obj
EXE
Compile
obj
LINK
Libraries
Lib
or
Dll
CODE LAYOUT
CODE LAYOUT
CODE LAYOUT
CODE LAYOUT
CODE LAYOUT
CODE LAYOUT
Methods
CODE LAYOUT
Methods
Variables
CODE LAYOUT
Methods
Variables
CODE LAYOUT
CODE LAYOUT
Source files
CODE LAYOUT
Source files
Header files
CODE LAYOUT
Header files
CODE LAYOUT
Header files
CODE LAYOUT
Header files
CODE LAYOUT
Header files
CODE LAYOUT
Source files
CODE LAYOUT
Source files
CODE LAYOUT
Source files
CODE LAYOUT
Source files
CODE LAYOUT
Header file
CODE LAYOUT
Source file
CREATING A PROJECT
CREATING A PROJECT
CREATING A PROJECT
CREATING A PROJECT
CREATING A PROJECT
Click File
CREATING A PROJECT
Click File
New
CREATING A PROJECT
Click File
New
Project
CREATING A PROJECT
CREATING A PROJECT
Installed Templates
CREATING A PROJECT
Installed Templates
Visual C++
CREATING A PROJECT
Installed Templates
Visual C++
Win32 Project (NOT the Win32 console application)
CREATING A PROJECT
CREATING A PROJECT
CREATING A PROJECT
CREATING A PROJECT
Application setting
CREATING A PROJECT
Application setting
CREATING A PROJECT
Application setting
CREATING A PROJECT
Application setting
CREATING A PROJECT
CREATING A PROJECT
CREATING A PROJECT
CREATING A PROJECT
CREATING A PROJECT
CREATING A PROJECT
CREATING A PROJECT
CREATING A PROJECT
CREATING A PROJECT
Filters
CREATING A PROJECT
Filters
CREATING A PROJECT
Filters
CREATING A PROJECT
CREATING A PROJECT
Engine files
CREATING A PROJECT
Engine files
Resource files
CREATING A PROJECT
Engine files
Resource files
Game files
CREATING A PROJECT
Engine files
Resource files
Game files
CREATING A PROJECT
Engine files
Resource files
Game files
CREATING A PROJECT
Engine files
Resource files
Game files
CREATING A PROJECT
Adding files
CREATING A PROJECT
Adding files
CREATING A PROJECT
Adding files
CREATING A PROJECT
Adding files
CREATING A PROJECT
AbstractGame.cpp
AbstractGame.h
Big.ico
GameEngine.cpp
GameEngine.h
GameWinMain.cpp
GameWinMain.h
Resource.h
Small.ico
X.cpp
X.h
X.rc
CREATING A PROJECT
CREATING A PROJECT
X.rc to resource.rc
CREATING A PROJECT
X.rc to resource.rc
X.cpp to Main.cpp
CREATING A PROJECT
X.rc to resource.rc
X.cpp to Main.cpp
X.h to Main.h
CREATING A PROJECT
CREATING A PROJECT
CREATING A PROJECT
CREATING A PROJECT
CREATING A PROJECT
CREATING A PROJECT
CREATING A PROJECT
CREATING A PROJECT
CREATING A PROJECT
CREATING A PROJECT
CREATING A PROJECT
CREATING A PROJECT
CREATING A PROJECT
Open Main.h
CREATING A PROJECT
Open Main.h
Add your data at the top of the file
CREATING A PROJECT
Open Main.cpp
CREATING A PROJECT
Open Main.cpp
Find the method Main::GameInitialize(HINSTANCE hInstance)
void Main::GameInitialize(HINSTANCE hInstance)
{
// Set the required values
AbstractGame::GameInitialize(hInstance);
GAME_ENGINE->SetTitle("Main - De Breuck Dave - 3DAEGAMEDEV");
GAME_ENGINE->RunGameLoop(false);
// Set the optional values
GAME_ENGINE->SetWidth(640);
GAME_ENGINE->SetHeight(480);
//GAME_ENGINE->SetKeyList(String(WASD") + (TCHAR)VK_SPACE);
}
CREATING A PROJECT
CREATING A PROJECT
CREATING A PROJECT
CREATING A PROJECT
VARIABLES
VARIABLES
What is animation
VARIABLES
What is animation
Still image
VARIABLES
What is animation
Still image
Repeatedly shown
VARIABLES
What is animation
Still image
Repeatedly shown
Small change are made
VARIABLES
VARIABLES
VARIABLES
VARIABLES
VARIABLES
VARIABLES
What is a variable
VARIABLES
What is a variable
Piece of memory
VARIABLES
What is a variable
Piece of memory
Assigned to a name
VARIABLES
What is a variable
Piece of memory
Assigned a name
Value can be stored inside the memory
VARIABLES
Using variables
VARIABLES
Using variables
Write the name of the variable to access the value that is stored inside the memory
VARIABLES
Using variables
Write the name of the variable to access the value that is stored inside the memory
To change the value we use the assignment operator = "
VARIABLES
Example
VARIABLES
VARIABLES
Variable types
VARIABLES
Variable types
Integral numbers
VARIABLES
Variable types
Integral numbers
Decimal numbers
VARIABLES
Variable types
Integral numbers
Decimal numbers
Boolean values
VARIABLES
Variable types
Integral numbers
Decimal numbers
Boolean values
Text
VARIABLES
Variable types
Integral numbers
Decimal numbers
Boolean values
Text
VARIABLES
Variable types
Integral numbers
Decimal numbers
Boolean values
Text
For every kind of data there is a kind of variable also know as type
VARIABLES
Variable types
Integral numbers
Decimal numbers
Boolean values
Text
For every kind of data there is a kind of variable also know as type
Type determines
VARIABLES
Variable types
Integral numbers
Decimal numbers
Boolean values
Text
For every kind of data there is a kind of variable also know as type
Type determines
Value of the variable
What operations can be performed on the value
VARIABLES
VARIABLES
Primitive variables
VARIABLES
Primitive variables
Composite variables
VARIABLES
Primitive variables
Composite variables
Abstract variables
VARIABLES
Primitive variables
VARIABLES
Primitive variables
Integer
VARIABLES
Primitive variables
Integer
Double
VARIABLES
Primitive variables
Integer
Double
Float
VARIABLES
Primitive variables
Integer
Double
Float
Bool
VARIABLES
Primitive variables
Integer
Double
Float
Bool
Char
VARIABLES
Primitive variables
Integer
Double
Float
Bool
Char
VARIABLES
Integers
VARIABLES
Integers
VARIABLES
Integers
VARIABLES
Integers
VARIABLES
Integers
VARIABLES
Float
VARIABLES
Float
VARIABLES
Float
VARIABLES
Float
VARIABLES
Float
VARIABLES
Double
VARIABLES
Double
VARIABLES
Double
VARIABLES
Double
VARIABLES
Double
VARIABLES
TCHAR
VARIABLES
TCHAR
VARIABLES
TCHAR
VARIABLES
TCHAR
VARIABLES
TCHAR
VARIABLES
VARIABLES
String
VARIABLES
String
Sequence of characters
VARIABLES
String
Sequence of characters
Define it with double quotes ( string sequence_characters = "aaaa"; )
SELECTIONS
SELECTIONS
SELECTIONS
Example
Adventure game
SELECTIONS
There are 3 types of conditions
SELECTIONS
There are 3 types of conditions
If-else
SELECTIONS
There are 3 types of conditions
If-else
Switch-case
SELECTIONS
There are 3 types of conditions
If-else
Switch-case
?:
SELECTIONS
If-else
SELECTIONS
If-else
SELECTIONS
If-else
SELECTIONS
If-else
SELECTIONS
If-else
SELECTIONS
Rational expression
<
>
<=
>=
==
!=
SELECTIONS
Logical expression
&&
||
!
SELECTIONS
m_Year = 2014
SELECTIONS
SELECTIONS
SELECTIONS
SELECTIONS
SELECTIONS
SELECTIONS
SELECTIONS
m_Year = 2014
SELECTIONS
true || false
!true
SELECTIONS
true || false
!true
SELECTIONS
true || false
!true
SELECTIONS
true || false
!true
SELECTIONS
true || false
!true
SELECTIONS
true || false
!true
SELECTIONS
SELECTIONS
SELECTIONS
SELECTIONS
false
SELECTIONS
The syntax
SELECTIONS
The syntax
SELECTIONS
The syntax
int m_number = 5;
if (m_number == 5)
m_number += 1;
SELECTIONS
The syntax
int m_number = 5;
if (m_number == 5)
m_number += 1;
SELECTIONS
The syntax
int m_number = 5;
if (m_number == 5)
m_number += 1;
int m_number = 6;
if (m_number == 6)
{
m_number += 5;
m_number += 10;
}
SELECTIONS
Watch out!
SELECTIONS
Watch out!
SELECTIONS
If-else syntax
if (condition1)
{
// execute if condition1 == true
}
else if (condition2)
{
// execute if condition1 == false
// and
// execute if condition2 == true
}
else
{
// execute if condition1 == false
// and
// execute if condition2 == false
}
METHODS
METHODS
Used to split up a problem (for which the program is the solution) into sub-problems
METHODS
METHODS
METHODS
METHODS
Example
void Demo::DrawStaff()
{
GAME_ENGINE->DrawLine(20, 20, 200, 20);
METHODS
Syntax of a method
METHODS
Syntax of a method
Return value
METHODS
Syntax of a method
Return value
Scope (Demo::)
METHODS
Syntax of a method
Return value
Scope (Demo::)
Name
METHODS
Syntax of a method
Return value
Scope (Demo::)
Name
()
METHODS
Syntax of a method
Return value
Scope (Demo::)
Name
()
METHODS
Example
Return value
Scope
Name
Body
()
METHODS
Example
Return value
Scope
Name
()
Body
Parameter
METHODS
METHODS
METHODS
METHODS
METHODS
METHODS
METHODS
void Demo::DrawStaff(int x, int
{
GAME_ENGINE->DrawLine(x,
GAME_ENGINE->DrawLine(x,
GAME_ENGINE->DrawLine(x,
GAME_ENGINE->DrawLine(x,
GAME_ENGINE->DrawLine(x,
}
y)
y, x + 200, y);
y + 8, x + 200, y + 8);
y + 16, x + 200, y + 16);
y + 24, x + 200, y + 24);
y + 32, x + 200, y + 32);
METHODS
A methods return value
METHODS
A methods return value
METHODS
A methods return value
METHODS
A methods return value
METHODS
void Demo::GamePaint(RECT rect)
{
int sum = 0;
sum = CalculateSum(1, 2);
}
int Demo::CalculateSum(int number1, int number2)
{
int result = number1 + number2;
return result;
}
METHODS
void Demo::GamePaint(RECT rect)
{
int sum = 0;
sum = CalculateSum(1, 2);
}
int Demo::CalculateSum(int number1, int number2)
{
int result = number1 + number2;
return result;
}
METHODS
void Demo::GamePaint(RECT rect)
{
int sum = 0;
sum = CalculateSum(20, 40);
}
int Demo::CalculateSum(int number1, int number2)
{
int result = number1 + number2;
return result;
}
METHODS
void Demo::GamePaint(RECT rect)
{
int sum = 0;
sum = CalculateSum(20, 40);
}
int Demo::CalculateSum(int number1, int number2)
{
int result = number1 + number2;
return result;
}
Int number1 = 20
Int number2 = 40
METHODS
void Demo::GamePaint(RECT rect)
{
int sum = 0;
sum = CalculateSum(20, 40);
}
int Demo::CalculateSum(int number1, int number2)
{
int result = number1 + number2;
return result;
}
Int number1 = 20
Int number2 = 40
Result = 60
METHODS
void Demo::GamePaint(RECT rect)
{
int sum = 0;
sum = CalculateSum(20, 40);
}
int Demo::CalculateSum(int number1, int number2)
{
int result = number1 + number2;
return result;
}
Int number1 = 20
Int number2 = 40
Result = 60
METHODS
void Demo::GamePaint(RECT rect)
{
int sum = 0;
sum = 60;
}
int Demo::CalculateSum(int number1, int number2)
{
int result = number1 + number2;
return result;
}
METHODS
Exercise
METHODS
Exercise
Calculate(10, 10); = ?
Calculate(5, 1); =
Calculate(20, 8); =
Calculate(Calculate(6,3), 10); = ?
Calculate(10, 10) + Calculate(80, 5); = ?
Calculate(Calculate(4 , 5), Calculate( 8 , 3)); = ?
METHODS
Exercise
Calculate(10, 10); = 40
Calculate(5, 1); =
Calculate(20, 8); =
Calculate(Calculate(6,3), 10); = ?
Calculate(10, 10) + Calculate(80, 5); = ?
Calculate(Calculate(4 , 5), Calculate( 8 , 3)); = ?
METHODS
Exercise
Calculate(10, 10); = 40
Calculate(5, 1); =
12
Calculate(20, 8); =
Calculate(Calculate(6,3), 10); = ?
Calculate(10, 10) + Calculate(80, 5); = ?
Calculate(Calculate(4 , 5), Calculate( 8 , 3)); = ?
METHODS
Exercise
Calculate(10, 10); = 40
Calculate(5, 1); =
12
Calculate(20, 8); =
56
Calculate(Calculate(6,3), 10); = ?
Calculate(10, 10) + Calculate(80, 5); = ?
Calculate(Calculate(4 , 5), Calculate( 8 , 3)); = ?
METHODS
Exercise
Calculate(10, 10); = 40
Calculate(5, 1); =
12
Calculate(20, 8); =
56
Calculate(Calculate(6,3), 10); = 56
Calculate(10, 10) + Calculate(80, 5); = ?
Calculate(Calculate(4 , 5), Calculate( 8 , 3)); = ?
METHODS
Exercise
Calculate(10, 10); = 40
Calculate(5, 1); =
12
Calculate(20, 8); =
56
Calculate(Calculate(6,3), 10); = 56
Calculate(10, 10) + Calculate(80, 5); = 210
Calculate(Calculate(4 , 5), Calculate( 8 , 3)); = ?
METHODS
Exercise
Calculate(10, 10); = 40
Calculate(5, 1); =
12
Calculate(20, 8); =
56
Calculate(Calculate(6,3), 10); = 56
Calculate(10, 10) + Calculate(80, 5); = 210
Calculate(Calculate(4 , 5), Calculate( 8 , 3)); = 80
METHODS
METHODS
Stack
METHODS
Stack
Very fast
METHODS
Stack
Very fast
Low memory size (1MB)
METHODS
Stack
Very fast
Low memory size (1MB)
Heap
METHODS
Stack
Very fast
Low memory size (1MB)
Heap
Slower
METHODS
Stack
Very fast
Low memory size (1MB)
Heap
Slower
Large memory size ( present day 5GB/6GB )
METHODS
Stack
METHODS
Stack
METHODS
Stack
METHODS
Stack
METHODS
Stack
METHODS
Heap
METHODS
Heap
METHODS
Heap
METHODS
A constructor
A constructor
A destructor
Access specifiers
Access specifiers
Access specifiers
Access specifiers
Pointers
Pointers
Created with *
Pointers
Created with *
Dont forget to also initialize pointers -> m_txtNamePtr(nullptr)
Pointers
Created with *
Dont forget to also initialize pointers -> m_txtNamePtr(nullptr)
TextBox* m_txtNamePtr
Destruction of an object
Destruction of an object
Destruction of an object
Destruction of an object
Destruction of an object
Destruction of an object
Main::~Main()
{
delete m_txtNamePtr;
}
Destruction of an object
Destruction of an object
Always delete your object inside the class you created it to avoid deleting an object
twice
Destruction of an object
This is the error that will occur when delete is called on an object that is already
deleted
Add 2 existing items Y.cpp and Y.h and rename them to Ball.cpp and Ball.h
Replace the Y with Ball in Ball.cpp and Ball.h (CTRL + H)