Processing实现简易的Flappy Brid
用Processing实现了背景滚动、双向柱子与边缘碰撞检测。
效果图:
- 全局变量部分
PImage brid[]; //鸟动画帧 图片
PImage pipe_down; // 管道1 图片
PImage pipe_up; // 管道2 图片
PImage background; // 背景 图片
PImage gameover; // 游戏结束 图片
int brid_point = 0; // 鸟动画当前帧率
float brid_speed = 0; //鸟的速度float brid_x = 0; // 鸟的位置X
float brid_y = 0; // 鸟的位置Yint background_pos = 0; // 背景X轴int pipe_gap = 100; // 管道之间的空隙大小
int pipe_up_random = 0; // 管道位置缩减值float pipe_down_x = 0; // 随机管道1的X轴坐标
float pipe_down_y = 0; // 随机管道1的y轴坐标
float pipe_up_x = 0; // 随机管道2的X轴坐标
float pipe_up_y = 0; // 随机管道2的X轴坐标
- 启动函数
void setup() {size(288, 512, P2D);brid = new PImage[3];brid[0] = loadImage("flappybird/bird0_0.png");brid[1] = loadImage("flappybird/bird0_1.png");brid[2] = loadImage("flappybird/bird0_2.png");pipe_down = loadImage("flappybird/pipe_down.png");pipe_up = loadImage("flappybird/pipe_up.png");gameover = loadImage("flappybird/text_game_over.png");background = loadImage("flappybird/bg_day.png");background_loop();pipe_loop();brid_fly();brid_speed_con();
}
- 绘画函数
void draw() {if (frameCount % 5 == 0) {if (impact_checking()) {background_loop();pipe_loop();brid_fly();brid_speed_con();}else{gameover_show();}}
}
- 鼠标事件
void mousePressed() {brid_speed -=15;
}
- 背景滚动
void background_loop() {image(background, background_pos, 0);image(background, background_pos + width, 0);background_pos -=5;background_pos %= width;
}
- 管道滚动
void pipe_loop() {if (background_pos >= -5) {pipe_up_random = int(random(0, 150));}pipe_down_x = width + background_pos;pipe_down_y = height/2 + pipe_up_random - pipe_up.height - pipe_gap;pipe_up_x = width + background_pos;pipe_up_y = height/2 + pipe_up_random;image(pipe_up, pipe_up_x, pipe_up_y);image(pipe_down, pipe_down_x, pipe_down_y);
}
- 鸟
void brid_fly() {brid_x = width/2 - brid[brid_point].width / 2;brid_y = height/2 - brid[brid_point].height / 2 + brid_speed;image(brid[brid_point], brid_x, brid_y);brid_point++;brid_point %= brid.length;
}
void brid_speed_con() {brid_speed += 5;// QQ:1130459060 感兴趣的小伙伴加我一起学Processing
}
- 碰撞检测
boolean impact_checking() {float real_brid_y = brid_y + brid[0].height - 10;float real_brid_x = brid_x + brid[0].width - 10;if (real_brid_y > height || brid_y + 10 < 0) {return false;}if (real_brid_y >= pipe_up_y && (real_brid_x >= pipe_up_x && real_brid_x <= pipe_up_x + pipe_up.width)){return false;}if (real_brid_y <= pipe_down_y + pipe_down.height + brid[0].height / 2 && (real_brid_x >= pipe_down_x && real_brid_x <= pipe_down_x + pipe_down.width)){return false;}return true;
}
- 游戏失败
void gameover_show(){image(gameover, width/2 - gameover.width/2, height/2 - gameover.height/2);
}
Processing实现简易的Flappy Brid相关推荐
- flappy brid 开发实录(基于3d环境)
一.游戏场景逻辑: 创建三个游戏面块,通过迭代改变面块的位置来生成无尽模式的游戏场景,通过常量来控制游戏状态 二.开发顺序: 1.场景搭建 2.主角控制 3.声音添加与游戏管理器 4.设计UI 三.开 ...
- python游戏——Flappy Brid
Flappy Bird游戏 游戏中的对象: #小鸟:Bird类 class Bird(object):'''定义一个鸟类'''def __init__(self):'''定义初始化方法'''self. ...
- 【Unity好插件之PlayMaker系列一上半部分】如何只用一个插件和一个脚本完成制作一个简易的游戏
学习目标: 对于PlayMaker,笔者在很早期学习中就有意识到这个插件被大伙一整乱吹,当时我觉得做个游戏肯定需要海量的脚本这PlayMaker一看就不可靠,但最近得知我贼喜欢的游戏<空洞骑士& ...
- 少儿编程python线上课程-少儿编程课堂|python – 用游戏学编程
学习编程是很快乐的事情.当我们自己开发出一套时下流行的游戏时,这满满的成就感比玩儿游戏本身高出了不知道会有多少倍. 接下来一段时间我们就python从0开始学习怎么开发 flappy brid 游戏. ...
- python编程少儿游戏编程_少儿编程课堂|python – 用游戏学编程
学习编程是很快乐的事情.当我们自己开发出一套时下流行的游戏时,这满满的成就感比玩儿游戏本身高出了不知道会有多少倍. 接下来一段时间我们就python从0开始学习怎么开发 flappy brid 游戏. ...
- 2022年15款实用有趣的小程序推荐。
又到岁末年初做总结的时候了!在2022年里,FinClip 平台上涌现了一大波优质的小程序项目,本周小编挑选了15款实用又有趣的小程序推荐给大家,其中包括优质小程序模版.实用插件.小程序游戏,还包括鬼 ...
- 大道无形 难以揣摩的苹果商店审核制度
App Store已有超过130万个App,3亿用户每周能够下载750亿次App. --来自WWDC2014数据. 不可否认,对于中国的iOS开发者而言,苹果应用商店带给他们最大的莫过于机会和希望.然 ...
- 优的python少儿编程课_少儿编程课堂|python – 用游戏学编程
学习编程是很快乐的事情.当我们自己开发出一套时下流行的游戏时,这满满的成就感比玩儿游戏本身高出了不知道会有多少倍. 接下来一段时间我们就python从0开始学习怎么开发 flappy brid 游戏. ...
- Processing —— 简易绘画系统
前言 此扩展绘画系统主要目的是实现更具艺术效果的绘画系统.与传统绘画系统相比增添了更加便利的艺术笔刷,并提供了更多交互方式,极大丰富化传统绘画模式. 这次项目首次使用Processing的Java框架 ...
最新文章
- 在IDE中刷LeetCode,编码调试一体化,刷题效率直线up!
- 交换机无法ping通之谜
- 跟Kafka学技术系列之时间轮
- CSS扩展“less和”sass“
- python3安装教程配置配置阿里云
- java 查看虚拟机状态_深入理解java虚拟机学习笔记(四)虚拟机性能监控与故障处理工具...
- 常用脚本--在线重建或重整实例下所有索引
- MYSQL小函数大用途之-------FIND_IN_SET
- C# 中的 gdi 而不是 gdi+
- sublime3中如何快速生成html头部信息
- Wormhole —— Docker 容器的服务连接代理
- oracle 关键字_oracle常见报错之无法验证 (约束) - 未找到父项关键字解决办法
- 软件设计师历年真题详解2009-2018
- JAVA图书管理系统详细代码
- cd linux 镜像,cdlinux镜像 v0.9.7官方版
- 轻松完美-实现ECharts双Y轴左右刻度线一致
- DROID-SLAM: 用于单目双目RGBD相机的深度视觉SLAM
- 【JavaEE】Day11-多线程
- 2020启智开发者大会在京隆重开幕,千万激励奖金首批评选揭晓
- 分享到QQ、QZone方法,无需登录
热门文章
- 波士顿机器人 开源_波士顿APIStrata重点介绍API与开源项目之间的链接
- 印刷文字识别-行驶证识别使用记录
- 操作系统回顾总结第一天:
- Windows Server 2022 英文版、简体中文版下载 (updated Oct 2021)
- CCTV足球解说员速成教材ZT
- linux wireshark中文,wireshark linux|wireshark linux下载 v1.2.6 - 121下载站
- 香奈儿诉华为logo侵权败诉!品牌商标和logo有什么区别?
- Android 浏览器内核浅谈,基于WebKit内核的Android手机浏览器的性能研究与加载优化...
- Matter理论介绍-通用-1-05:桥接设备-发现与配置流程
- CefSharp存储Cookie和读Cookie