超牛逼黑客帝国代码雨,装X必用

news2024/11/27 10:35:16

html

1.用法

在电脑桌面新建一个文本文档,然后将代码复制到文本文档里,再将后缀改为".html"。

2.效果图
在这里插入图片描述

<!DOCTYPE html>
<html>
<head>
    <title>黑客帝国代码雨</title>
</head>
 
<body>
<canvas id="canvas"></canvas>
<style type="text/css">
    body{margin: 0; padding: 0; overflow: hidden;}
</style>
<script type="text/javascript">
    var canvas = document.getElementById('canvas');
    var ctx = canvas.getContext('2d');
 
 
    canvas.height = window.innerHeight;
    canvas.width = window.innerWidth;
 
    var texts = '0123456789#^%^&%^*^&*((*&%'.split('');
 
    var fontSize = 16;
    var columns = canvas.width/fontSize;
    // 用于计算输出文字时坐标,所以长度即为列数
    var drops = [];
    //初始值
    for(var x = 0; x < columns; x++){
        drops[x] = 1;
    }
 
    function draw(){
        //让背景逐渐由透明到不透明
        ctx.fillStyle = 'rgba(0, 0, 0, 0.05)';
        ctx.fillRect(0, 0, canvas.width, canvas.height);
        //文字颜色
        ctx.fillStyle = '#0F0';
        ctx.font = fontSize + 'px arial';
        //逐行输出文字
        for(var i = 0; i < drops.length; i++){
            var text = texts[Math.floor(Math.random()*texts.length)];
            ctx.fillText(text, i*fontSize, drops[i]*fontSize);
 
            if(drops[i]*fontSize > canvas.height || Math.random() > 0.95){
                drops[i] = 0;
            }
 
            drops[i]++;
        }
    }
 
    setInterval(draw, 33);
</script>
</body>
</html>
 

版本2

<!DOCTYPE html><html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="DevenKelly" content="">
  <title>黑客帝国代码雨特效-源码</title>
  <style>
	*{padding:0;margin:0}
	html{overflow:hidden}
  </style>
</head>

 <body>
  
	<canvas id="canvas" style="background:black" width="620" height="340"></canvas>
	<audio style="display:none; height: 0" id="bg-music" preload="auto" src="music/黑客帝国.mp3"></audio>
	<style type="text/css">
    body{margin: 0; padding: 0; overflow: hidden;}
	</style>
	<script type="text/javascript">
		
		window.onload = function(){
			//获取图形对象
			var canvas = document.getElementById("canvas");
			//获取图形的上下文
			var context = canvas.getContext("2d");
			//获取浏览器屏幕的宽度和高度
			var W = window.innerWidth;
			var H = window.innerHeight;
			//设置canvas的宽度和高度
			canvas.width = W;
			canvas.height = H;
			//每个文字的字体大小
			var fontSize = 15;
			//计算列
			var colunms = Math.floor(W /fontSize);	
			//记录每列文字的y轴坐标
			var drops = [];
			//给每一个文字初始化一个起始点的位置
			for(var i=0;i<colunms;i++){
				drops.push(0);
			}

			//运动的文字
			var str ="01abcdefghijklmnopqurstuvwxyz";
			//4:fillText(str,x,y);原理就是去更改y的坐标位置
			//绘画的函数
			function draw(){
			//让背景逐渐由透明到不透明
				context.fillStyle = "rgba(0,0,0,0.05)";
				context.fillRect(0,0,W,H);
				//给字体设置样式
				//context.font = "700 "+fontSize+"px  微软雅黑";
				context.font = fontSize + 'px arial';
				//给字体添加颜色
				context.fillStyle ="green";//随意更改字体颜色
				//写入图形中
				for(var i=0;i<colunms;i++){
					var index = Math.floor(Math.random() * str.length);
					var x = i*fontSize;
					var y = drops[i] *fontSize;
					context.fillText(str[index],x,y);
					//如果要改变时间,肯定就是改变每次他的起点
					if(y >= canvas.height && Math.random() > 0.92){
						drops[i] = 0;
					}
					drops[i]++;
				}
			};

			function randColor(){
				var r = Math.floor(Math.random() * 256);
				var g = Math.floor(Math.random() * 256);
				var b = Math.floor(Math.random() * 256);
				return "rgb("+r+","+g+","+b+")";
			}

			draw();
			setInterval(draw,33);
		};

	</script>
	
</body></html>

