• Post category:StudyBullet-16
  • Reading time:16 mins read


Comprehensive beginner’s C++ coding course. A practical, hands-on approach that provides complete training in C++.

What you will learn

Gain coding knowledge

Gain knowledge of the C++ programming language

Gain some experience of the C++ Boost libraries

Gain an introduction to the Qt GUI framework

Absolute beginners course to C++11

Description

Why learn C++ over other languages?

C++ is probably the most important language on the planet; although there are plenty of other languages out there, C++ is often used to implement those other systems, is used in time critical applications since it is very efficient, and is essential in fact for operating systems, device drivers, compilers, networks and other “systems” software since it generates native code. A lot of the software you use on a daily basis probably uses C++ “under the hood” at some level.

This course teaches you the C++ language from beginner to intermediate level. Master all the essential basics from simple statements and functions to templates and object oriented programming. Included in the course is a complete grounding in C++ up to C++11 and some C++14 and 17, the standard library and C++’s container library, the STL and the later sections of the course take the student through a complex project that is a text adventure game engine that reads locations, game objects and game play from external files and also a GUI game file editor that uses the Qt GUI framework. The project shows how to embed a script engine into a C++ application so gameplay can be written external to the game engine.

Why choose this course?

A practical hands on approach is used throughout. Any theory is then illustrated with real code and in several places there are exercises and code challenges to reinforce the student’s absorption of the subject matter.

These are just some of the essential, must have knowledge covered:

· The “philosophy” of C++

· Number systems (binary, octal, decimal and hex)

· Static type systems v dynamic ones

· Basic statements such as variables, loops and selection statements

· Functions

· Classes

· Operator overloading

· Templates – both function and class

· Object orientation and virtual functions – polymorphism in C++

· C++’s way of doing separate compilation

· The C pre-processor


Get Instant Notification of New Courses on our Telegram channel.


· The standard library

· The STL, containers, algorithms and iterators

· Namespaces

· Lambda expressions

· Smart pointers

· An introduction to design patterns (Mediator and Singleton)

The course is taught by Brian Martin BSc, who has spent at least 30 years doing real world software development in a variety of fields such as defence systems, accountancy, property management, telecommunications and legal systems. I have a firm belief that the only way to learn any subject is by actually doing it as you learn, and this is the overall approach taken in the course.

Who this course is for

People who have a good basic knowledge of computers and who wish to learn how to program. It is also suitable for individuals who have some programming experience in other languages. Previous coding experience is not necessary but would be advantageous.

Prerequisites

Basic knowledge of computer operation such as using the internet to download and install software, running applications and copying/deleting files using the file manager.

A Windows or Mac machine.

An internet connection.

MS Office or equivalent (such as Open Office) since a few of the course files for download are in Word or Excel format.

Adobe Acrobat reader (free to download and install) – some files are pdfs.

All software used is free or open source or where commercial there is a free community edition. So providing you have a computer with a network connection there are no barriers to start learning!

English
language

Content

Introduction

Course Overview And Introduction
Installing Visual Studio
Setting Up Visual Studio
The Basics Of Visual Studio

The Core Basics Of C++

C++ v Other Languages
C++ v Other Languages
Number Systems
Basic Statements And Integral Types 1
Basic Statements And Integral Types 2
Float and Double Types
The Enum Type
Pointers
Arrays
References
Pointers, arrays and references
Maths Operators
Increment and Decrement Operators
Maths operators and increment and decrement
Comparison Operators
Logical Operators
Comparison and logical operators
Bitwise Operators
Assignment Operators
Selection Statements
While Loops
For Loops
Selection and looping
Functions In Theory
Functions In Practice
Recursive Functions
Template Functions
Classes – Member Variables
Classes – Access Specifiers
Classes – Member Functions
Classes – Constructors And Destructors
Classes – The Copy Constructor
l-Values and r-Values In Depth
Classes – The Move Constructor
Classes – Forward Declared Classes
Classes – Single Inheritance
Classes – Multiple Inheritance
Classes – Pointers To Objects And Virtual Functions
Classes – Pointers To Class Members And Typedefs
Classes – delete, default and static
Classes – Friend Access
Classes
Chaining Statements Together
Casting Part 1
Casting Part 2
Template Classes
Template Specialization And Metaprogramming
Overloadable Operators 1
Overloadable Operators 2
Classes and overloadable operators
Move Assignment Operators
Namespaces
Exceptions
The Pre-Processor
Semi-Colons
Separate Compilation Part 1
Separate Compilation Part 2
Static Libraries
Dynamic Linked Libraries Part 1 – The Library Project
Dynamic Linked Libraries Part 2 – The Test Project

