# Jumping Ball
该项目为《C语言课程设计与游戏开发实践教程》的2.2节及其习题构成的产物。
其主要实现一个小球打砖块的游戏。
## 总体逻辑
### 游戏对象
+ 显示框(View)
+ 直接使用上一个项目的View类
+ 改进:存储两副图,一副为显示效果,一副为缓存
+ 每次改变都改动缓存
+ 新增`Flush()`函数用于将缓存写入显示效果,可以最小化光标移动量和屏幕输出改变
+ 小球(Ball)
+ 存储其坐标(`x`,`y`)与其速度方向矢量(`v_x`,`v_y`)
+ 初始化逻辑(`Init()`)
+ 移动逻辑(`Move()`,设定为固定时间执行移动)
+ 碰撞逻辑(`Collide()`,检测前进方向附近是否有物体,如果有则按特定逻辑改变方向)
+ 如果`(x, y + v_y)`方向有物体,则改变`v_y`方向
+ 如果`(x + v_x, y)`方向有物体,则改变`v_x`方向
+ 两种特殊情况会同时改变两个方向:
+ 仅有`(x + v_x, y + v_y)`下有物体
+ `(x, y + v_y)`和`(x + v_x, y)`下都有物体
+ 砖块集合(BlockSet)
+ 维护一个二元组集合,表示哪里有砖块
+ 生成逻辑(`Init()`,设定为完全随机生成)
+ 消除逻辑(`Erase()`,消除被碰撞的方块)
+ 移动挡板(Board)
+ 初始化逻辑(`Init()`)
+ 存储其x坐标与y坐标左端和右端,以及移动边界
+ 移动逻辑(`Move()`,根据参数矢量进行移动)
+ 全局变量
+ 计分,以及计算小球反弹次数
### Startup
按顺序调用如下逻辑:
+ 写入main函数的框体绘制
+ 小球初始化(固定值)
+ 挡板初始化(固定值)
+ 砖块初始化(传入生成范围)
### Show
改进后的显示类需要`show()`逻辑,仅调用其`Flush()`方法即可。
### Update With Input
读取输入并执行如下逻辑:
+ `wsad`:移动,调用Board的Move()
### Update Without Input
按顺序执行如下逻辑:
+ 小球检测碰撞(碰撞到砖块会调用砖块消除逻辑)
+ 小球移动逻辑
+ 小球检测碰撞(碰撞到砖块会调用砖块消除逻辑)
没有合适的资源?快使用搜索试试~ 我知道了~
《C语言课程设计与游戏开发实践教程》的学习笔记与代码托管.zip
共50个文件
cpp:29个
h:10个
md:4个
需积分: 5 2 下载量 31 浏览量
2024-04-04
17:39:33
上传
评论
收藏 26KB ZIP 举报
温馨提示
C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。冯.诺依曼在1945年提出了现代计算机的若干思想,被后人称为冯.诺依曼思想,这是计算机发展史上的里程碑。自1945 年至今大多采用其结构,因此冯.诺依曼被称为计算机之父。他的体系结构计算机由运算器,控制器,存储器,输入设备,输出设备五大部件构成。C语言拥有一套完整的理论体系经过了漫长的发展历史,在编程语言中具有举足轻重的地位。 [1] C 语言是一种十分强大的语言,可以进行多种方式进行程序的设计,它是一种很有特色的高级语言通过若干个函数组成,它具备构成程序设计的 3 种基本结构顺序,选择和循环结构。C语言编辑简洁明了,运算符丰富且功能强大还有编译预处理功能。此语言的移植性好不同的处理器用不同的编译器编译指令达到移植的效果。 [1]
资源推荐
资源详情
资源评论
收起资源包目录
《C语言课程设计与游戏开发实践教程》的学习笔记与代码托管.zip (50个子文件)
content
Chapter_2
2_1
ConsoleThunder
bullet.cpp 1KB
ConsoleThunder.dev 2KB
view.cpp 677B
enemy.h 300B
global.h 344B
plane.cpp 3KB
main.cpp 2KB
view.h 256B
Makefile.win 1KB
enemy.cpp 840B
ConsoleThunder.layout 629B
plane.h 544B
bullet.h 332B
2_1_1.cpp 2KB
2_2
JumpingBall
block.h 205B
view.cpp 966B
ball.cpp 1KB
board.cpp 730B
ball.h 294B
global.h 752B
main.cpp 2KB
board.h 190B
view.h 316B
Makefile.win 1KB
block.cpp 463B
JumpingBall.dev 2KB
JumpingBall.layout 626B
README.md 2KB
Chapter_1
1_1
1_1_1_Fixed.cpp 243B
1_1_1.cpp 177B
1_1_3.cpp 424B
1_1_Ex2.cpp 653B
1_1_2.cpp 296B
1_1_Ex3.cpp 1KB
1_1_4.cpp 553B
1_1_5.cpp 601B
1_1_Ex1.cpp 749B
Note.md 882B
1_2
1_2_2.cpp 506B
1_2_3.cpp 633B
1_2_Ex1.cpp 2KB
1_2_1.cpp 365B
1_2_5_Fixed.cpp 1KB
1_2_Ex2.cpp 2KB
1_2_1_Fixed.cpp 475B
1_2_5.cpp 1KB
1_2_4.cpp 832B
FreeTalk.md 607B
.gitignore 9B
README.md 788B
共 50 条
- 1
资源评论
生瓜蛋子
- 粉丝: 3913
- 资源: 7441
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- shopex升级补丁只针对 485.78660版本升级至485.80603版本 其它版本的请勿使用!
- 基于Django和HTML的新疆地区水稻产量影响因素可视化分析系统(含数据集)
- windows conan2应用构建模板
- 3_base.apk.1
- 基于STM32F103C8T6的4g模块(air724ug)
- 基于Java技术的ASC学业支持中心并行项目开发设计源码
- 基于Java和微信支付的wxmall开源卖票商城设计源码
- 基于Java和前端技术的东软环保公众监督系统设计源码
- 基于Python、HTML、CSS的crawlerdemo软件工程实训爬虫设计源码
- 基于多智能体深度强化学习的边缘协同任务卸载方法设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功