【神级Python代码】作为技术xiao白如何制作一款超炫酷的黑客主题代码雨?牛逼就完了。(源码分享学习)

149 篇文章 18 订阅
94 篇文章 147 订阅

前言

哈喽,我是木子,今天给大家制作一款超级炫酷的代码啦。

提到《黑K帝国》,字符雨可谓是让人印象深刻。

所有文章完整的素材+源码都在👇👇

粉丝白嫖源码福利,请移步至CSDN社区或文末公众hao即可免费。

​​这种科技感爆棚的特效,你是否也想来一套?

这个,可以有。

最近,小编刷到抖音关于很久之前流行的代码雨,很是心动,这炫酷的特效让我着实爱了一

把,这不,今天早早的开始了我的代码之旅。就为了能重现这次的代码特效。

有人问效果如此震撼,实现起来会不会很复杂?让我们下面看看具体的代码吧~

正文

本文是由多个项目写的内容啦:

由数字代码雨、字母代码雨、图形代码雨、再到数字、字母组合代码雨。

一、环境准备

1)运行环境

本文用到的环境如下—— Python3、Pycharm社区版,第三方模块:pygame。部分自带的库

只 要安装完 Python就可 以直接使用了,需要安装 的库的话看教程下🎐 

 一般安装:pip install +模块名 

 镜像源安装:pip install -i https://pypi.douban.com/simple/+模块名  

(之前有说过安装报错的几种方式跟解决方法,不会安装的可以去看下,还有很多国内镜像源 也有文章的)

二、炫酷数字代码雨

1)代码展示

import random, pygame

FONT_PX = 15
pygame.init()
winSur = pygame.display.set_mode((500, 600))
font = pygame.font.SysFont('fangsong', 20)
bg_suface = pygame.Surface((500, 600), 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(500 / 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()

2)效果展示

​三、炫酷字母代码雨

1)代码展示

import random, pygame

PANEL_width = 400
PANEL_highly = 500
FONT_PX = 15
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 = ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 's', 'd', 'f', 'g', '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()

2)效果展示

四、炫酷图形代码雨

1)代码展示

from tkinter import *
import random, threading, time, os

# 初始雨滴纵坐标
INIT_HEIGHT = 1
# 雨滴创建
def rainmake(canvas, imagefile):
    rainlist = []
    for i in range(5):
        # 根据图片,创建一排福字
        rainlist.append(canvas.create_image(100 + 80 * i, INIT_HEIGHT, anchor=NE, image=imagefile))
    return rainlist

# 雨滴下落
def raindown(tk, canvas, imagefile, sec):
    # 线程间等待
    time.sleep(sec)
    rainlist = rainmake(canvas, imagefile)
    # 每个福字的纵坐标值
    height = [INIT_HEIGHT] * 10
    while True:
        # 每次移动前稍等一会
        time.sleep(0.2)
        # 5 个福字一起移动
        for i in range(5):
            # 如果福字到底了,则不继续移动
            if not height[i] == 0:
                # 设置下落步调
                rnd = random.randint(5, 50)
                canvas.move(rainlist[i], 0, rnd)
                height[i] = height[i] + rnd
                tk.update()
        for i,h in enumerate(height):
            if h > 400:
                # 当福字走到最下方,则删除
                canvas.delete(rainlist[i])
                tk.update()
                # 清空该福的 height
                height[i] = 0
                print(i,h,height)
        # 全到底,则跳出循环
        if height == [0] * 5:
            print('break:',threading.current_thread().name)
            break

def lookloop(tk, canvas, thread):
    aliveflg = False
    while True:
        # 5s 检测一次
        time.sleep(5)
        for th in thread:
            if th.is_alive():
                aliveflg = True
            else:
                aliveflg = False
        if aliveflg == False:
            break
    canvas.create_text(100 , 200, text='雨停了...', fill='red')
    canvas.pack()
    time.sleep(5)
    tk.destroy()

