本例是我参考学习童晶老师的《C/C++趣味游戏编程》书中例子改编而来。

1.安装好Visual Studio, EasyX图形库。(都可以去官网下载)

2.在VS中创建新的空项目(确保VS已经安装好C++模块)

3.在头文件中新建touch.h文件。

/*
** "别碰方块"游戏对象相关数据(游戏窗口,小球,方块,得分)
*/
#pragma once
#include <graphics.h>
#include <conio.h>
#include <stdio.h>#define WIDTH 1000 //窗口宽度
#define HEIGHT 400 //窗口高度
#define GRAVITY 0.6 //重力加速度
#define RADIUS 20 //球的半径static int SCORE = 0; //得分
static int isBallOnFloor = 1; //判断小球是否在地面上,避免重复跳
static float BALL_VY = 0; //球的初始Y速度
static float BALL_X = WIDTH / 4; //球的初始X坐标
static float BALL_Y = HEIGHT - RADIUS; //球的初始Y坐标
static float RECT_HEIGHT = 100; //方块高度
static float RECT_WIDTH = 20; //方块宽度
static float RECT_LEFT_X = WIDTH * 3 / 4; //方块左边X坐标
static float RECT_TOP_Y = HEIGHT - RECT_HEIGHT; //方块顶部Y坐标
static float RECT_VX = -3; //方块X方向速度

4.在源文件中新建touch.cpp。

#include "touch.h"int main() {initgraph(WIDTH, HEIGHT); //新建游戏窗口//一直保持循环while (1) {//当按键时if (_kbhit()) {char input = _getch(); //获得输入字符//当按下空格键时,球在地面时才能起跳if (input == ' ' && isBallOnFloor == 1) {BALL_VY = -20; //给小球向上的速度isBallOnFloor = 0; //表示小球不在地面}//小球左移if (input == 'a' && isBallOnFloor == 1)BALL_X -= 10;//小球右移if (input == 'd' && isBallOnFloor == 1)BALL_X += 10;}if (BALL_X - RADIUS <= 0)BALL_X = RADIUS; //控制小球不出界BALL_VY += GRAVITY; //根据重力加速度更新小球Y方向速度BALL_Y += BALL_VY; //更新小球Y坐标//如果小球落到地面上if (BALL_Y >= HEIGHT - RADIUS) {BALL_VY = 0; //让小球停下来BALL_Y = HEIGHT - RADIUS; //避免小球出界isBallOnFloor = 1; //表示小球在地面上}RECT_LEFT_X += RECT_VX; //方块向左移//如果方块跑到最左边if (RECT_LEFT_X <= 0) {RECT_LEFT_X = WIDTH; //方块重新在右边出现SCORE += 1; //得分+1RECT_HEIGHT = rand() % int(HEIGHT / 4) + HEIGHT / 4; //设置方块的随机高度RECT_VX = rand() / float(RAND_MAX) * 4 - 7; //设置方块的随机速度}//如果小球碰到了方块if ((BALL_X + RADIUS >= RECT_LEFT_X)&& (BALL_X - RADIUS <= RECT_LEFT_X + RECT_WIDTH)&& (BALL_Y + RADIUS >= HEIGHT - RECT_HEIGHT)) {SCORE = 0; //得分清零RECT_LEFT_X = WIDTH;Sleep(500); //慢动作效果}cleardevice(); //清空画面fillcircle(BALL_X, BALL_Y, RADIUS); //绘制小球//绘制方块fillrectangle(RECT_LEFT_X, HEIGHT - RECT_HEIGHT, RECT_LEFT_X + RECT_WIDTH, HEIGHT);TCHAR s[20]; //定义字符串数组swprintf_s(s, _T("%d"), SCORE); //将SCORE转换为字符串settextstyle(40, 0, _T("宋体")); //设置文字大小字体outtextxy(50, 30, s); //输出显示得分Sleep(10); //暂停10ms}closegraph();return 0;
}

输出效果:

