[python]代码库
def js():
while True:
a=int(input('完毕!按“0”退出程序'))
if a==0:
exit()
print(' ----------------------------------------------------------')
print('|1.参数 |2.二维码生成器 |')
print('|3.猜数游戏 |4.绘图总成 |')
print('|5.作者专属标志(绘画) |6.文字打印机 |')
print('|7.计时器 |8.密码机 |')
print('|9.生成随机树 |10.五子棋 |')
print(' ----------------------------------------------------------')
yhxz=float(input('选择以上功能:'))
if yhxz==1:
import time#导入import.
t=time.strftime('%Y年%m月%d日%H:%M:%S')
print(' ')
print('本程序系基于2.4版本开发的Fei.N.J.纪念版')
print('2.4版本编辑时间: 2021年11月26日18:10:34')
print('Fei.N.J.纪念版编辑时间:2021年12月13日12:13:38')
print(' ')
print(' ')
print('现在的时间是',t)
print(' ')
print('作者Q:2643661328')
print(' ')
print('彩蛋请看:1234彩蛋目录')
print(' ')
print('注:本系统及衍生可能会取代2.5及衍生 ')
js()
if yhxz==1234:
print('404.(不可轻易运行)')
if yhxz==2:
print(' ')
print('1.普通黑白 2.镶彩(需要黑白原码)')
yyds=float(input('选择类型:'))
if yyds==1:
print('输入要保存的文字:')
babq=input()
from MyQR import myqr
myqr.run(babq)
if yyds==2:
print(' ')
dsgl=input('输入与程序同目录的黑白原图链接(即二维码所包含的内容):')
r4gl=input('输入与程序同目录的图片名称(只支持“.jpg”,“.png”,“.bmp”,“.gif”格式;注意名称后要加格式):')
from MyQR import myqr
myqr.run(words=(dsgl),
picture=(r4gl),
colorized=True)
js()
if yhxz==3:
import random
secret=random.randint(1,99)
guess=0
tries=0
print(' ')
print('欢迎进入猜数游戏!')
print('程序已做好准备')
while guess!=secret and tries<10:
guess=int(input('输入你猜的数:'))
if guess<secret:
print(str(guess)+'小了')
elif guess>secret:
print(str(guess)+'大了')
tries=tries+1
if guess==secret:
print('正确')
while True:
a=int(input('完毕!按“0”退出程序'))
if a==0:
break
else:
print('挑战失败,正确的数是'+str(secret))
js()
if yhxz==4:
qwq=int(input('1. 无名 2.'))
if qwq==1:
print(' ')
import turtle#导入turtle.
t=turtle.Pen()#‘t’表示turtle.
print('红:red 粉:pink 橙:orange 黄:yellow 棕:brown 绿:green 青:cyan 蓝:blue 紫:purple 白:white 灰:grey 黑:black')
s1=input('对照上表输入第1画颜色的英文名:')
s2=input('对照上表输入第2画颜色的英文名:')
s3=input('对照上表输入第3画颜色的英文名:')
s4=input('对照上表输入第4画颜色的英文名:')
sd=int(input('选择速度即开始(1-10越大越快;输入0或10以上的数达到极限速度):'))
for i in range(71):#不多不少刚好71.
#以下数值是配套的,如修改最终的形状效果将不同(除颜色代码外).
t.speed(sd)
t.right(60)
t.pencolor(s1)
t.forward(100)
t.left(120)
t.pencolor(s2)
t.forward(100)
t.right(66)
t.pencolor(s3)
t.forward(88)
t.left(77)
t.pencolor(s4)
t.circle(104)
if qwq==2:
import turtle
t=turtle.Pen()
t.setup(675,450,700,90)
t.bgcolor("red")
t.color("yellow","yellow")
t.speed(8)
dian_mia = [(-280,100),(-100,160),(-50,110),(-40,50),(-100,10)]
dian_sth = [0,55,30,5,-30]
for i in range(5):
t.up()
t.goto(dian_mia[i])
t.setheading(dian_sth[i])
t.begin_fill()
for m in range(5):
t.fd(150 if i==0 else 50)
t.right(144)
t.down()
t.end_fill()
t.hideturtle()
t.done()
js()
if yhxz==5:
import turtle
t=turtle.Pen()
t.pensize(20)#粗细
t.left(135)#1
t.forward(280)
t.up()
t.right(135)
t.forward(396)
t.right(135)
t.down()
t.forward(538)#2
t.left(135)
t.forward(365)#3
t.left(135)
t.forward(150)#4
t.right(110)
t.forward(240)#5
t.up()
t.left(180)
t.forward(240)#6
t.left(110)
t.forward(80)#7
t.left(70)
t.down()
t.forward(160)#8
if yhxz==6:
print(' ')
print('1.单项无限刷屏(可能造成系统崩溃) 2.单项自定义刷屏(数据过大可能造成系统崩溃)')
s5=int(input('选择以上功能:'))
if s5==1:
s6=input('输入你要无限刷屏的内容:')
var=1
while var==1:
print(s6)
if s5==2:
s7=input('输入你要无限刷屏的内容:')
s8=int(input('输入你要数量(纯数字):'))
print(s7*s8)
js()
if yhxz==7:
print(' ')
import tkinter
import threading
import time
from1 = tkinter.Tk()
from1.title('计时器')
from1.minsize(400, 400)
isloop = False
var = tkinter.StringVar()
stopid = None
def gettime():
global isloop
global stopid
global star
global fo
elap = time.time() - star
if isinstance(stopid, float):
a = stopid
elap = elap + a
minutes = int(elap / 60)
seconds = int(elap - minutes * 60.0)
hseconds = int((elap - minutes * 60.0 - seconds) * 1000)
var.set('%02d:%02d:%03d' % (minutes, seconds, hseconds))
if isloop == False:
but1['text'] = '继续'
stopid = elap
fo.write('%02d:%02d:%03d' % (minutes, seconds, hseconds) +"\n")
fo.close()
return
from1.after(1, gettime)
def newtask():
global isloop
global star
global fo
if but1['text'] == '开始' or but1['text'] == '继续':
if but1['text'] == '开始':
fo = open("record.txt", "w")
else:
fo = open("record.txt", "a")
but1['text'] = '暂停'
isloop = True
star = time.time()
t = threading.Thread(target=gettime)
t.start()
else:
isloop = False
def clearing():
global isloop
global stopid
isloop = False
stopid = None
var.set('00:00:000')
but1['text'] = '开始'
but1 = tkinter.Button(from1, text='开始', command=newtask)
but1.place(x=95, y=280, width=80, height=50)
but2 = tkinter.Button(from1, text='清零', command=clearing)
but2.place(x=225, y=280, width=80, height=50)
var.set('00:00:000')
lab1 = tkinter.Label(from1, textvariable=var, font=("Arial Bold", 30), foreground="red")
lab1.place(x=110, y=150)
# from1.overrideredirect(1)
from1.attributes("-toolwindow", 1)
from1.mainloop()
js()
if yhxz==8:
print('1.加密 2.(运行错误)解密')
mmj=float(input('选择类型:'))
if mmj==1:
while True:
words = input('请输入要加密的内容:')
ans = int(input('请输入偏移量:'))
if (words == 'break') or(ans == 'break'):
break
code = []
for w in words:
num = ord(w)
code.append(num)
num = num + ans
print(code)
f = open('1.txt', 'w')
res = str(code)
f.write(res)
f.close()
print('加密结果已写入文件!')
js()
if mmj==2:
while True:
code = input('请输入要解密的内容:')
code = eval(code)
ans = int(input('请输入偏移量:'))
words = ''
for num in code:
w = chr(num)
num = num - ans
words = words + w
print('解密的结果为:' + words)
js()
if yhxz==9:
print(' ')
# -*- coding: utf-8 -*-
import tkinter
import sys, random, math
class Point(object):
def __init__(self, x, y):
self.x = x
self.y = y
def __str__(self):
return "<Point>: (%f, %f)" % (self.x, self.y)
class Branch(object):
def __init__(self, bottom, top, branches, level = 0):
self.bottom = bottom
self.top = top
self.level = level
self.branches = branches
self.children = []
def __str__(self):
s = "Top: %s, Bottom: %s, Children Count: %d" % \
(self.top, self.bottom, len(self.children))
return s
def nextGen(self, n = -1, rnd = 1):
if n <= 0: n = self.branches
if rnd == 1:
n = random.randint(n / 2, n * 2)
if n <= 0: n = 1
dx = self.top.x - self.bottom.x
dy = self.top.y - self.bottom.y
r = 0.20 + random.random() * 0.2
if self.top.x == self.bottom.x:
# 如果是一条竖线
x = self.top.x
y = dy * r + self.bottom.y
elif self.top.y == self.bottom.y:
# 如果是一条横线
x = dx * r + self.bottom.x
y = self.top.y
else:
x = dx * r
y = x * dy / dx
x += self.bottom.x
y += self.bottom.y
oldTop = self.top
self.top = Point(x, y)
a = math.pi / (2 * n)
for i in range(n):
a2 = -a * (n - 1) / 2 + a * i - math.pi
a2 *= 0.9 + random.random() * 0.2
self.children.append(self.mkNewBranch(self.top, oldTop, a2))
def mkNewBranch(self, bottom, top, a):
dx1 = top.x - bottom.x
dy1 = top.y - bottom.y
r = 0.9 + random.random() * 0.2
c = math.sqrt(dx1 ** 2 + dy1 ** 2) * r
if dx1 == 0:
a2 = math.pi / 2
else:
a2 = math.atan(dy1 / dx1)
if (a2 < 0 and bottom.y > top.y) \
or (a2 > 0 and bottom.y < top.y) \
:
a2 += math.pi
b = a2 - a
dx2 = c * math.cos(b)
dy2 = c * math.sin(b)
newTop = Point(dx2 + bottom.x, dy2 + bottom.y)
return Branch(bottom, newTop, self.branches, self.level + 1)
class Tree(object):
def __init__(self, root, canvas, bottom, top, branches = 3, depth = 3):
self.root = root
self.canvas = canvas
self.bottom = bottom
self.top = top
self.branches = branches
self.depth = depth
self.new()
def gen(self, n = 1):
for i in range(n):
self.getLeaves()
for node in self.leaves:
node.nextGen()
self.show()
def new(self):
self.leavesCount = 0
self.branch = Branch(self.bottom, self.top, self.branches)
self.gen(self.depth)
print ("leaves count: %d" % self.leavesCount)
def chgDepth(self, d):
self.depth += d
if self.depth < 0: self.depth = 0
if self.depth > 10: self.depth = 10
self.new()
def chgBranch(self, d):
self.branches += d
if self.branches < 1: self.branches = 1
if self.branches > 10: self.branches = 10
self.new()
def getLeaves(self):
self.leaves = []
self.map(self.findLeaf)
def findLeaf(self, node):
if len(node.children) == 0:
self.leaves.append(node)
def show(self):
for i in self.canvas.find_all():
self.canvas.delete(i)
self.map(self.drawNode)
self.canvas.tag_raise("leaf")
def exit(self, evt):
sys.exit(0)
def map(self, func = lambda node: node):
# 遍历树
children = [self.branch]
while len(children) != 0:
newChildren = []
for node in children:
func(node)
newChildren.extend(node.children)
children = newChildren
def drawNode(self, node):
self.line2(
# self.canvas.create_line(
node.bottom.x,
node.bottom.y,
node.top.x,
node.top.y,
fill = "#100",
width = 1.5 ** (self.depth - node.level),
tags = "branch level_%d" % node.level,
)
if len(node.children) == 0:
# 画叶子
self.leavesCount += 1
self.canvas.create_oval(
node.top.x - 3,
node.top.y - 3,
node.top.x + 3,
node.top.y + 3,
fill = "#090",
tag = "leaf",
)
self.canvas.update()
def line2(self, x0, y0, x1, y1, width = 1, fill = "#000", minDist = 10, tags = ""):
dots = midDots(x0, y0, x1, y1, minDist)
dots2 = []
for i in range(len(dots) - 1):
dots2.extend([dots[i].x,
dots[i].y,
dots[i + 1].x,
dots[i + 1].y])
self.canvas.create_line(
dots2,
fill = fill,
width = width,
smooth = True,
tags = tags,
)
def midDots(x0, y0, x1, y1, d):
dots = []
dx, dy, r = x1 - x0, y1 - y0, 0
if dx != 0:
r = float(dy) / dx
c = math.sqrt(dx ** 2 + dy ** 2)
n = int(c / d) + 1
for i in range(n):
if dx != 0:
x = dx * i / n
y = x * r
else:
x = dx
y = dy * i / n
if i > 0:
x += d * (0.5 - random.random()) * 0.25
y += d * (0.5 - random.random()) * 0.25
x += x0
y += y0
dots.append(Point(x, y))
dots.append(Point(x1, y1))
return dots
if __name__ == "__main__":
root = tkinter.Tk()
root.title("Tree")
gw, gh = 800, 600
canvas = tkinter.Canvas(root,
width = gw,
height = gh,
)
canvas.pack()
tree = Tree(root, canvas, Point(gw / 2, gh - 20), Point(gw / 2, gh * 0.2), \
branches = 2, depth = 8)
root.bind("n", lambda evt: tree.new())
root.bind("=", lambda evt: tree.chgDepth(1))
root.bind("+", lambda evt: tree.chgDepth(1))
root.bind("-", lambda evt: tree.chgDepth(-1))
root.bind("b", lambda evt: tree.chgBranch(1))
root.bind("c", lambda evt: tree.chgBranch(-1))
root.bind("q", tree.exit)
root.mainloop()
js()
if yhxz==404:
print(' #*警告*#')
print('运行本程序的后果(可能使设备报废)由用户全部承担,作者概不负责!')
bd=int(input('0.退出 1.运行'))
if bd==0:
js()
if bd==1:
oapd=int(input('输入密码:'))
if oapd!=7086540885201314430524200808151356:
while True:
a=int(input('密码错误,按“0”退出程序'))
if a==0:
exit()
if oapd==7086540885201314430524200808151356:
import os
var=1
while var==1:
os.system("start cmd")
if yhxz==10:
import pygame
from pygame.locals import *
pygame.init()
# 导入pygame模块
print(pygame.ver)
# 检查pygame的版本,检查pygame有没有导入成功
EMPTY = 0
BLACK = 1
WHITE = 2
# 定义三个常量函数,用来表示白棋,黑棋,以及 空
black_color = [0, 0, 0]
# 定义黑色(黑棋用,画棋盘)
white_color = [255, 255, 255]
# 定义白色(白棋用)
# 定义棋盘这个类
class RenjuBoard(object):
def __init__(self):
# self._board = board = [[EMPTY] * 15 for _ in range(15)]
# 将棋盘每一个交叉点都看作列表的一个元素位,一共有15*15共225个元素
self._board = [[]] * 15
self.reset()
#重置棋盘
def reset(self):
for row in range(len(self._board)):
self._board[row] = [EMPTY] * 15
#定义棋盘上的下棋函数,row表示行,col表示列,is_black表示判断当前点位该下黑棋,还是白棋
def move(self, row, col, is_black):
if self._board[row][col] == EMPTY:
self._board[row][col] = BLACK if is_black else WHITE
return True
return False
# 给棋盘定义一个函数将自己在screen上面画出来,使用pygame.draw()函数。并且顺便将下了的棋子也画出来
def draw(self, screen):
for h in range(1, 16):
pygame.draw.line(screen, black_color,[40, h * 40], [600, h * 40], 1)
pygame.draw.line(screen, black_color,[h * 40, 40], [h * 40, 600], 1)
# 给棋盘加一个外框,使美观
pygame.draw.rect(screen, black_color, [36, 36, 568, 568], 3)
# 在棋盘上标出,天元以及另外4个特殊点位
pygame.draw.circle(screen, black_color, [320, 320], 5, 0)
pygame.draw.circle(screen, black_color, [160, 160], 3, 0)
pygame.draw.circle(screen, black_color, [160, 480], 3, 0)
pygame.draw.circle(screen, black_color, [480, 160], 3, 0)
pygame.draw.circle(screen, black_color, [480, 480], 3, 0)
#做2次for循环取得棋盘上所有交叉点的坐标
for row in range(len(self._board)):
for col in range(len(self._board[row])):
# 将下在棋盘上的棋子画出来
if self._board[row][col] != EMPTY:
ccolor = black_color \
if self._board[row][col] == BLACK else white_color
# 取得这个交叉点下的棋子的颜色,并将棋子画出来
pos = [40 * (col + 1), 40 * (row + 1)]
# 画出棋子
pygame.draw.circle(screen, ccolor, pos, 18, 0)
# 定义函数,传入当前棋盘上的棋子列表,输出结果,不管黑棋白棋胜,都是传回False,未出结果则为True
def is_win(board):
for n in range(15):
# 判断垂直方向胜利
flag = 0
# flag是一个标签,表示是否有连续以上五个相同颜色的棋子
for b in board._board:
if b[n] == 1:
flag += 1
if flag == 5:
print('黑棋胜')
return False
else:
# else表示此时没有连续相同的棋子,标签flag重置为0
flag = 0
flag = 0
for b in board._board:
if b[n] == 2:
flag += 1
if flag == 5:
print('白棋胜')
return False
else:
flag = 0
# 判断水平方向胜利
flag = 0
for b in board._board[n]:
if b == 1:
flag += 1
if flag == 5:
print('黑棋胜')
return False
else:
flag = 0
flag = 0
for b in board._board[n]:
if b == 2:
flag += 1
if flag == 5:
print('白棋胜')
return False
else:
flag = 0
# 判断正斜方向胜利
for x in range(4, 25):
flag = 0
for i,b in enumerate(board._board):
if 14 >= x - i >= 0 and b[x - i] == 1:
flag += 1
if flag == 5:
print('黑棋胜')
return False
else:
flag = 0
for x in range(4, 25):
flag = 0
for i,b in enumerate(board._board):
if 14 >= x - i >= 0 and b[x - i] == 2:
flag += 1
if flag == 5:
print('白棋胜')
return False
else:
flag = 0
#判断反斜方向胜利
for x in range(11, -11, -1):
flag = 0
for i,b in enumerate(board._board):
if 0 <= x + i <= 14 and b[x + i] == 1:
flag += 1
if flag == 5:
print('黑棋胜')
return False
else:
flag = 0
for x in range(11, -11, -1):
flag = 0
for i,b in enumerate(board._board):
if 0 <= x + i <= 14 and b[x + i] == 2:
flag += 1
if flag == 5:
print('白棋胜')
return False
else:
flag = 0
return True
def main():
# 创建棋盘对象
board = RenjuBoard()
# 用于判断是下黑棋还是白棋
is_black = True
# pygame初始化函数,固定写法
pygame.init()
pygame.display.set_caption('五子棋') # 改标题
# pygame.display.set_mode()表示建立个窗口,左上角为坐标原点,往右为x正向,往下为y轴正向
screen = pygame.display.set_mode((640,640))
# 给窗口填充颜色,颜色用三原色数字列表表示
screen.fill([125,95,24])
board.draw(screen) # 给棋盘类发命令,调用draw()函数将棋盘画出来
pygame.display.flip() # 刷新窗口显示
running = True
# while 主循环的标签,以便跳出循环
while running:
# 遍历建立窗口后发生的所有事件,固定写法
for event in pygame.event.get():
# 根据事件的类型,进行判断
if event.type == pygame.QUIT:
running = False
pygame.quit()
elif event.type == pygame.KEYUP:
pass
# pygame.MOUSEBUTTONDOWN表示鼠标的键被按下
elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:# button表示鼠标左键
x, y = event.pos # 拿到鼠标当前在窗口上的位置坐标
# 将鼠标的(x, y)窗口坐标,转化换为棋盘上的坐标
row = round((y - 40) / 40)
col = round((x - 40) / 40)
if board.move(row, col, is_black):
is_black = not is_black
screen.fill([125, 95, 24])
board.draw(screen)
pygame.display.flip()
# 调用判断胜负函数
if not is_win(board):
#break
running = False
# 这里我有个bug没找到解决办法,就是判断出胜负后,使用break跳出事件遍历的for循环,但是老是不能跳出来,导致胜负分出来了还可以继续下,这里我采用判断胜负后就将running标签赋值为False,跳出主循环,但是这样棋盘的窗口也没了。明天再找找bug在哪
if __name__ == '__main__':
main()
js()
初级程序员
by: 尾翼稳定脱壳穿甲弹 发表于:2022-01-17 11:46:22 顶(1) | 踩(1) 回复
本程序使用了站内一些大神的代码,如有不适请联系删除。
回复评论