想法

利用随机数控制圆圈的大小、位置以及颜色,可以产生随机的美感。

让小球动起来,并且在屏幕边界处产生反弹效果。

代码

   1: float circle_x = (float) 0.0;

   2: float circle_y = (float) 0.0;

   3: float circle_radius = (float) 0.0;

   4: int circle_color = 0;

   5:  

   6: public void setup() {

   7:   size(displayWidth, displayHeight);

   8:   background(0);

   9:   frameRate(10);

  10: }

  11:  

  12: public void draw() {

  13:   

  14:   circle_x = random(0, displayWidth);

  15:   circle_y = random(0, displayHeight);

  16:   circle_radius = random(0, (displayWidth + displayHeight) / 20);

  17:   

  18:   circle_color = (int) random(0, 255);

  19:   

  20:   colorMode(RGB, 255);

  21:   fill(0,0,0,5);

  22:   rect(0, 0, displayWidth, displayHeight);

  23:   

  24:   noStroke();

  25:   colorMode(HSB, 255);

  26:   fill(circle_color, 255, 255);

  27:   ellipse(circle_x, circle_y, circle_radius, circle_radius);

  28:     

  29: }

截图

生成exe文件

将上述代码粘贴到Processing编辑器中,选择“Export Application”,导出成exe文件。

设置为屏幕保护程序

将exe文件更改后缀名为scr,右键->安装。

做一些变化

   1: float circle_x = (float) 0.0;

   2: float circle_y = (float) 0.0;

   3: float circle_radius = (float) 0.0;

   4: int circle_color = 0;

   5:  

   6: public void setup() {

   7:     size(displayWidth, displayHeight);

   8:     background(0);

   9:     frameRate(10);

  10: }

  11:  

  12: public void draw() {

  13:     

  14:       circle_x = random(0, displayWidth);

  15:       circle_y = random(0, displayHeight);

  16:       circle_radius = random(0, (displayWidth + displayHeight) / 5);

  17:       

  18:       circle_color = (int) random(0, 255);

  19:       

  20:       colorMode(RGB, 255);

  21: //      fill(0,0,0,5);

  22: //      rect(-1, -1, displayWidth+1, displayHeight+1);

  23:       

  24:       //noStroke();

  25:       colorMode(HSB, 255);

  26:       stroke(circle_color, 255, 255);

  27:       fill(circle_color, 255, 255);

  28:       noFill();

  29:       ellipse(circle_x, circle_y, circle_radius, circle_radius);

  30:       ellipse(circle_x, circle_y, circle_radius-1, circle_radius-1);

  31:         

  32: }

截图

运动的泡泡

   1: public static final int circle_nums = 200;

   2:  

   3: class BCircle

   4: {

   5:     public BCircle(float x, float y, float radius, float x_delta, float y_delta, int color) {

   6:         super();

   7:         this.x = x;

   8:         this.y = y;

   9:         this.radius = radius;

  10:         this.x_delta = x_delta;

  11:         this.y_delta = y_delta;

  12:         this.color = color;

  13:     }

  14:     private float x = (float) 0.0;

  15:     private float y = (float) 0.0;

  16:     private float radius = (float) 0.0;

  17:     

  18:     private float x_delta = (float) 0.0;

  19:     private float y_delta = (float) 0.0;    

  20:     private int color = 0; // 0 - 255

  21:     

  22:     private boolean valueInRange(float val, float min, float max)

  23:     {

  24:         return (val >= min >> val < max);

  25:     }

  26:     

  27:     public void moveOneStep()

  28:     {

  29:         if (valueInRange(x+x_delta, 0, displayWidth) >> 

  30:                 valueInRange(y+y_delta, 0, displayHeight))

  31:         {

  32:             x += x_delta;

  33:             y += y_delta;

  34:         }

  35:  

  36:         if (!valueInRange(x+x_delta, 0, displayWidth))

  37:         {

  38:             x_delta = -x_delta;

  39:             x += x_delta;

  40:         }

  41:         

  42:         if (!valueInRange(y+y_delta, 0, displayHeight))

  43:         {

  44:             y_delta = - y_delta;

  45:             y += y_delta;

  46:         }

  47:             

  48:     }

  49:     

  50:     public void draw(int theme)

  51:     {      

  52:         switch(theme)

  53:         {

  54:             case 1:

  55:             {

  56:                 noFill();

  57:                 colorMode(HSB, 255);

  58:                 stroke(color, 255, 255);

  59:                 ellipse(x, y, radius+2, radius+2);

  60:                 ellipse(x, y, radius+1, radius+1);

  61:                 ellipse(x, y, radius, radius);

  62:             }

  63:             break;

  64:             case 2:

  65:             {

  66:                 colorMode(HSB, 255);

  67:                 fill(color, 255, 255);

  68:                 ellipse(x, y, radius+2, radius+2);

  69:                 ellipse(x, y, radius+1, radius+1);

  70:                 ellipse(x, y, radius, radius);

  71:             }

  72:         }

  73:         

  74:     }

  75: }

  76:  

  77: List<BCircle> circles;

  78:  

  79: public void setup() {

  80:   size(displayWidth, displayHeight);

  81:   background(0);

  82:   frameRate(10);

  83:   

  84:   circles = new ArrayList<BCircle>(circle_nums);

  85: }

  86:  

  87: public void draw() {

  88:   

  89:     colorMode(RGB, 255);

  90:     fill(0,0,0,30);

  91:     rect(-1, -1, displayWidth+1, displayHeight+1);

  92:     

  93:     if (circles.size() < circle_nums)

  94:     {

  95:         float x = random(0, displayWidth);

  96:         float y = random(0, displayHeight);

  97:         float radius = random(20, (displayWidth + displayHeight) / 20);

  98:         float x_delta = random(-50, 50); 

  99:         float y_delta = random(-50, 50);

 100:         int color = (int) random(0, 255);

 101:         BCircle circle = new BCircle(x, y, radius, x_delta, y_delta, color);

 102:         

 103:         circles.add(circle);

 104:     }

 105:     

 106:     for(int i=0;i<circles.size();i++)

 107:     {

 108:         circles.get(i).moveOneStep();

 109:         circles.get(i).draw(1);

 110:     }    

 111: }

