樱花飘落代码Python
时间: 2023-05-27 14:07:08 浏览: 212
以下是一个简单的樱花飘落的Python代码:
```python
import random
import curses
from itertools import cycle
# 初始化游戏窗口
curses.initscr()
curses.curs_set(0)
win = curses.newwin(curses.LINES, curses.COLS, 0, 0)
win.nodelay(1)
win.keypad(1)
curses.noecho()
curses.cbreak()
# 定义樱花字符和颜色
sakura_chars = cycle(['❀', '✿', '❁', '✾', '❃'])
sakura_colors = cycle([
curses.COLOR_RED,
curses.COLOR_MAGENTA,
curses.COLOR_CYAN,
curses.COLOR_WHITE,
curses.COLOR_YELLOW
])
# 定义樱花的类
class Sakura:
def __init__(self, x, y):
self.x = x
self.y = y
self.char = next(sakura_chars)
self.color = next(sakura_colors)
self.speed = random.randint(1, 5)
def drop(self):
self.y += self.speed
if self.y >= curses.LINES - 1:
self.y = 0
self.x = random.randint(0, curses.COLS - 1)
self.char = next(sakura_chars)
self.color = next(sakura_colors)
self.speed = random.randint(1, 5)
def draw(self):
win.addstr(int(self.y), int(self.x), self.char, curses.color_pair(self.color))
# 初始化颜色
curses.start_color()
for i in range(1, curses.COLORS):
curses.init_pair(i, i, curses.COLOR_BLACK)
# 创建樱花列表
sakuras = []
for i in range(100):
sakuras.append(Sakura(random.randint(0, curses.COLS - 1), random.randint(0, curses.LINES - 1)))
# 游戏循环
while True:
# 处理输入事件
key = win.getch()
if key == ord('q'):
break
# 清空屏幕
win.erase()
# 飘落樱花
for sakura in sakuras:
sakura.drop()
sakura.draw()
# 刷新屏幕
win.refresh()
# 清理游戏窗口
curses.nocbreak()
win.keypad(0)
curses.echo()
curses.endwin()
```
运行该代码,会出现一个全屏的樱花飘落效果。用户可以按下`q`键退出游戏。
请注意,该代码需要在终端中运行,而不是在IDLE或者其他IDE中。