def main():
    # 创建窗口对象
    tk = Tk()
    tk.title('送福雨')
    canvas_style = {
        'bg':'white',
        'height':'500',
        'width':'410',
        'cursor':'circle'
    }
    # 创建画布
    canvas = Canvas(tk,canvas_style)
    canvas.pack()
    # 图片素材
    if not os.path.exists('pic.gif'):
        raise Exception('pic.gif file does not exists.')
    imagefile = PhotoImage(file = 'pic.gif')
    thread = []
    for i in range(100):
       thread.append(threading.Thread(target=raindown, args=(tk, canvas, imagefile, i)))
    for t in thread:
        t.start()
    # 新开一个线程监控运行中的线程
    threading.Thread(target=lookloop, args=(tk, canvas, thread)).start()
    # 进入消息循环
    tk.mainloop()

2)效果展示

五、炫酷数字、字母代码雨

1)代码展示

import random
import pygame

# 初始化参数设计
win_width = 1000
win_height = 800
font_px = 15

# 创建窗口及文本设计
pygame.init()
winsur = pygame.display.set_mode((win_width, win_height))
font = pygame.font.SysFont('', 23)
bg_suface = pygame.Surface((win_width, win_height), flags=pygame.SRCALPHA)
pygame.Surface.convert(bg_suface)
bg_suface.fill(pygame.Color(0, 0, 0, 28))
winsur.fill((0, 0, 0))
# 文本内容
letter = '1234567890!@#$%^&*qwertyuiopasdfghjklzxcvbnm'
texts = [font.render(letter[i], True, (0, 255, 0)) for i in range(44)]

# 显示设计
column = int(win_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:
            change = pygame.key.get_pressed()
            if change[32]:
                exit()
    # 延时30
    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 > win_height or random.random() > 0.95:
            drops[i] = 0

2)效果展示

静态截图——

代码效果——

打包exe文件——

无需Python无需安装环境,双击即可开始运行程序,谁都可以运行这个代码哦~简单省事。

快发给你们那些朋友装一下吧 哈哈哈哈.jpg 

这里就不展示exe文件了,需要的直接找我拿就好,对了除了exe打包的文件,还有详细的视频

讲解,需要的滴滴我哈。

六、炫酷效果展示

相信大家看过许许多多的关于计算机黑客、骇客、人工智能、AI方面的电影,每当黑客入侵某

个五角大楼,某个网站时,都会出现下面类型的画面,然后就轻而易举的成功入侵夺取管理员

权限了,这时候的我们,心情肯定是激动的无以复加,心里大喊着:666!!!,如果我有这

么厉害的技术就好了!这技术没办法给大家操作,但是类型的炫酷特效给大家演示了一波

除了代码雨比较基础的还能实现包括数字掉落、字符闪烁等效果哦,上面的代码只展示一个简

单的特效项目啦。难的(不会)↓

还能实现↓超酷的好吧~

只要你技术够强,更复杂更难的也在等你来挑战的啦↓

总结

好啦!内容到这里就写完了哈。看完这些内容是不是感受到了一种黑客气息扑面而来~

有没有心动,心动的不如行动,想学习编程的小可爱赶紧行动起来吧~先从最简单的Python编

程语言开始吧~

🎯完整的免费源码领取处:找我吖!文末公众hao可自行领取,滴滴我也可!

🔨推荐往期文章——

项目1.0  超级玛丽

程序员自制游戏:超级玛丽100%真实版,能把你玩哭了~【附源码】

项目1.1   扫雷

 Pygame实战:据说这是史上最难扫雷游戏,没有之一,你们感受下......

项目1.4  水果忍者 

【Pygame实战】风靡全球的切水果游戏升级版“水果忍者”上线啦,你敢来PK嘛?

项目7.0  赛车游戏

【Pygame实战】如果你是赛车爱好者:这款新赛车游戏分分钟让你上瘾(超跑又是谁的梦想?)

项目7.1  虐单身狗游戏

​​​​​​Pygame实战:慎点|虐单身狗的最高境界是…【附源码】

项目1.1  《极速车神打字小游戏》

【Python小游戏】通过这款专为程序员设计的《极限车神》小游戏,你的打字速度可以赢过专业录入员,这个秘密98%的人都不知道哦~(爆赞)

🎄文章汇总——

汇总合集 Python—2022 |已有文章汇总 | 持续更新,直接看这篇就够了

(更多内容+源码都在✨文章汇总哦!!欢迎阅读喜欢的文章🎉~

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顾木子吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值