《C++游戏编程入门》第1章 类型、变量与标准I/O: Lost Fortune

2024-03-12 01:36

本文主要是介绍《C++游戏编程入门》第1章 类型、变量与标准I/O: Lost Fortune,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《C++游戏编程入门》第1章 类型、变量与标准I/O: Lost Fortune

      • 1.1.1 使用C++编写游戏
      • 1.1.2 生成可执行文件
      • 1.1.3 错误处理
    • 1.2 第一个C++程序
        • 01.game_over.cpp
        • 01.game_over2.cpp
        • 01.game_over3.cpp
    • 1.4 使用算术运算符
        • 01.expensive_calculator.cpp
    • 1.5 声明和初始化变量
        • 01.game_stats.cpp
    • 1.6 使用变量进行算术运算
        • 01.game_stats2.cpp
    • 1.7 使用常量
        • 01.game_stats3.cpp
    • 1.8 Lost Fortune
        • 01.lost_fortune.cpp

1.1.1 使用C++编写游戏

原因:
一、高速。高性能。
二、灵活。包括面向对象编程的多范型语言。
三、良好支持。大量资源库可使用,图像API、2D、3D、物理以及声音引擎。

1.1.2 生成可执行文件

编辑器->源代码->编译器->目标代码->链接器->可执行文件

1.1.3 错误处理

类型:
一、编译错误。语法错误,应修复警告。
二、链接错误。无法找到外部引用,调整引用关系,重新编译/链接。
三、运行错误。非法操作,逻辑错误等。

1.2 第一个C++程序

01.game_over.cpp
// 预处理器指令以#符号开头
// 包含头文件
#include <iostream>int main() // 主函数
{// std名称空间//::作用域解析运算符// 所有语句以;结尾std::cout << "Game Over!" << std::endl; // 标准输出return 0;								// 0表示程序正常结束
}// 注释
/*
注释
注释
*/// 空白字符(空格、制表符、换行符)用于分隔代码块,会被编译器忽略
01.game_over2.cpp
#include <iostream>
using namespace std;//使用using指令int main()
{cout << "Game Over!" << endl;return 0;
}
01.game_over3.cpp
#include <iostream>
using std::cout;//使用using声明
using std::endl;int main()
{cout << "Game Over!" << endl;return 0;
}

1.4 使用算术运算符

01.expensive_calculator.cpp
#include <iostream>
using namespace std;int main()
{
//加法、加法与乘法cout << "7 + 3 = " << 7 + 3 << endl;cout << "7 - 3 = " << 7 - 3 << endl;cout << "7 * 3 = " << 7 * 3 << endl;cout << "7 / 3 = " << 7 / 3 << endl;//整数除法取整cout << "7.0 / 3.0 = " << 7.0 / 3.0 << endl;//除法,至少一个浮点数,保留小数位cout << "7 % 3 = " << 7 % 3 << endl;//余数cout << "7 + 3 * 5 = " << 7 + 3 * 5 << endl;cout << "(7 + 3) * 5 = " << (7 + 3) * 5 << endl;//运算符优先级return 0;
}

1.5 声明和初始化变量

01.game_stats.cpp
#include <iostream>
using namespace std;int main()
{int score; // 变量声明double distance;char playAgain;bool shieldsUp;short lives, aliensKilled; // 变量声明score = 0;distance = 1200.76;playAgain = 'y';shieldsUp = true;lives = 3;aliensKilled = 10; // 变量赋值double engineTemp = 6572.89; // 变量初始化cout << "\nscore: " << score << endl; // 显示变量值cout << "distance: " << distance << endl;cout << "playAgain: " << playAgain << endl;// skipping shieldsUp since you don't generally print Boolean valuescout << "lives: " << lives << endl;cout << "aliensKilled: " << aliensKilled << endl;cout << "engineTemp: " << engineTemp << endl;int fuel;cout << "\nHow much fuel? ";cin >> fuel; // 获取用户输入cout << "fuel: " << fuel << endl;typedef unsigned short int ushort; // 定义新变量名ushort bonus = 10;cout << "\nbonus: " << bonus << endl;return 0;
}// 基本类型
// bool, char, int, float, double// 类型修饰符
// short, long, signed, unsigned// 变量命名
// 字母,数字,下划线(非数字开头,非关键字)
// 命名准则:
// 描述性名称、前后一致、语言传统、短变量名// 根据数据使用范围选择数据类型

1.6 使用变量进行算术运算

01.game_stats2.cpp
#include <iostream>
using namespace std;int main()
{unsigned int score = 5000;cout << "score: " << score << endl;// altering the value of a variablescore = score + 100; // 修改变量值cout << "score: " << score << endl;// combined assignment operatorscore += 100; // 使用组合赋值运算符(+=,-=,*=,/=,%=)cout << "score: " << score << endl;// increment operatorsint lives = 3;++lives; // 前置递增运算符,--livescout << "lives: " << lives << endl;lives = 3;lives++; // 后置递增运算符,lives--cout << "lives: " << lives << endl;lives = 3;int bonus = ++lives * 10;cout << "lives, bonus = " << lives << ", " << bonus << endl;lives = 3;bonus = lives++ * 10;cout << "lives, bonus = " << lives << ", " << bonus << endl;// integer wrap aroundscore = 4294967295;cout << "\nscore: " << score << endl;++score; // 溢出,变为0cout << "score: " << score << endl;return 0;
}