躲避方块的球——C语言游戏相关推荐

  1. Android Unity3D游戏开发之躲避方块

    开发环境 Window 7 Unity3D 3.4 MB525 defy  Android 2.1-update1 羽化的第四篇博客,这次给大家送上自己初学Unity时写的一个小游戏Demo,我叫它& ...

  2. CocosCreator之KUOKUO带你入门3D小游戏-躲避方块

    本次引擎2.1.0 编辑工具VSCode 目标:3D小游戏躲避方块 2.1.0版本已经出来好几天了,虽然有些地方还不够完善, 但是毕竟是能写3D游戏了,简单的来写一个,嘻嘻. console.log( ...

  3. 球与地下城——C语言游戏

    游戏简介: 这个游戏就是要让小球不断往下面探索,"A"左移,"D"右移.争取跳到方块上,如果小球碰到顶部或者没有踩到方块,游戏就会结束,随着时间推进,方块上升的 ...

  4. 直播 | 清华大学博士生姚远:对抗语言游戏

    「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...

  5. c语言游戏编程网盘下载,C语言游戏编程 计算器(5分下载)

    C语言游戏编程 #include /*DOS接口函数*/ #include /*数学函数的定义*/ #include /*屏幕操作函数*/ #include /*I/O函数*/ #include /* ...

  6. Go语言游戏服务器思维导图

    大家好,今天整理下了游戏服务器开发的知识,不一定限定Go语言:由于本身本人在从事Go语言游戏服务器开发,所以可以认为是以Go语言为例来分析的, 高清图片在: https://github.com/Go ...

  7. 安卓3d游戏引擎_3D球闯关游戏-3D球闯关游戏安卓官方版预约 v1.2.5

    3D球闯关游戏是一款让人上瘾的球球跳跃闯关游戏,在音轨上不断跳跃,控制球球顺利到达终点,玩家需要在曼妙的背景音乐下找到自己的闯关节奏,大家只有找到了节奏才能更轻松的完成挑战,轻松点击球球就可以让它不断 ...

  8. 后期维特根斯坦的语境观“:语言游戏”与“生活形式”

    [作者单位:福建师范大学] 摘 要:后期维特根斯坦批判了自己前期的意义图象论,提出了语言的意义在于对其的使用这一观点.将意义与语言使用联系在一起必然牵扯到语境这一要素,而维氏将语言游戏看作是语言与活动 ...

  9. c语言程序设计对角矩阵,从键盘输入一个4*4矩阵,并求这个4*4矩阵主对角线元素之和,并输出.球C语言程式设计...

    从键盘输入一个4*4矩阵,并求这个4*4矩阵主对角线元素之和,并输出.球C语言程式设计以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起 ...

  10. 计算机c程序题孔融让梨,幼儿园大班语言游戏教案《孔融让梨》含PPT课件.doc

    幼儿园大班语言游戏教案<孔融让梨>含PPT课件 [活动目标] 1.通过理解故事内容,懂得谦让的道理. 2.培养幼儿良好的倾听习惯. [活动准备] 食物两个梨子,动画视频,ppt课件. 推荐 ...

最新文章

  1. 【连载】高效人士的116个IT秘诀(第2版)——秘诀24为你的时间建一个构造图
  2. 重磅!联合国权威AI趋势报告,美中日韩四分天下
  3. mongodb连接失败_深入浅出mongodb(一)
  4. Linux移植随笔:终于解决Tslib的问题了【转】
  5. docker 容器数据卷
  6. python post上传大文件分片上传_基于七牛 用python实现分片上传 创建文件报错701...
  7. myeclipse搭建SSH框架
  8. 【小梅哥SOPC学习笔记】系统时钟的使用
  9. 软件工程开发之道:了解能力和复杂度是前提
  10. 菜鸟入门【ASP.NET Core】6:配置的热更新、配置的框架设计
  11. j2ee核心模式_Java设计模式是什么?
  12. jmeter在返回的json串中提取需要的值
  13. 好看的流程审批html,审批流程(加班)驳回(流程被删除).html
  14. 在百度实习的100天
  15. ROS2节点通信实现零拷贝
  16. LRC 文件格式定义
  17. BlockingQueue是什么?
  18. 物联网+区块链溯源方案
  19. component: resolve = require(['../pages/home.vue'], resolve),
  20. SoueceTree 本地仓库和贮藏两种方式冲突解决

热门文章

  1. 2021年亚马逊测评的最新经验技巧分享
  2. UCOSIII实时操作系统
  3. 215. 数组中的第K个最大元素
  4. html把中文转成英文,html转换中英文
  5. 【小教程】steam长展柜制作
  6. steam怎么设公用计算机,steam如何设置家庭共享?steam设置家庭共享的方法
  7. Linux Ubuntu 安装 numpy 教程
  8. 四阶段法-交通分布预测方法-算法复现
  9. 易恢复Ontrack EasyRecovery15绿色版
  10. php 代付功能_常见的第三方支付平台代付接口(php源码)