The Standard Library

Introduction
IO Streams – cin and cout
Streams: Custom Types
IO Manipulators
Introduction To The STL
STL vector
STL list
Sequence Containers
STL Associative Containers – Tree Structure
STL Associative Containers – Map
STL Associative Containers – Set
STL Associative Containers – Search Efficiency
STL Associative Containers – Erase
Associative containers
STL stack
STL queue
STL deque
STL array
STL Algorithms
Functors And Lambda Expressions
find And find_if
for_each
count And count_if
copy And copy_if
transform
replace And replace_if
remove And remove_if
sort
min And max Algorithms
Custom Algorithms
Smart Pointers
Standard Library – Miscellaneous

Extra Libraries And Software

Overview
Boost
ChaiScript
Qt
Property Sheets
Library Tests
Doxygen

Basics Of The Adventure Game Engine

Project Specification And Design
The Location Class
The GameMap Class
The CommandProcessor Class
The GameEngine Class
Tying It All Together With Test Data
Generating Doxygen Documentation

Pickups And NPCs

Alterations To The defs.h Header
The GameObject Class
The Pickup And NPC Classes
The Inventory Class
Alterations To The Location Class
Alterations To The CommandProcessor Class
Alterations To The GameMap Class
Alterations To The GameEngine Class
Alterations To AdventureGameEngine.cpp
Tests And Bug Fixes
Exercise – Fix When Player Just Types Return Bug
Generate Doxygen Documentation
Solution To Bug Hunting Exercise

Gameplay Scripts

The Script Engine API
Additions To The GameEngine Class – Declarations
Additions To The Inventory Class
Additions To The GameMap Class
Additions To The Location Class
Additions To The CommandProcessor Class
Additions To The GameObject Class
Additions To The GameEngine Class – Definitions
Additions To The Script API
Registration Of The Script Engine API Functions
Write Test Code
Do Tests
Generate Doxygen Documentation

Serialization

Serialization Of The CommandProcessor Class
Serialization Of The GameObject Class
Serialization Of The NPC And Pickup Classes
Serialization Of The Inventory Class
Serialization Of The Location Class
Serialization Of The GameMap Class
Serialization Of The GameEngine Class
Alterations To The ScriptAPI
Writing Some Gameplay
Alterations To AdventureGameEngine.cpp
Testing Our Serialization Code
Implementing Saving And Loading Game Progress
Additional Functions Needed For The Game Editor
Challenge – Display Directions Functionality
Generate Doxygen Documentation

The Game File Editor UI

Creating The Qt Project
The Messages Page
The Startup Code Page
The Locations List
The Location Descriptions Page
The Location onEnter And onExit Script Pages
The Location Target Locations Page
The Location Game Objects Page
The Save And Load Page

The Game File Editor Functionality

Saving And Loading The State Of The UI
Setting Up The Signals And Slots
Creation Of The Game Engine Static Library
The Mediator Class
The UtilityFunctions Translation Unit
The MessagesMediator Class
The StartupCodeMediator Class
The LocationMediator Class
The LocationDescriptionsMediator Class
The LocationOnEnterScriptMediator Class
The LocationOnExitScriptMediator Class
The LocationTargetLocationsMediator Class
The MoveGameObject And NewGameObject Dialogs
The LocationGameObjectsMediator Class
The SaveAndLoadMediator Class
Alterations to the MainWnd Class
Code Review 1
Code Review 2
Testing The Game Editor
Alterations To The Game Engine main() Function
Create New Game
Generate Doxygen Documentation

Course Conclusion And Next Steps

Challenge – Add Custom Command Functionality To Editor
Suggestions For Reading/Studying