Python

# -*- coding:utf-8 -*-
import random
import pygame
from pygame.locals import *
from sys import exit

PANEL_width = 1920
PANEL_highly = 1080
FONT_PX = 40

pygame.init()

# 创建一个可视窗口, 如果不想全屏运行,可以把 FULLSCREEN 参数去掉
winSur = pygame.display.set_mode((PANEL_width, PANEL_highly), FULLSCREEN, 32)

font = pygame.font.SysFont("SimHei", 35)

bg_suface = pygame.Surface((PANEL_width, PANEL_highly), flags=pygame.SRCALPHA)

pygame.Surface.convert(bg_suface)

bg_suface.fill(pygame.Color(0, 0, 0, 20))

winSur.fill((0, 0, 0))

# 数字版
# texts = [font.render(str(i), True, (0, 255, 0)) for i in range(10)]

# # 二进制版
# letter = ['1', '0', '1', '1', '1', '0', '0', '0', '1', '0', '1', '0', '1', '0', '0', '1', '1', '0', '0', '0', '1', '1'
#           ,'1', '0', '1', '0', '0', '1', '0', '1']

# # 汉字版,但看不到字
# letter = ['我', '爱', '你', '我', '爱你', '我爱你', '我非常爱你', '我爱你', '我爱', '我', '爱', '你',
#           '我爱你', '爱', '我', '爱你', '我', '我爱', '爱你', '你']
#
# #  字母版
letter = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v'
          ,'w', 'x', 'y', 'z']

texts = [
    font.render(str(letter[i]), True, (0, 255, 0)) for i in range(20)
]

# 按屏幕的宽带计算可以在画板上放几列坐标并生成一个列表
column = int(PANEL_width / FONT_PX)
drops = [0 for i in range(column)]

while True:
    # 从队列中获取事件, 如果退出程序, 按两下确认键即可
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exit()
        elif event.type == pygame.KEYDOWN:
            chang = pygame.key.get_pressed()
            if (chang[32]):
                exit()

    # 将暂停一段给定的毫秒数
    pygame.time.delay(30)

    # 重新编辑图像第二个参数是坐上角坐标
    winSur.blit(bg_suface, (0, 0))

    for i in range(len(drops)):
        text = random.choice(texts)

        # 重新编辑每个坐标点的图像
        winSur.blit(text, (i * FONT_PX, drops[i] * FONT_PX))

        drops[i] += 1
        if drops[i] * 10 > PANEL_highly or random.random() > 0.95:
            drops[i] = 0

    pygame.display.flip()


数字版

#!/usr/bin/env python3
#-*- coding:UTF-8 -*-
import pygame
import random
from pygame.locals import *
from sys import exit
FONT_PX = 40
pygame.init()
winSur = pygame.display.set_mode((1920, 1080),FULLSCREEN,32)
font = pygame.font.SysFont('fangsong', 20)
bg_suface = pygame.Surface((1920, 1080), flags=pygame.SRCALPHA)
pygame.Surface.convert(bg_suface)
bg_suface.fill(pygame.Color(0, 0, 0, 13))
winSur.fill((0, 0, 0))
# 数字
texts = [font.render(str(i), True, (0, 255, 0)) for i in range(10)]
colums = int(1920 / FONT_PX)
drops = [0 for i in range(colums)]
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exit()
    pygame.time.delay(33)
    winSur.blit(bg_suface, (0, 0))
    for i in range(len(drops)):
        text = random.choice(texts)
        winSur.blit(text, (i * FONT_PX, drops[i] * FONT_PX))
        drops[i] += 1
        if drops[i] * 10 > 600 or random.random() > 0.95:
            drops[i] = 0
    pygame.display.flip()

字母版

#!/usr/bin/env python3
#-*- coding:UTF-8 -*-
import pygame
import random
PANEL_width = 1920
PANEL_highly = 1080
FONT_PX = 40
pygame.init()
# 创建一个窗口
winSur = pygame.display.set_mode((PANEL_width, PANEL_highly))
font = pygame.font.SysFont('123.ttf', 22)
bg_suface = pygame.Surface((PANEL_width, PANEL_highly), flags=pygame.SRCALPHA)
pygame.Surface.convert(bg_suface)
bg_suface.fill(pygame.Color(0, 0, 0, 28))
winSur.fill((0, 0, 0))
letter = ['I love you', 'Je t‘aime', 'c', 'd', 'e', 'f', 'u', 'i', 'WO ai NI', 'p', 'a', '520', 'd', 'f', '1314', 'h', 'j', 'k', 'l', 'z', 'x', 'c',
          'v', 'b', 'n', 'm']
