背景与小鸟--FlappyBird游戏开发教程之二
背景与小鸟–FlappyBird游戏开发教程之二
最终效果:
素材下载:点击下载
EXE效果下载:点击下载
先上代码:
#include <SFML/Graphics.hpp>
#include <windows.h>
#include<iostream>
#include<string>
#include <stdlib.h>
using namespace std;
double birdX = 50;
double birdY = 100;
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
int main(int argc, char* argv[])
{sf::RenderWindow window(sf::VideoMode(288,512), "FlappyBird");sf::Texture backgroundtexture;if(!backgroundtexture.loadFromFile("assets/background.png")){}sf::Texture birdtexture;if (!birdtexture.loadFromFile("assets/0.png")){}sf::Sprite backgroundsprite;backgroundsprite.setTexture(backgroundtexture);sf::Sprite birdsprite;birdsprite.setTexture(birdtexture);while (window.isOpen()){sf::Event event;while (window.pollEvent(event)){if (event.type == sf::Event::Closed)window.close();}birdsprite.setPosition(sf::Vector2f(birdX, birdY));Sleep(20);window.clear();window.draw(backgroundsprite);window.draw(birdsprite);window.display();}return 0;
}
我们来解释一下代码:
先导入了相关头文件;
然后定义了写变量:birdX 和 birdY 就是小鸟的X坐标和Y坐标;
用
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
来清除控制台(那个黑框框);
sf::RenderWindow window(sf::VideoMode(宽,长), 题目);
来创建一个窗口;
sf::Texture backgroundtexture;if(!backgroundtexture.loadFromFile("assets/background.png")){}sf::Texture birdtexture;if (!birdtexture.loadFromFile("assets/0.png")){}
以上代码是创建一个材质对象:backgroundtexture
如果backgroundtexture没有加载素材文件,那就加载图片。小鸟的texture代码也一样;
sf::Sprite backgroundsprite;
backgroundsprite.setTexture(backgroundtexture);
sf::Sprite birdsprite;
birdsprite.setTexture(birdtexture);
这些代码的意思是创建SPRITE(精灵)对象,并让它加载材质对象;
while (window.isOpen()){sf::Event event;while (window.pollEvent(event)){if (event.type == sf::Event::Closed)window.close();}Sleep(20);window.clear();window.draw(backgroundsprite);window.draw(birdsprite);window.display();}return 0;
}
这段代码的意思是如果窗口是打开的,就监视事件,如果监视到关闭事件那就关闭窗口。(如果不加,那你的窗口就永远关不掉);
然后延时20毫秒,不然太快,之后让小鸟动时,你啥也看不到;
然后用window.clear();
代码清屏;
window.draw(backgroundsprite);
window.draw(birdsprite);
用于代码将两个精灵画到屏幕上
window.display();
代码刷新屏幕;
你是不是已经看到在天山飞的小鸟了?赶紧回目录吧!
如果有人评论的话就继续写,没有的话就算了。
背景与小鸟--FlappyBird游戏开发教程之二相关推荐
- Unity 2D游戏开发教程之2D游戏的运行效果
Unity 2D游戏开发教程之2D游戏的运行效果 2D游戏的运行效果 本章前前后后使用了很多节的篇幅,到底实现了怎样的一个游戏运行效果呢?或者说,游戏中的精灵会不会如我们所想的那样运行呢?关于这些疑 ...
- Unity 2D游戏开发教程之2D游戏的运行效果
Unity 2D游戏开发教程之2D游戏的运行效果 2D游戏的运行效果 本章前前后后使用了很多节的篇幅,到底实现了怎样的一个游戏运行效果呢?或者说,游戏中的精灵会不会如我们所想的那样运行呢?关于这些疑问 ...
- NVIDIA Jetson TX1 系列开发教程之二:刷机与开发前准备
NVIDIA Jetson TX1 系列开发教程之二:刷机与开发前准备 转载请注明作者和出处:http://blog.csdn.net/u011475210 嵌入式平台:NVIDIA Jetson T ...
- SAP UI5 应用开发教程之二:SAP UI5 的引导过程(Bootstrap)
本教程的前一篇 Hello world 的文章,我们只是了解了一个最基本的 index.html 页面的开发方式,尚未真正接触到 SAP UI5. 从本文开始,我们将会在前一步骤的 index.htm ...
- iOS 9应用开发教程之ios9中实现按钮的响应
iOS 9应用开发教程之ios9中实现按钮的响应 IOS9实现按钮的响应 按钮主要是实现用户交互的,即实现响应.按钮实现响应的方式可以根据添加按钮的不同分为两种:一种是编辑界面添加按钮实现的响应:另一 ...
- iOS 9应用开发教程之ios9的视图
iOS 9应用开发教程之ios9的视图 了解IOS9的视图 在iPhone或者iPad中,用户看到的和摸到的都是视图.视图是用户界面的重要组成元素.本节将主要讲解ios9视图的添加.删除以及位置和大小 ...
- 运动控制卡的函数库与Linux,运动控制卡应用开发教程之ROS(下)
在正式学习之前,我们先了解一下正运动技术的运动控制卡ECI2418和ECI2618.这两款产品分别是4轴,6轴运动控制卡. ECI2418支持4轴脉冲输入与编码器反馈,板载24点输入,16点输出,2A ...
- Wear OS手表应用开发教程之-Activity使用微光模式-AmbientModeSupport
本文目录 点击直达 Wear OS手表应用开发系列教程 点击直达 本文标签 `路过的年轻人啊,你是要用左手点个赞呢,还是要右手点个关注呢` 前言: 使用方法: 结语: 最后我还有一句话要说: 人生下来 ...
- macOS SwiftUI开发教程之Scenekit 3D飞机 (项目含源码)
实战需求 macOS SwiftUI开发教程之Scenekit 3D入门 本文价值与收获 看完本文后,您将能够作出下面的界面 看完本文您将掌握的技能 SCNScene(named: "art ...
最新文章
- 一种新的高级抖动分离解析方法
- ITK:通过包装填充图像
- Item9:总是要改写toString
- 区块链基础语言(三)——Go语言开发工具
- 【转】SharePoint 2010 Search Service -- 管理中心配置
- springcloud 微服务鉴权_Java微服务框架spring cloud
- pidgin-qq可以使用QQ2012协议了
- 【报告分享】中国电信5G行业场景案例集.pdf(附下载链接)
- 【makefile系列】全平台编译脚本makefile
- 计蒜客2018 ICPC SouthEastern European E. Fishermen
- ffmpeg 官方文档 上篇 (译)
- 使用CSS3开启GPU硬件加速提升网站动画渲染性能
- 520送男朋友什么礼物比较好、520给男朋友的实用性礼物
- MySQL 5.7.37数据库下载安装教程(Windows无需安装版)
- 什么是EarlyStopping?
- 明日召开 | Pulsar Summit Asia 2021 本周末线上精彩呈现
- 《数据结构课程实践》_01_学生成绩档案管理系统_准备工作
- 人的心情就像四季一样!
- date命令时间戳和时间之间的转换
- 【转】常用原型图设计工具