代码雨制作

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>代码雨</title>

<style type="text/css">

html,body{width: 100%;height: 100%;}

body{

background: #000;

overflow: hidden;

margin: 0;

padding: 0;

}

</style>

</head>

<body>

<canvas id="cvs"></canvas>

<script type="text/javascript">

var cvs = document.getElementById("cvs");

var ctx = cvs.getContext("2d");

var cw = cvs.width = document.body.clientWidth;

var ch = cvs.height = document.body.clientHeight;

//动画绘制对象

var requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;

var codeRainArr = [];

var cols = parseInt(cw/14); //代码雨列数

var step = 16 ; //步长,每一列内部数字之间的上下间隔

ctx.font = "bold 26px microsoft yahei"

function createColorCv() {

//画布基本颜色

ctx.fillStyle="#242424";

ctx.fillRect(0,0,cw,ch);

}

//创建代码雨

function createCodeRain() {

for (var n = 0; n < cols; n++) {

var col = [];

//基础位置,为了列与列之间产生错位

var basePos = parseInt(Math.random()*300);

//随机速度 3~13之间

var speed = parseInt(Math.random()*10)+3;

//每组的x轴位置随机产生

var colx = parseInt(Math.random()*cw)

//绿色随机

var rgbr= 0;

var rgbg= parseInt(Math.random()*255);

var rgbb= 0;

//ctx.fillStyle = "rgb("+r+','+g+','+b+")"

for (var i = 0; i < parseInt(ch/step)/2; i++) {

var code = {

x : colx,

y : -(step*i)-basePos,

speed : speed,

// text : parseInt(Math.random()*10)%2 == 0 ? 0 : 1 //随机生成0或者1

text : ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","s","t","u","v","w","x","y","z"][parseInt(Math.random()*11)], //随机生成字母数组中的一个

color : "rgb("+rgbr+','+rgbg+','+rgbb+")"

}

col.push(code);

}

codeRainArr.push(col);

}

}

//代码雨下起来

function codeRaining(){

//把画布擦干净

ctx.clearRect(0,0,cw,ch);

//创建有颜色的画布

//createColorCv();

for (var n = 0; n < codeRainArr.length; n++) {

//取出列

col = codeRainArr[n];

//遍历列,画出该列的代码

for (var i = 0; i < col.length; i++) {

var code = col[i];

if(code.y > ch){

//如果超出下边界则重置到顶部

code.y = 0;

}else{

//匀速降落

code.y += code.speed;

}

//颜色也随机变化

//ctx.fillStyle = "hsl("+(parseInt(Math.random()*359)+1)+",30%,"+(50-i*2)+"%)";

//绿色逐渐变浅

//ctx.fillStyle = "hsl(123,30%,"+(30-i*2)+"%)";

//绿色随机

//var r= 0;

//var g= parseInt(Math.random()*255) + 3;

//var b= 0;

//ctx.fillStyle = "rgb("+r+','+g+','+b+")"

ctx.fillStyle = code.color;

//把代码画出来

ctx.fillText(code.text,code.x,code.y);

}

}

requestAnimationFrame(codeRaining);

}

//创建代码雨

createCodeRain();

//开始下雨吧 GO>>

requestAnimationFrame(codeRaining);

</script>

</body>

</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
制作代码效果,你可以使用 Python 中的 Pygame 库来实现。以下是一个简单的示例代码: ```python import pygame import random # 初始化 pygame.init() # 窗口大小 width, height = 800, 600 screen = pygame.display.set_mode((width, height)) # 字体和字体大小 font = pygame.font.SysFont(None, 25) # 文本内容和颜色 text = "Code Rain" text_color = (0, 255, 0) # 创建代码的粒子 class CodeParticle: def __init__(self): self.x = random.randint(0, width) self.y = random.randint(-height, 0) self.speed = random.randint(5, 20) self.color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)) # 更新粒子的位置 def update(self): self.y += self.speed if self.y > height: self.y = random.randint(-height, 0) # 绘制粒子 def draw(self, screen): pygame.draw.line(screen, self.color, (self.x, self.y), (self.x, self.y + 5)) # 创建代码粒子列表 particles = [] for _ in range(100): particles.append(CodeParticle()) # 游戏循环 running = True while running: # 事件处理 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False # 清屏 screen.fill((0, 0, 0)) # 更新和绘制粒子 for particle in particles: particle.update() particle.draw(screen) # 绘制文本 text_surface = font.render(text, True, text_color) screen.blit(text_surface, (10, 10)) # 刷新屏幕 pygame.display.flip() # 退出游戏 pygame.quit() ``` 运行上述代码后,你将看到一个窗口显示代码效果,并且窗口中心显示了 "Code Rain" 文本。你可以根据自己的需要修改文字内容、颜色和窗口大小等参数。注意,你需要先安装 Pygame 库,可以使用 `pip install pygame` 命令进行安装。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值