texts = [
    font.render(str(letter[i]), True, (0, 255, 0)) for i in range(26)
]
 
# 按窗口的宽度来计算可以在画板上放几列坐标并生成一个列表
column = int(PANEL_width / FONT_PX)
drops = [0 for i in range(column)]
while True:
    # 从队列中获取事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exit()
        elif event.type == pygame.KEYDOWN:
            chang = pygame.key.get_pressed()
            if (chang[32]):
                exit()
    # 暂停给定的毫秒数
    pygame.time.delay(30)
    # 重新编辑图像
    winSur.blit(bg_suface, (0, 0))
    for i in range(len(drops)):
        text = random.choice(texts)
        # 重新编辑每个坐标点的图像
        winSur.blit(text, (i * FONT_PX, drops[i] * FONT_PX))
        drops[i] += 1
        if drops[i] * 10 > PANEL_highly or random.random() > 0.95:
            drops[i] = 0
    pygame.display.flip()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/769835.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Grafana中table的使用技巧

将多个指标数据显示在同一个Table中&#xff0c;需要用到Transform功能&#xff0c;利用Transform功能可以将数据进行处理只显示想要的数据&#xff1a;

OA低代码平台为企业踏出信息化系统第一步

随着互联网不断的发展&#xff0c;传统的管理模式已经快速进入淘汰的阶段。在这个快速发展的社会&#xff0c;企业若想快速高效的运营&#xff0c;必须踏出第一步改变—信息化系统。对于一个企业而言&#xff0c;企业员工是办公自动化&#xff08;简称OA&#xff09;生存的根本…

OpenCV for Python 第六天:图像的加法运算和加法加权运算

上一篇博客当中&#xff0c;我们认识了如何获取图片的属性&#xff0c;那么这一篇博客我们就来了解一下有关图像的加法和位运算是什么样的&#xff0c;并通过这些运算完成图片的相关操作 文章目录 加法运算cv2.add()cv2.addWeighted()基础操作符 add() 与基础操作符 的对比 每日…

【golang】12、gin 源码解析

文章目录 快速使用返回响应路由匹配pathqueryMultipart/Urlencoded Form 解析请求MultipartFrom MiddleWare github.com/gin-gonic/gin 是 golang 的 web 框架&#xff0c;其用字典树做路由匹配、支持中间件&#xff0c;本文介绍其源码实现。 快速使用 package mainimport (&…

C语言字符串函数学习

前面已经学习了strcpy和strcmp函数&#xff1b;下面继续学习其他的字符串函数&#xff1b; strcat(字符数组1&#xff0c;字符数组2) 字符串连接 把两个字符数组中的字符串连接起来&#xff0c;把字符串2连接到字符串1的后面&#xff0c;结果放在字符数组1中&#xff1b; …

Microsoft Outlook如何撤回已发送的邮件?

打开想要撤回的邮件→More Move Actions→Recall This Message→成功撤回的前提是对方尚未阅读此邮件

vs Qt工程界面无法使用中文,报编译错误问题解决方案

vs Qt工程界面无法使用中文&#xff0c;报编译错误问题解决方案 若基于visual studio 开发Qt 界面程序时&#xff0c;若想界面显示中文时&#xff0c;如设置按钮文字为“按钮”&#xff0c;编译时报错&#xff0c;如")"&#xff0c;这个是由于文件编码问题 1. 可以…

Prompt 技巧指南-让 ChatGPT 回答更准确

随着 ChatGPT 等大型语言模型 (LLM)的兴起&#xff0c;人们慢慢发现&#xff0c;怎么样向 LLM 提问、以什么技巧提问&#xff0c;是获得更加准确的回答的关键&#xff0c;也由此产生了提示工程这个全新的领域。 提示工程(prompt engineering)是一门相对较新的领域&#xff0c;用…

Milk-V Duo开发板之TF扩容

起因 开发板正式进入系统后&#xff0c;然后通过SSH的方案登录进入&#xff0c;进入以后&#xff0c;使用df -h命令查看&#xff0c;会发现ROOTFS的容量仅仅只有245.9MB&#xff0c;而我们的boot分区的容量也不过128MB&#xff0c;那么我的TF卡一共32GB&#xff0c;剩下的容量…

