用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相关推荐

  1. flappy brid 开发实录(基于3d环境)

    一.游戏场景逻辑: 创建三个游戏面块,通过迭代改变面块的位置来生成无尽模式的游戏场景,通过常量来控制游戏状态 二.开发顺序: 1.场景搭建 2.主角控制 3.声音添加与游戏管理器 4.设计UI 三.开 ...

  2. python游戏——Flappy Brid

    Flappy Bird游戏 游戏中的对象: #小鸟:Bird类 class Bird(object):'''定义一个鸟类'''def __init__(self):'''定义初始化方法'''self. ...

  3. 【Unity好插件之PlayMaker系列一上半部分】如何只用一个插件和一个脚本完成制作一个简易的游戏

    学习目标: 对于PlayMaker,笔者在很早期学习中就有意识到这个插件被大伙一整乱吹,当时我觉得做个游戏肯定需要海量的脚本这PlayMaker一看就不可靠,但最近得知我贼喜欢的游戏<空洞骑士& ...

  4. 少儿编程python线上课程-少儿编程课堂|python – 用游戏学编程

    学习编程是很快乐的事情.当我们自己开发出一套时下流行的游戏时,这满满的成就感比玩儿游戏本身高出了不知道会有多少倍. 接下来一段时间我们就python从0开始学习怎么开发 flappy brid 游戏. ...

  5. python编程少儿游戏编程_少儿编程课堂|python – 用游戏学编程

    学习编程是很快乐的事情.当我们自己开发出一套时下流行的游戏时,这满满的成就感比玩儿游戏本身高出了不知道会有多少倍. 接下来一段时间我们就python从0开始学习怎么开发 flappy brid 游戏. ...

  6. 2022年15款实用有趣的小程序推荐。

    又到岁末年初做总结的时候了!在2022年里,FinClip 平台上涌现了一大波优质的小程序项目,本周小编挑选了15款实用又有趣的小程序推荐给大家,其中包括优质小程序模版.实用插件.小程序游戏,还包括鬼 ...

  7. 大道无形 难以揣摩的苹果商店审核制度

    App Store已有超过130万个App,3亿用户每周能够下载750亿次App. --来自WWDC2014数据. 不可否认,对于中国的iOS开发者而言,苹果应用商店带给他们最大的莫过于机会和希望.然 ...

  8. 优的python少儿编程课_少儿编程课堂|python – 用游戏学编程

    学习编程是很快乐的事情.当我们自己开发出一套时下流行的游戏时,这满满的成就感比玩儿游戏本身高出了不知道会有多少倍. 接下来一段时间我们就python从0开始学习怎么开发 flappy brid 游戏. ...

  9. Processing —— 简易绘画系统

    前言 此扩展绘画系统主要目的是实现更具艺术效果的绘画系统.与传统绘画系统相比增添了更加便利的艺术笔刷,并提供了更多交互方式,极大丰富化传统绘画模式. 这次项目首次使用Processing的Java框架 ...

最新文章

  1. 在IDE中刷LeetCode,编码调试一体化,刷题效率直线up!
  2. 交换机无法ping通之谜
  3. 跟Kafka学技术系列之时间轮
  4. CSS扩展“less和”sass“
  5. python3安装教程配置配置阿里云
  6. java 查看虚拟机状态_深入理解java虚拟机学习笔记(四)虚拟机性能监控与故障处理工具...
  7. 常用脚本--在线重建或重整实例下所有索引
  8. MYSQL小函数大用途之-------FIND_IN_SET
  9. C# 中的 gdi 而不是 gdi+
  10. sublime3中如何快速生成html头部信息
  11. Wormhole —— Docker 容器的服务连接代理
  12. oracle 关键字_oracle常见报错之无法验证 (约束) - 未找到父项关键字解决办法
  13. 软件设计师历年真题详解2009-2018
  14. JAVA图书管理系统详细代码
  15. cd linux 镜像,cdlinux镜像 v0.9.7官方版
  16. 轻松完美-实现ECharts双Y轴左右刻度线一致
  17. DROID-SLAM: 用于单目双目RGBD相机的深度视觉SLAM
  18. 【JavaEE】Day11-多线程
  19. 2020启智开发者大会在京隆重开幕,千万激励奖金首批评选揭晓
  20. 分享到QQ、QZone方法,无需登录

热门文章

  1. 波士顿机器人 开源_波士顿APIStrata重点介绍API与开源项目之间的链接
  2. 印刷文字识别-行驶证识别使用记录
  3. 操作系统回顾总结第一天:
  4. Windows Server 2022 英文版、简体中文版下载 (updated Oct 2021)
  5. CCTV足球解说员速成教材ZT
  6. linux wireshark中文,wireshark linux|wireshark linux下载 v1.2.6 - 121下载站
  7. 香奈儿诉华为logo侵权败诉!品牌商标和logo有什么区别?
  8. Android 浏览器内核浅谈,基于WebKit内核的Android手机浏览器的性能研究与加载优化...
  9. Matter理论介绍-通用-1-05:桥接设备-发现与配置流程
  10. CefSharp存储Cookie和读Cookie