说明
童晶老师《C 和 C++ 游戏趣味编程》一书各个章节的案例代码,每章案例逐步利用学到的语法知识。
本章我们将实现小球受重力影响加速下落,碰到地面后反弹的效果,如图所示。
首先学习 EasyX 图形库的下载安装,显示一个静止小球;学习整数常量的知识,并绘制多个小球;接着学习整型变量的定义和使用,从而方便修改小球坐标;然后学习 while(1) 循环和if语句,实现小球下落和反弹;最后学习浮点型变量,实现小球受重力加速下落的效果。
源码
#include <graphics.h>
#include <conio.h>
int main()
{
float y = 100; // 小球的 y 坐标
float vy = 0; // 小球 y 方向速度
float g = 0.5; // 小球加速度,y 方向
initgraph(600, 600); // 初始游戏窗口画面,
...
程序介绍
模仿手游 Logic Pic 做的游戏。
游戏介绍
玩法
根据数字的提示,左键点击白色方格,将其变为黑色,使每一行(列)的黑色方格,满足这一行(列)的数字,右键白色方格将此方格变为禁止状态,意为不涂,便于解题。左键(右键)黑色(灰色)方格,可取消其状态,变为白色普通方格。
当所有行(列)的黑色方格都满足该行(列)的数字时,解密成功。
例:3 :该行(列)三个黑色方格在一起,如上图第二列。
例:2 1:该行(列)一共有黑色方格,但是 2 和 1 需要分隔开,如上图第五列。
功能按钮
提示按钮,游戏界面下方第一个。随机获得一行(列)的正确答案,可能会出现在已经被填涂的行(列)。每局游戏只能使用一次,请谨慎使用。
记录按钮,游戏界面下方第二个。记录当前所有方格的状态。不限使用次数,但会覆盖原来的数据。
回退按钮,游戏界面下方第三个。配合记录功能使用,回退到记录时的状态。
重
...
游戏说明
这是一个传统的贪吃蛇游戏,基于链表实现
界面设计参考了 https://codebus.cn/aknoi/a/snake
按键说明
- 方向控制:↑↓←→ 或者 Q(逆时针),R(顺时针)
- 速度:按下 space 加速,‘[’ 减速,‘]’ 加速
- 食物:小键盘 + 增加食物,小键盘 - 减少食物
- 其他:非小键盘数字键 9、0 可以调整帧率,小键盘 * 可以切换贪吃蛇模式,F1 帮助,F11 截屏
状态栏说明
- 生命状态:贪吃蛇是否存活,由于没有设置死亡,所以只有存活和濒死两种状态
- 等级:每吃 10 个食物升一级
- 分数:每个食物 10 分
- 速度:默认速度 0 ,可以调节,最快 10,最慢 -10
- 长度:贪吃蛇的节数(包括头)
- 食物数量:界面中的食物个数,最大 99 ,可以手动调整
- 蛇
...
一、简介
大球吃小球,模拟自小游戏,左键按下状态拖动小球进行移动,躲避大球的同时尽量多吃小球。
玩法简单,程序也简单。开始界面按下左键开始游戏,按下右键退出程序。
新生球保护期:在 500ms 后可以被玩家吃到,在 800ms 后可以击杀玩家。
相同大小的小球碰撞时判断玩家失败。
二、游戏截图
三、游戏源码
/*
程序名称:
大球吃小球
简介:
模拟小游戏,左键按下状态拖动小球进行移动,躲避大球的同时尽量多吃小球
环境:
VS2019 + EasyX_20210115(beta)
时间:
2021.2.4
作者:
Teternity(QQ:1926594835)
版权:
作者原创,无抄袭,不涉及版权问题,仅用作学习
*/
/* ---------------头文件--------------- */
#include <iostream>
...
游戏说明
Player1 玩家通过 W、S 按键控制左板上下移动,Player2 玩家通过 O、L 按键控制右板上下移动。在游戏过程中,小球的速度会随着接触木板的次数增加而加快,增加游戏难度。当小球没有碰到木板时游戏结束。
效果图
完整代码
///////////////////////////////////////////////////
// 程序名称:双人击球游戏
// 编译环境:VS2010,EasyX_20200902
// 作 者:温良
// 最后修改:2021-1-31
//
#include <graphics.h>
#include <conio.h>
int main()
{
initgraph(640, 480);
srand(GetTickCount());
setbkcolor(WHITE);
cleardevice();
setfillcolor(BLACK);
se
...
A,D键躲避迎面而来的车辆。
所需图片资源:
#include <graphics.h>
#include <time.h>
#include <stdio.h>
#include <string>
#include <tchar.h>
#include <iostream>
#include <conio.h>
using namespace std;
IMAGE Texture_BK; //背景图
IMAGE Texture_Car; //车
IMAGE Texture_Car2; //车2
IMAGE Texture_BCar; //车掩码
IMAGE Texture_BCar2;//车掩码2
struct player
{
int x;
int road_type;
int time;
bool Ctrl;
void init() {
Ctrl = f
...
这是网上经常见的视觉错觉艺术图片,可以用程序生成的。效果如下:
完整的源代码如下:
///////////////////////////////////////////////////
// 程序名称:视觉错觉艺术图
// 编译环境:VS2010, EasyX_20200902
// 作 者:温良
// 最后修改:2021-1-24
//
#include <graphics.h>
#include <conio.h>
const double PI = 3.1415926536;
int main()
{
// 创建绘图窗口
initgraph(800, 560);
// 使用青绿色填充背景
setbkcolor(RGB(185, 230, 0));
cleardevice();
double b = 0;
for(int x = 20; x < 760; x += 48, b -= PI)
{
for(int
...
游戏说明
使用鼠标左键点击发射针,当两个针的夹角小于一定限制时,游戏结束。
亮点
这个游戏比较创新的地方就是可以用鼠标控制一个动态的过程,在循环中使用鼠标点击,并且鼠标消息不受延时函数的影响。以前写代码的时候,由于鼠标消息的原因,所以会选择多线程,但是参考了正确处理鼠标消息这篇文章,了解了鼠标消息的正确用法后,觉得有必要试试,就写了一个见缝插针游戏。我觉得学习不仅就是把别人的东西学会,而且需要在学习之后实践。
期待
见缝插针游戏我只是写了一个大致的框架,重点是为了实践鼠标消息的处理,如果需要将这个游戏进一步开发,可以在针的转速,长短,以及在插在球上面针的数量上进行设置不同的关卡。
效果图
代码
///////////////////////////////////////////////////
// 程序名称:见缝插针
// 编译环境:Mictosoft Visual Stu
...
一、 视觉错觉效果图如下
二、思想
先画小球从左到右排放,然后再到下一行继续重复上一个过程。
三、完整代码如下
///////////////////////////////////////////////////
// 程序名称:视觉错觉艺术图
// 编译环境:VS2019, EasyX_20200902
// 作 者:梦萤花火
// 最后修改:2021-1-24
//
#include <graphics.h>
#include <conio.h>
int x; // X轴坐标
int y; // y轴坐标
int g_multiples = 0; // 倍数:作用是对弧度角进行改变
float g_PI = 3.1415927; // 圆周率
float g_radianAngle; // 起始角的弧度
// 实施画单个完整小球的函数
void DrawCe
...
一、简介
单机版扫雷总会有些枯燥,不妨试试联网对战版扫雷!
开发环境:VS2019 + EasyX_20210224。
游戏玩法:左键按下翻开方块,翻开雷判输,或翻开最后一个方块判赢;逃跑或超时会结束本轮连接,正常结束会自动重新开局,对手不变。
目的:一方面提供联网对战版扫雷供大家娱乐,另外也是重构曾经写过的扫雷单机版,最后也为了练习 Windows 网络编程。
二、网络
关于 Windows 网络编程书籍,推荐朱晨冰老师的《Visual C++ 2017 网络编程实战》,出版日期 2020 年。
个人感觉这本书讲解比较细致,内容也不会太老旧,有计网基础会更容易理解学习。
程序采用阻塞套接字编写,因此服务器免不了使用多线程,多线程部分由 C++11 提供。
想要让程序不限于局域网通信又不想购买服务器,这里推荐花生壳软件,操作简单,TCP 部分免费使用,相关内容自行搜索。
三、程序文件
1、服务器文件:
...
挑战六秒的说明
编写这个程序的想法来源于生活中的这个小游戏,一般商场等地方就会有这样的一个供路人来玩的“挑战六秒”的小小的装置。看谁能够准确的暂停到六秒整,感觉这个挺有意思,而且很锻炼人的反应能力和预判能力。其实编写这个“挑战六秒”程序的想法很早就产生了,但是由于各种原因,只能等到放假空闲下来编写。编写过程还算顺利,几乎是一气呵成,用了半天时间就编写成功了。
程序编写过程
首先我需要将程序的框架构建成功,主要过程就是按键后程序能够结束循环并暂停。这个实现后接下来就是设计程序界面。以前设计界面我都是用尺子在纸上进行勾绘。最近我发现 CAD 其实更适用。使用 CAD 可以准确的设计布局,并且可以找准坐标。为了更加真实的模仿“挑战六秒”,我需要按照电子数字字体绘制数字。我将电子数字字体分成 7 个模块。并将每个模块单独的编写成函数,每个模块的绘制是比较耗费时间的,这 7 个模块可以根据不同的组合组成需要的数字。为了防止出现闪屏的情况,我使用覆盖的方法将每次产生的数字进行覆盖。为了更加精确,我使用了精确延时。至于颜色搭配和布局设计这种,这
...
游戏介绍
这是一个模拟了微信跳一跳的简单小游戏(2D版),游戏中可以通过长按空格操作小人跳跃以往前行进。
源码地址
https://github.com/zouhuidong/JumpAndJump
游戏玩法
只需点击就可以盖木头,只要木头和木头没有完全对齐,就会自动截取超过木头的宽度,看看你能盖多少层。
游戏称号如下:
游戏截图
源码下载
源码下载