windows mysql 自动启动bat脚本

上一篇&#xff1a;windows mysql服务自动启动 错误模块名称:ntdll.dll_csdn_aspnet的博客-CSDN博客 根据上一篇文章进行手动启动mysql服务补充&#xff0c;由于演示机器系统安装的为win11家庭版&#xff0c;为了安全起见&#xff0c;在项目演示期间&#xff0c;避免数据库使用…

基于 Junit 的接口自动化测试框架实现

目录 前言&#xff1a; 分层的自动化测试 接口测试的意义 接口测试框架选型 我们封装的接口测试框架 接口测试关键实践 测试代码规范 (仅供参考) 前言&#xff1a; 基于JUnit的接口自动化测试框架可以实现对接口进行自动化测试&#xff0c;并提供了丰富的断言和报告功能…

PALO ALTO NETWORKS 的新一代防火墙如何保护企业安全

轻松采用创新技术、阻止网络攻击得逞并专注更重要的工作 IT 的快速发展已改变网络边界的面貌。数据无处不在&#xff0c;用户可随时随地从各类设备访问这些数据。同时&#xff0c;IT 团队正在采用云、分析和自动化来加速新应用的交付以及推动业务发展。这些根本性的转变带来了…

Kakfa - 多副本架构

文章目录 基本架构Kafka 多副本架构概念优点缺点 图解多副本架构小结 基本架构 Kafka 多副本架构 概念 Kafka 是一个高性能、分布式的消息系统&#xff0c;被广泛应用于各种场景中。在 Kafka 中&#xff0c;多副本架构是保证数据可靠性的重要手段之一。 多副本架构指的是将同…

【动手学深度学习】--12.深度卷积神经网络AlexNet

文章目录 深度卷积神经网络AlexNet1.AlexNet2.模型设计3.激活函数4.模型实现5.读取数据集6.训练AlexNet 深度卷积神经网络AlexNet 学习视频&#xff1a;深度卷积神经网络 AlexNet【动手学深度学习v2】 官方笔记&#xff1a;深度卷积神经网络&#xff08;AlexNet&#xff09; …

Qt的三大优势,打造高效工业软件开发:

强大的跨平台特性&#xff1a;Qt拥有优良的跨平台支持&#xff0c;可以在众多操作系统上运行&#xff0c;包括Microsoft Windows、Linux、Solaris、HP-UX、FreeBSD、QNX等等。这使得开发者可以轻松地将应用程序部署到不同的平台上&#xff0c;提高开发效率和覆盖范围。 面向对…

基于R语言的水文、水环境模型优化技术及快速率定方法与多模型案例实践

在水利、环境、生态、机械以及航天等领域中&#xff0c;数学模型已经成为一种常用的技术手段。同时&#xff0c;为了提高模型的性能&#xff0c;减小模型误用带来的风险&#xff1b;模型的优化技术也被广泛用于模型的使用过程。模型参数的快速优化技术不但涉及到优化本身而且涉…

linux之Ubuntu系列(七)用户管理 终端命令 su 切换用户

# 切换用户 zenxx:su - sup # 录入sup 密码 supxx:$ 切换root用户

Bard:Google AI开始支持中文对话和看图说话了

说起时下火爆的生成式AI&#xff0c;并不是只有ChatGPT。Bard也是一个很优秀的产品&#xff0c;并且刚刚发布的很多有趣的新功能。文末告诉你如何访问Bard。 Google AI在最近的更新中发布了Bard&#xff0c;一个新的语言模型。Bard支持多种语言&#xff0c;包括中文&#xff0…

linux之Ubuntu系列(五)用户管理、查看用户信息 终端命令

创建用户 、删除用户、修改其他用户密码的终端命令都需要通过 sudo 执行 创建用户 设置密码 删除用户 sudo useradd -m -g 组名 新建用户名 添加新用户 -m&#xff1a;自动建立用户 家目录 -g&#xff1a;指定用户所在的组。否则会建立一个和用户同名的组 设置新增用户的密码&…

7、PHP语法要点2

1、or 和 ||&#xff0c;&& 和 and 都是逻辑运算符&#xff0c;效果一样&#xff0c;但是其优先级却不一样。&&、||的优先级在赋值运算符之前&#xff0c;or和and在赋值运算符之后。 2、字符串变量及数组可以在echo输出时双引号内、双引号外均可引用&#xff…