1.7 使用常量

01.game_stats3.cpp
#include <iostream>
using namespace std;int main()
{const int ALIEN_POINTS = 150; // 常量,经过命名的无法修改的值int aliensKilled = 10;int score = aliensKilled * ALIEN_POINTS;cout << "score: " << score << endl;enum difficulty // 枚举类型{NOVICE,EASY,NORMAL,HARD,UNBEATABLE};difficulty myDifficulty = EASY;enum shipCost{FIGHTER_COST = 25,BOMBER_COST,CRUISER_COST = 50};shipCost myShipCost = BOMBER_COST;cout << "\nTo upgrade my ship to a Cruiser will cost "<< (CRUISER_COST - myShipCost) << " Resource Points.\n";return 0;
}

1.8 Lost Fortune

01.lost_fortune.cpp
#include <iostream>
#include <string>using std::cin;
using std::cout;
using std::endl;
using std::string;int main()
{const int GOLD_PIECES = 900;int adventurers, killed, survivors;string leader;// get the informationcout << "Welcome to Lost Fortune\n\n";cout << "Please enter the following for your personalized adventure\n";cout << "Enter a number: ";cin >> adventurers;cout << "Enter a number, smaller than the first: ";cin >> killed;survivors = adventurers - killed;cout << "Enter your last name: ";cin >> leader;// tell the storycout << "\nA brave group of " << adventurers << " set out on a quest ";cout << "-- in search of the lost treasure of the Ancient Dwarves. ";cout << "The group was led by that legendary rogue, " << leader << ".\n";cout << "\nAlong the way, a band of marauding ogres ambushed the party. ";cout << "All fought bravely under the command of " << leader;cout << ", and the ogres were defeated, but at a cost. ";cout << "Of the adventurers, " << killed << " were vanquished, ";cout << "leaving just " << survivors << " in the group.\n";cout << "\nThe party was about to give up all hope. ";cout << "But while laying the deceased to rest, ";cout << "they stumbled upon the buried fortune. ";cout << "So the adventurers split " << GOLD_PIECES << " gold pieces.";cout << leader << " held on to the extra " << (GOLD_PIECES % survivors);cout << " pieces to keep things fair of course.\n";return 0;
}

这篇关于《C++游戏编程入门》第1章 类型、变量与标准I/O: Lost Fortune的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/799737

相关文章

C++中RAII资源获取即初始化

《C++中RAII资源获取即初始化》RAII通过构造/析构自动管理资源生命周期,确保安全释放,本文就来介绍一下C++中的RAII技术及其应用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、核心原理与机制二、标准库中的RAII实现三、自定义RAII类设计原则四、常见应用场景1. 内存管理2. 文件操

C++中零拷贝的多种实现方式

《C++中零拷贝的多种实现方式》本文主要介绍了C++中零拷贝的实现示例,旨在在减少数据在内存中的不必要复制,从而提高程序性能、降低内存使用并减少CPU消耗,零拷贝技术通过多种方式实现,下面就来了解一下... 目录一、C++中零拷贝技术的核心概念二、std::string_view 简介三、std::stri

C++高效内存池实现减少动态分配开销的解决方案

《C++高效内存池实现减少动态分配开销的解决方案》C++动态内存分配存在系统调用开销、碎片化和锁竞争等性能问题,内存池通过预分配、分块管理和缓存复用解决这些问题,下面就来了解一下... 目录一、C++内存分配的性能挑战二、内存池技术的核心原理三、主流内存池实现:TCMalloc与Jemalloc1. TCM

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

一文全面详解Python变量作用域

《一文全面详解Python变量作用域》变量作用域是Python中非常重要的概念,它决定了在哪里可以访问变量,下面我将用通俗易懂的方式,结合代码示例和图表,带你全面了解Python变量作用域,需要的朋友... 目录一、什么是变量作用域?二、python的四种作用域作用域查找顺序图示三、各作用域详解1. 局部作

C++作用域和标识符查找规则详解

《C++作用域和标识符查找规则详解》在C++中,作用域(Scope)和标识符查找(IdentifierLookup)是理解代码行为的重要概念,本文将详细介绍这些规则,并通过实例来说明它们的工作原理,需... 目录作用域标识符查找规则1. 普通查找(Ordinary Lookup)2. 限定查找(Qualif

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示

C++/类与对象/默认成员函数@构造函数的用法

《C++/类与对象/默认成员函数@构造函数的用法》:本文主要介绍C++/类与对象/默认成员函数@构造函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录名词概念默认成员函数构造函数概念函数特征显示构造函数隐式构造函数总结名词概念默认构造函数:不用传参就可以

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一