Friends——一个简单的Processing小游戏

Friends——一个简单的Processing小游戏

背景前言

在这里插入图片描述
人类永远是矛盾的个体,我们一边喜爱着无垠的夜空,一边又恐惧着深邃的孤独…

在无边无际的的黑夜中,每一个光点都是一个孤独的个体,他们本应活在自己的循环里,然而却有一簇小小的光环,不愿活在这永不交集的世界,请帮助他找到所有的Friends,还有…小心那些白色的飞驰而过的捕猎者…他们…不喜欢Friends…

玩法介绍

在这里插入图片描述
点击 START 字符串进入游戏,一簇围绕你鼠标箭头旋转的粒子就是你要操控的角色,请在屏幕中靠近其他光团来让他们加入你,游戏的目标是获得3000个Friends,这一数量将显示于屏幕左上角。

你可以通过按住鼠标左键/右键来收缩你的Friends,这样将更有利于你躲避捕猎者的攻击,但请注意,你不能一直按住鼠标,当左上角的能量槽耗尽,你会受到惩罚…

代码架构

在这里插入图片描述
完整代码贴在了另一篇博客:https://blog.csdn.net/qq_41645236/article/details/89678507

代码主体为:GameStart():游戏初始画面 GameMain():游戏主体程序 GameOver():播放结束动画,这三个部分,整个程序最重要的的思想受iprocessing示例的启发:放弃background(255)清屏,转而采用绘制一个rect(0,0,width,height);全屏的矩形,两者看起来没有什么不同,然而配合fill(2,2,2,15);选择一个透明的黑色便能呈现出尾迹的效果。

清屏语句:

fill(11,100);
rect(0,height/2-130,width,127);

粒子旋转参考了iprocessing的示例,只是一个简单的利用三角函数画圆,通过按时间增加角度来达到旋转目的,而粒子垂直移动更是简单的,按照时间提高y轴的坐标即可完成,整个程序使用了大量的随机数组,使所有粒子的运动显得独一无二。

垂直移动粒子程序:

void lizivertical(){
  pushMatrix();
  for(int i = 0;i<width;i=i+2){
      moriangle[i] += doriangle[i];
      v[i].lerp(i, sin(moriangle[i]*0.1)*(suijir[i]+height),0,easing[i]);
      fill(c[i]);
      ellipse(v[i].x, v[i].y, pointr[i],pointr[i]);
  }
  popMatrix();
}

捕猎者的运动逻辑参考了《代码本色》相关内容,运用了0章随机分布,1章向量以及2章力方面的思想,程序使用了NOC_2_6部分的代码,旨在通过引力来模拟一个更加真实的捕猎者:他们不会径直地向你冲来,却总会尾随你的路径逼近你。

随机数初始化(有删减)函数:

void chushihua(){
  for(int i =0;i<maxnum-1;i++){
    c[i] = color(random(1,255),random(1,255),random(100,255));
    if(i%10 == 0){
      pointr[i] = random(2.0)+1.0;
    }
    else{
      pointr[i] = random(2.0);
    }
    moriangle[i] = oriangle[i]/180*PI;
    chuxianx[i] = random(width-60)+30;
    chuxiany[i] = random(height-60)+30;
  }
}

值得一提的是,为了方便调试,我写了几个作弊按键,方便游戏直接通关,请适当使用,增加游戏乐趣。

键盘控制代码如下:

void keyPressed() {
  if (key == '1') {r++; }
  if (key == '2') { r--;}
  if (key == '3') {num+=10; }
  if (key == '4') {num-=10;}
  if (key == '5') {ranger+=10;}
  if (key == '6') {ranger-=10;}  
}

参考文献

程序灵感来源于processing编程艺术网站:http://iprocessing.cn/
代码参考了《自然代码》示例相关内容:https://github.com/nature-of-code/noc-examples-processing

  • 10
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值