用processing生成屏保程序
想法
利用随机数控制圆圈的大小、位置以及颜色,可以产生随机的美感。
让小球动起来,并且在屏幕边界处产生反弹效果。
代码
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生成屏保程序的更多相关文章
- 用Processing生成屏保(二)
代码 1: class TPoint 2: { 3: public TPoint(int _x, int _y) { 4: super(); 5: this._x = _x; 6: this._y = ...
- wpf 制作播放视频的屏保程序、而且能分屏显示
这个程序用到了WPF里 “visual_Brush”(主要是为了实现分屏显示) , “UserControl” ,这两个知识点: 在屏保状态下播放指定文件夹下的视频,而且能分屏显示: 把编译好的屏保 ...
- 用Qt写的简单屏保程序
近日老大提别人家产品都有屏保程序,貌似我们也该有,简单在qtcn.org请教了一下,写了个小程序! 晕倒,半天没找到上传功能!我已经上传到qtcn上了,地址如下: http://www.qtcn.or ...
- WinForm 屏保程序
this.ShowInTaskbar = false; this.FormBorderStyle = FormBorderStyle.None; this.WindowState = FormWind ...
- 3D屏保程序:汉诺塔
学过程序的人一定记得汉诺塔.我们学的第一个程序是HelloWorld,而碰到的第一个坑就是汉诺塔,短短十几行代码,不知花费了多少时间精力去理解.我记得当年的开发环境还是蓝屏的,汉诺塔程序的输出还是一行 ...
- python写的屏保程序
__author__ = 'ChenYan' from random import randint from tkinter import * class Randball(): def __init ...
- [archlinux][plasma][screensaver] plasma5配置屏保程序,没成功(-_-#)
plamsa用了好久,一直没有屏保.我想要玄酷的屏保! 用xscreensaver, 之前用FVWM2的时候,就用过了,很玄酷. 一,安装 pacman -S xscreensaver 二,配置 xs ...
- 3D屏保: 线圈
LineFlower3DSP 一个3D屏保程序,算法的原理类似于圆内轮旋线的生成. 下载地址: http://files.cnblogs.com/WhyEngine/LineFlower3D_sp.z ...
- 3D屏保:N皇后
前几天园子里有人发表关于8皇后的算法.只有代码,没有能运行的DEMO多枯燥.于是我这两天抽时间写了个N皇后的屏保程序.程序启动后会从4皇后到14皇后显示其所有排列,每隔0.5秒自动切换一次.按下空格键 ...
随机推荐
- spring4.1.8扩展实战之三:广播与监听
提到广播与监听,我们常常会想到RabbitMQ.Kafka等消息中间件,这些常用于分布式系统中多个应用之间,有时候应用自身内部也有广播和监听的需求(例如某个核心数据发生变化后,有些业务模块希望立即被感 ...
- Oralce-PL/SQL编程-游标
PL/SQL(Procedural Language/SQL)是Oracle在数据库中引入的一种过程化编程语言. PL/SQL块结构 声明部分 执行部分(必须的) 异常处理部分 [declare] - ...
- iview+vue 表格任一项实现鼠标划上显示内容
在新版本的iview中,表格新增了tooltip功能: 但做项目时并不是新的iview版本,又不想升级,如何才能实现当内容过多鼠标划上显示内容?下边是我做项目时的改动: { // fixed: 'le ...
- [Codeforces 729F] Financiers Game
题意: 两个人分别从长度为n的数列的两端开始取数,如果前一 个人取了k个数,后一个人必须取k或k+1个. 第一个人最 开始可以取1个或2个,不能操作时结束. 两个人都希望自 己取到的数字之和尽量大,并 ...
- Cocos2d 之FlyBird开发---GamePlay类
| 版权声明:本文为博主原创文章,未经博主允许不得转载. 这个是游戏的核心部分:(FlyBird游戏重中之重) 创建一个物理世界(世界设置重力加速度) 在物理世界中添加一个动态的刚体(小鸟) 在物 ...
- Elasticsearch7.3开启x-pack验证
原文 Elasticsearch7开启x-pack验证 前言 在Elasticsearch7.3,x-pack已经作为默认的插件集成在Elasticsearch里面了,所以无需在bin/elastic ...
- 批量授一种权限给用户程序 plm enovia
set context user DanielDai;add program LUX_UserAssignment java execute immediate code 'import com.ma ...
- kubernetes容器集群管理部署node节点组件
发送配置文件到各个节点 [root@master ~]# scp /opt/kubernetes/cfg/*kubeconfig root@192.168.238.128:/opt/kubernete ...
- Provider
import React from 'react';import PropTypes from 'prop-types'; class Provider extends React.Component ...
- linux c 链接详解5-虚拟内存管理
5. 虚拟内存管理 我们知道操作系统利用体系结构提供的VA到PA的转换机制实现虚拟内存管理.有了共享库的基础知识之后,现在我们可以进一步理解虚拟内存管理了.首先分析一个例子: $ ps PID TTY ...