两种主题,截图

 

用processing生成屏保程序的更多相关文章

  1. 用Processing生成屏保(二)

    代码 1: class TPoint 2: { 3: public TPoint(int _x, int _y) { 4: super(); 5: this._x = _x; 6: this._y = ...

  2. wpf 制作播放视频的屏保程序、而且能分屏显示

    这个程序用到了WPF里  “visual_Brush”(主要是为了实现分屏显示) , “UserControl” ,这两个知识点: 在屏保状态下播放指定文件夹下的视频,而且能分屏显示: 把编译好的屏保 ...

  3. 用Qt写的简单屏保程序

    近日老大提别人家产品都有屏保程序,貌似我们也该有,简单在qtcn.org请教了一下,写了个小程序! 晕倒,半天没找到上传功能!我已经上传到qtcn上了,地址如下: http://www.qtcn.or ...

  4. WinForm 屏保程序

    this.ShowInTaskbar = false; this.FormBorderStyle = FormBorderStyle.None; this.WindowState = FormWind ...

  5. 3D屏保程序:汉诺塔

    学过程序的人一定记得汉诺塔.我们学的第一个程序是HelloWorld,而碰到的第一个坑就是汉诺塔,短短十几行代码,不知花费了多少时间精力去理解.我记得当年的开发环境还是蓝屏的,汉诺塔程序的输出还是一行 ...

  6. python写的屏保程序

    __author__ = 'ChenYan' from random import randint from tkinter import * class Randball(): def __init ...

  7. [archlinux][plasma][screensaver] plasma5配置屏保程序,没成功(-_-#)

    plamsa用了好久,一直没有屏保.我想要玄酷的屏保! 用xscreensaver, 之前用FVWM2的时候,就用过了,很玄酷. 一,安装 pacman -S xscreensaver 二,配置 xs ...

  8. 3D屏保: 线圈

    LineFlower3DSP 一个3D屏保程序,算法的原理类似于圆内轮旋线的生成. 下载地址: http://files.cnblogs.com/WhyEngine/LineFlower3D_sp.z ...

  9. 3D屏保:N皇后

    前几天园子里有人发表关于8皇后的算法.只有代码,没有能运行的DEMO多枯燥.于是我这两天抽时间写了个N皇后的屏保程序.程序启动后会从4皇后到14皇后显示其所有排列,每隔0.5秒自动切换一次.按下空格键 ...

随机推荐

  1. SQL 交叉连接与内连接

    交叉连接 ,没有任何限制方式的连接. 叫做交叉连接. 碰到一种SQL 的写法. select * from  t1,t2 .     这其实是交叉连接 .   t1  是三条 ,  t2 是两条.  ...

  2. 阿里云二级域名解析指向服务器另一台主机— —Nginx

    这是在一台阿里云服务器没有任何域名,但是配置高,因此想借用另一台阿里云服务器(配置较低)已备案的域名 跳转到这台配置高的服务器,那么使用nginx反向代理 server { listen 80; se ...

  3. (转)SQL注入原理

    原文地址:http://www.cnblogs.com/rush/archive/2011/12/31/2309203.html SQL Injection:就是通过把SQL命令插入到Web表单递交或 ...

  4. Cocos2d-x之物理引擎

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. 在很多的游戏设计中一般都会涉及和模拟到真实的物理世界.然而游戏中模拟真实世界的物理会很复杂.使用已经写好的物理引擎会用很大的帮助和便利.  ...

  5. Git SSH连接方式配置

    如果使用ssh的方式管理,需要配置ssh key. 1.打开git bash命令窗口 2.生成ssh key ssh-keygen -t rsa -b 4096 -C "your_email ...

  6. (十二)Bind读取配置到C#实例

    继续上一节的,接下来用Options或者Bind把json文件里的配置转成C#的实体,相互之间映射起来.首先新建一个asp.net core mvc项目OptionsBindSample Startu ...

  7. 2019 ICPC Universidad Nacional de Colombia Programming Contest C D J

    C. Common Subsequence 题意:给出长度为n两个串,求两个串的最长公共子序列len,如果len>=0.99*n,两个串就是亲兄弟否则不是. 解法:朴素的求LCS的时间复杂度是O ...

  8. Codeforces 1178E

    题意:给你一个长度为n的字符串,只包含a, b, c3种字符,字符串中相邻字符一定不同,问是否存在一个长度为n / 2(向下取整)的子序列是回文的,有就输出. 思路:相邻的字符一定不同,并且一共只有3 ...

  9. 开发react 应用最好用的脚手架 create-react-app

    安装 npx create-react-app my-app cd my-app npm start 安装后之后,就是这样的了 配置 这样的”零配置”没法满足我们的需求,我们需要自定义,需要加一些 l ...

  10. html打开子窗口

    第一个参数是打开的链接,第二个参数是窗口的名字,第三个参数是窗口的属性 window.open ("page.html", "newwindow", " ...