最简在线搭建Python运行平台源代码免费打包下载

不需要任何服务器技术,由skulpt.org提供的js文件即可把Python代码转换成javascript代码,从而让在线运行python代码成为可能。这并不是后端技术,而是前端!所以不需要组建web服务器。在本地只要直接用web浏览器打开index.html,这个首页文件,即可在文本框中输入Python代码,以下是运行效果。程序中导入了海龟模块。

所有源代码打包下载网址:

链接:https://pan.baidu.com/s/1zIvjpJBHhqys7GkfWGaPdw
提取码:h03m

import turtle

t = turtle.Turtle()

t.color("red")

for i in range(8):
   t.forward(200)
   t.right(45) 

发表在 python | 最简在线搭建Python运行平台源代码免费打包下载已关闭评论

新型冠状病毒泡泡堂游戏.py


游戏下载网址:
链接:https://pan.baidu.com/s/1F359-kUuGHYznrjXPfZoxw
提取码:fne9

"""
   新型冠状病毒泡泡堂游戏.py
   本程序借用了pygame的混音器模块,所以需要安装pygame模块。
   需要精灵模块1.33版支持请卸载老版本,重新安装最新版本的精灵模块。
   程序中迷宫房间是画出来的,当然虫子是不能穿越过去,也不能碰到病毒...
   按上下左右键操作虫子移动,按空格键放炸弹。
"""

from sprites import * 
from pygame import mixer

def draw_frame(obj,margin):
    """用obj角色画边框,margin为边距
       本函数用for循环直接画一个正方形也可以。
    """
    sw = obj.screen.window_width()
    sh = obj.screen.window_height()
    bug.topleft()            # 移到左上角
    bug.addy(-margin)   
    x,y = bug.position()  
    cors = [(x+sw,y),(x+sw,y+margin),(x,y+margin)]
    f1 = bug.polygon(cors)
    
    bug.bottomleft()         # 移到左下角      
    x,y = bug.position()  
    cors = [(x+sw,y),(x+sw,y+margin),(x,y+margin)]
    f2 = bug.polygon(cors)
    
    bug.addy(margin)    
    x,y = bug.position()  
    cors = [(x+margin,y),(x+margin,y+(sh-2*margin)),(x,y+(sh-2*margin))]
    f3 = bug.polygon(cors)

    bug.addx(sw-margin)    
    x,y = bug.position()  
    cors = [(x+margin,y),(x+margin,y+(sh-2*margin)),(x,y+(sh-2*margin))]
    f4 = bug.polygon(cors)
    return [f1,f2,f3,f4]

def draw_cross(obj,length):
    """画十字架"""
    d = length/2
    bug.goto(-d,d)
    x,y = bug.position()
    cors = [(x+length,y),(x+length,y+2*length),(x,y+2*length)] 
    p1 = bug.polygon(cors)

    bug.goto(-d-2*length,-d)
    x,y = bug.position()
    cors = [(x+5*length,y),(x+5*length,y+length),(x,y+length)] 
    p2 = bug.polygon(cors)
    
    bug.goto(-d,-d-2*length)    
    x,y = bug.position()
    cors = [(x+length,y),(x+length,y+2*length),(x,y+2*length)] 
    p3 = bug.polygon(cors)
    return [p1,p2,p3]
    
def draw_squares(obj,length):
    """画4个正方形"""
    items = []
    for _ in range(4):
        i = bug.polygon(4,length)
        items.append(i)
        bug.fd(length*5)
        bug.rt(90)
    return items

width = 800
height = 600
screen = Screen()
screen.bgcolor('black')
screen.setup(width,height)
screen.title('新型冠状病毒泡泡堂游戏')
screen.bgpic('封面.png')

leftkey = Key('Left')
rightkey = Key('Right')
upkey = Key('Up')
downkey = Key('Down')
spacekey = Key('space')
screen.listen()

PlaySound('audios/泡堂开场音乐.wav',SND_ASYNC)
starttime = time.time()
while time.time() - starttime < 6 :
    screen.update()
    if spacekey.down():break
screen.bgpic('nopic')
PlaySound(None,SND_PURGE)
PlaySound('audios/泡泡堂小区音乐.wav',SND_ASYNC|SND_LOOP)

mixer.init()                      # 初始化混音器
bombsound = mixer.Sound('audios/BOMB1.wav')
placesound = mixer.Sound('audios/zoop.wav')

bomb = Sprite('bombs',visible=False)
bomb.scale(0.5)

以下代码省略......

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 新型冠状病毒泡泡堂游戏.py已关闭评论

强大的多边形命令.py


以下是部分代码预览:

"""
   强大的多边形命令.py
   本命令为精灵模块1.33版支持。
   角色的多边形命令支持按坐标点画多边形,也支持根据边数和边长与角色方向画正多边形。
   本程序运行后,所有多边形会绕原点旋转。
"""
from sprites import *

screen = Screen()
screen.bgcolor('black')

bug = Sprite()                                        
x,y = bug.pos()
# 下面是指定多边形的其它顶点画多边形
cors = [(x+100,y),(x+100,y+100)]
p1 = bug.polygon(cors,10,'red','green') # 第一个顶点是角色的坐标,10是线宽
print('这个多边形项目编号为',p1)

# 下面都是画正多边形
bug.goto(-100,100)
bug.color('red','yellow')               # 设置画笔颜色为红,填充颜色为黄
p2 = bug.polygon(4,100)                 # 画正方形

bug.pensize(10)                         # 画笔粗细
bug.goto(-200,-200)                     # 定位到坐标
bug.color('blue','cyan')
p3 = bug.polygon(5,150)                 # 画正五边形,边长为150

bug.goto(200,-200)                      # 坐标定位到(200,-200)
bug.color('','magenta')                 # 画笔颜色为空,则为透明
p4 = bug.polygon((8,80))                # 所以这个8边形没有边框颜色 

bug.goto(200,200)                       # 坐标定位到(200,-200)
bug.randomcolor()                       # 随机一种颜色
bug.left(45)                            # 左转45度
# 不加参数画边数为3-12,边长为10-50的倾斜度为角色方向的随机正多边形
p5 = bug.polygon()

# 下面的代码是让画的多边形们绕中心点旋转

以下代码省略......

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 强大的多边形命令.py已关闭评论

海龟画图原理类Pointer类

以下是部分代码预览。

"""
  海龟画图原理类Pointer类,
  本程序提供Pointer类,它的移动方式和海龟一样,
  这个程序抽象出Python海龟画图最基本的原理以肆读者。
  
"""

__author__ = '李兴球'
__date__ = '2020/03/30'
__blog__ = 'www.lixingqiu.com'

import math

class Pointer:
    def __init__(self,pos=(0,0),angle=0):
        """
           初始化方法,pos:坐标,angle:角度
        """
        self._angle = angle        # 朝向,也就是和x轴的夹角angle
        self._pos = pos            # 初始坐标               
        
    def setheading(self,angle):
        """设置朝向"""
        self._angle = angle
        
    def heading(self):
        """返回朝向"""
        return self._angle
    
    def right(self,dangle):
        """右转dangle度"""
        self._angle -= dangle
        self.setheading(self._angle)

    def left(self,dangle):
        """左转dangle度"""
        self.right(-dangle)        

    def position(self):
        """返回坐标"""
        return self._pos
    
    def goto(self,x,y=None):
        """到某坐标"""
        if y == None:
            self._pos = x[0],x[1]
        else:
            self._pos = x,y
        
    以下代码省略......



def main():
   """主要执行函数"""
   n = 6
   pos = (100,100)
   angle = 0 
   t = Pointer(pos,angle)           # 实例化一个指针
   points = []                      # 收集坐标点的列表
   for _ in range(n):
       points.append(t.position())  # 把指针当前坐标加到列表
       t.forward(100)               # 指针前进100个单位
       t.left(360/n)                # 指针左转360/n度 
   print(points)
   # 下面新建海龟把每个坐标点都打印出来
   x = Turtle()
   x.penup()
   for p in points:
       x.goto(p)
       x.dot(10)
   x.screen.mainloop()

if __name__ == "__main__":
    
    from turtle import *
    main() 

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, turtle | 海龟画图原理类Pointer类已关闭评论

已知正多边形一个顶点,边数,边长,求其它顶点坐标算法


以下是部分代码预览:

"""
   已知正多边形一个顶点,边数,边长,求其它顶点坐标算法。
   主要步骤:求出中心点坐标,然后把向量依次旋转。
   读者可以把它封装成一个函数。
"""
import math
from turtle import Vec2D

n = 6                           # 边数
degree = 360 / n                # 外角
length = 100                    # 边长
x1,y1 = 100,100                 # 第一个顶点坐标
OA = Vec2D(x1,y1)               # 第一个顶点坐标向量

a = math.radians(90 - 180/n)    # 第一个顶点角度
d = length/2
b = math.tan(a) * d

OC = Vec2D(x1+d,y1+b)           # 中心点向量
OB = Vec2D(x1+d,y1)
AB = OB - OA                    # AB向量等于OB - OA
BC = OC - OB                    # BC向量等于OC-OB
CA = -AB - BC                   # AC向量等于AB+BC

以下代码省略.....................

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, turtle | 已知正多边形一个顶点,边数,边长,求其它顶点坐标算法已关闭评论

神笔马良之旋转之框.py


以下是部分代码预览:

"""
   神笔马良之旋转之框.py
   画一个图形,让它移动或旋转有多种方法,这里提供一个较少见的方法。
   这种方法并不需要擦除原来的图形,再重画,所以效果更好。
   本程序画一个正方形,然后让它旋转起来。
   程序中用到了2D向量操作,并不适合小学生学习,推荐中学以上学生阅读。
   程序中的Vec2D类来自于海龟模块。每个向量都有rotate方法,能让向量旋转。
   通过重新配置item的坐标,所以项目就是旋转了的。
   Vec2D类的详情请打开turtle.py文件查找class Vec2D,找到后阅读源码以更更好理解。
"""
from sprites import *                # 从精灵模块导入所有命令

screen = Screen()                    # 新建屏幕 

bug = Sprite()                       # 新建虫子角色
#bug.goto(100,100)                    # 定位到坐标(100,100)
bug.pensize(20)                      # 画笔尺寸为20
bug.pencolor('red')                  # 画笔颜色为红色

bug.pendown()                        # 落笔
for _ in range(4):                   # 重复4次
    bug.fd(100)                      # 前进150个单位
    bug.rt(90)                       # 右转90度
bug.penup()                          # 抬笔 

center = Vec2D(50,-50)               # 转为2D向量,旋转中心 
frame = bug.items[0]                 # 框的编号(角色移动后形成的项目)
angle = 0                            # 项目旋转的角度
rawpoints = screen._pointlist(frame) # 项目的各个原始坐标列表

这里的代码省略了.....

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 神笔马良之旋转之框.py已关闭评论

椭圆之梦.py(简易画斜椭圆)

"""
   椭圆之梦.py
   椭圆有什么梦想呢?运行下程序就知道了
   本程序会随机在屏幕上画椭圆。
   这些椭圆大小不一,颜色不一样,
   斜度也不一样,边框厚度也不一样。
   本程序有轻快的适于此动画的配音。
   给程序配音也是要花时间的哦,所以虽然程序或许简单,
   但它背后一样有付出,莫道君行早,还有早行人。
"""

from sprites import *           # 从精灵模块导入所有命令

screen = Screen()               # 新建屏幕对象
screen.tracer(0)                # 关闭自动刷新
screen.bgcolor('black')         # 设定背景为黑色
screen.title('椭圆之梦')        # 设定窗口标题

PlaySound('胡伟立 - 轻快.wav',SND_ASYNC|SND_LOOP)

bug = Sprite(visible=False)     # 新建虫子角色

以下代码省略...............

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 椭圆之梦.py(简易画斜椭圆)已关闭评论

tkinter旋转多边形示例

"""
   tkinter旋转多边形示例,tkinter rotate polygon example
   本程序会画一个蓝色正方形,然后按住鼠标去旋转它。
"""
import math
from tkinter import *

canvas = Canvas(width=200, height=200)         # 新建画布
canvas.pack()

# 坐标点
xy = [(50,50),(150,50),(150, 150),(50,150)]
item = canvas.create_polygon(xy,fill='blue')

center = 100, 100

def getangle(event):
    dx = canvas.canvasx(event.x) - center[0]
    dy = canvas.canvasy(event.y) - center[1]
    try:
        return complex(dx, dy)/abs(complex(dx, dy))
    except ZeroDivisionError:
        return 0.0 

def press(event):
    """单击左键绑定的函数"""
    global start
    start = getangle(event)

def motion(event):    
    """计算相对于初始角的角度"""
    global start
    angle = getangle(event) / start
    offset = complex(center[0], center[1])
    newxy = []
    for x, y in xy:
        v = angle * (complex(x, y) - offset) + offset
        newxy.append(v.real)
        newxy.append(v.imag)
    canvas.coords(item, *newxy)          # 重新配置坐标

canvas.bind("", press)         # 绑定鼠标左键单击事件
canvas.bind("", motion)       # 绑定鼠标左键移动事件 

mainloop()

发表在 python, tkinter | tkinter旋转多边形示例已关闭评论

小虫子的冒险


以下是部分代码预览:

"""
   小虫子的冒险.py
   这是一个迷宫类型的小游戏。
   用上下左右键操作方向箭头指挥虫子进入小方块即成功。
   虫子是不能越穿“墙壁”的,当然也不能碰到左右或上下移动蓝色圆点。
"""
from sprites import *              # 从精灵模块导入所有命令

screen = Screen()                  # 新建屏幕对象
screen.setup(480,360)              # 设置屏幕宽高
screen.title('小虫子的冒险')       # 设定标题

square = Sprite(shape='square')    # 新建方块
square.color('blue','')
square.goto(175,45)
square.scale(2)

# 下面的代码是画迷宫地图
bug = Sprite(visible=True)         # 新建虫子角色
bug.scale(0.5)
bug.pensize(4)
bug.goto(-220,120)
bug.pendown()
bug.fd(100)
bug.right(90)
bug.fd(150)
bug.left(90)
bug.fd(50)
bug.left(90)
bug.fd(200)
bug.right(90)
bug.fd(220)
bug.right(90)
bug.fd(100)
bug.left(90)
bug.fd(50)
bug.right(90)
bug.fd(50)
bug.right(90)
bug.fd(50)
bug.left(90)
bug.fd(150)
bug.right(90)
bug.fd(370)
bug.right(90)
bug.fd(250)
line = bug.items[0]        # 在没抬笔之前获取所画线条的编号
bug.penup()
bug.goto(-170,10)                  # 定位到初始坐标 

dot1 = Sprite(shape='circle')      # 新建角色叫圆点1
dot1.scale(0.5)
dot1.color('blue')

dot2 = Sprite(shape='circle',pos=(0,-50))
dot2.scale(0.5)
dot2.color('blue')
dot2.setheading(90)

dot3 = Sprite(shape='circle',pos=(0,-100))
dot3.scale(0.5)
dot3.color('blue')

dot4 = Sprite(shape='circle',pos=(100,-100))
dot4.scale(0.5)
dot4.color('blue')
dot4.setheading(90)

dots = [dot1,dot2,dot3,dot4]
# 每个点的项目编号存在dotsitems列表中
dotsitems = [dot1.turtle._item,dot2.turtle._item,
             dot3.turtle._item,dot4.turtle._item]

leftkey = Key('Left')                     # 新建左方向箭头
rightkey = Key('Right')                   # 新建右方向箭头
upkey = Key('Up')                         # 新建上方向箭头
downkey = Key('Down')                     # 新建下方向箭头

这里的代码省略了............................

bug.stamp()                              # 虫子盖图章
square.stamp()                           # 方块盖图章 
square.hide()                            # 方块隐藏
square.home()                            # 方块回家
square.write2('成 功')                   # 显示成功二字
screen.mainloop()                        # 进入屏幕主循环

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 小虫子的冒险已关闭评论

植物大战僵尸之豌豆射手.py

以下是部分代码预览:


"""
   植物大战僵尸之豌豆射手.py
"""
from sprites import *                             # 从精灵模块导入所有命令

screen = Screen()                                 # 新建屏幕
screen.setup(640,480)                             # 设定屏幕宽高 
screen.bgpic('院子.png')                          # 设定背景图片
screen.title('植物大战僵尸之豌豆射手.py')         # 设定窗口标题

peas1 = Sprite(shape='peas',pos=(-200,0))         # 新建角色

bullet = Sprite(shape='豌豆.png',visible=False,tag='peas') # 新建子弹
ps = Group('peas')                                 # 新建一个组,标签为peas
counter = 0                                        # 新建计数器 

此处代码省略.....
    

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 植物大战僵尸之豌豆射手.py已关闭评论

三角函数之正弦余弦教学演示

"""
   三角函数之正弦教学演示.py
"""
from sprites import *

ft = ('Arail',18,'normal')

s = Sprite(shape='sincab.png',pos=(0,-150))

d = Sprite(visible=False)

w = Sprite(visible=False)
w.draw_grid2(4,4,200,200)

line = Sprite(shape='line')
line.scale(2)
以下代码省略......

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 三角函数之正弦余弦教学演示已关闭评论

逐渐显图姑娘

"""
  逐渐显图姑娘.py
  本程序会慢慢的把一位姑娘的图形显示出来,然后有箭头指示相关文字。
  但是,这并不是我女朋友哦,图片是从网上下载的。本程序有配音。
"""
from sprites import *

PlaySound('faded.wav',SND_ASYNC)


此处代码省略.....


p = Sprite(shape='pointer',visible=False,pos=(100,100))
p.color('white')
p.setheading(225)
for x in range(6):
    p.show()
    p.write("my girl friend",font=('黑体',14,'normal'))
    p.wait(0.6)
    p.hide()
    p.clear()
    p.wait(0.6)
p.clear()

p.goto(-100,100)
p.setheading(-45)
for x in range(6):
    p.show()
    p.write("今天是你的生日",align='right',font=('黑体',14,'normal'))
    p.wait(0.6)
    p.hide()
    p.clear()
    p.wait(0.6)
p.clear()


p.goto(0,150)
p.setheading(-90)
for x in range(6):
    p.show()
    p.write("祝你生日快乐",align='center',font=('黑体',14,'normal'))
    p.wait(0.6)
    p.hide()
    p.clear()
    p.wait(0.6)
p.clear()
 
w.home()
w.shape('th.png')
w.rotatemode(2)
w.show()
w.clear()
w.setheading(90)
for x in range(8):
    girl = w.stamp()
    
    
while True:
    w.clearstamps(1)
    w.fd(4)
    w.stamp()
    w.bounce_on_edge()
    time.sleep(0.1)

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 逐渐显图姑娘已关闭评论

自制绘图版.py

"""
   自制画板.py

   假设屏幕的名称为screen,屏幕是有右键菜单的,菜单的每个项目都有索引号。
   索引号从0开始。当屏幕新建时,单击右键并不会显示出来。我们可以通过
   screen.addpopup()让右键菜单绑定鼠标右键,这样就能通过单击鼠标右键显示菜单了。
   如果不需要它,可以通过screen.removepopup() 命令可移除。
   
   screen有popup属性,它有add_command命令可以增加菜单项目,
   有entryconfig命令,可根据索引号配置现有的菜单项目。
   有delete命令可以根据索引号删除一个菜单项目。
      
   本程序主要演示如何显示与移除右键菜单项目。
   还要学习如何配置现有的项目项目,以及如何增加新的右键菜单项目。
"""
from sprites import *               # 从精灵模块导入所有命令
    
screen = Screen()                   # 新建屏幕
screen.bgcolor('yellow')            # 背景颜色为黄色
screen.titlebar(False)              # 隐藏标题栏
screen.draggable()                  # 按中键可拖动窗口
screen.addpopup()                   # 绑定右键菜单

t = Sprite()                        # 新建角色

# 配置索引为0的菜单项目

以下代码省略...............

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 自制绘图版.py已关闭评论

雷电射击游戏_python精灵模块简版



"""
   雷电射击游戏_精灵模块简版
   本程序需要Python精灵模块V1.31以上版本支持,
   作者:李兴球 @ 2020/3/16
   本程序的所有敌机是图章,它们可以移动,使用overlap_with进行碰撞检测.....
"""
from sprites import *                          # 从精灵模块导入所有命令 

enemies_amounts = 200                          # 敌机数量
title = '雷电射击游戏_精灵模块简版'
bgs = ['res/w1.png','res/w2.png','res/w3.png']
exps = ['res/explosion0.png','res/explosion1.png']

screen = Screen()                              # 新建屏幕
screen.setup(960,720)                          # 设定屏幕宽高 
screen.tracer(0,0)                             # 关闭自动刷新和绘画版时
screen.title(title)                            # 设定屏幕所在窗口标题

PlaySound('res/Tragedy Flame.wav',SND_ASYNC|SND_LOOP)

index = 0                                      # 定义变量,做为背景表的索引 
def alt_background():
    global index
    screen.bgpic(bgs[index])                   # 设定背景图片
    index = index + 1                          # index增加1 
    index = index % 3                          # index对3求余
    screen.ontimer(alt_background,50)          # 50毫秒后再次运行函数
alt_background()

plane = Sprite(shape='res/敌机1.png',pos=(0,720))
for _ in range(enemies_amounts):               # 这里生成一定数量的敌机 
    x = random.randint(-480,480)
    y = random.randint(720,5440)
    plane.goto(x,y)
    plane.stamp()

bs = Group('zd')                               # 新建bs组,它们的标签为zd

def shoot():
    if framecounter % 3 == 0 :
        bullet = Sprite(shape='circle',visible=False,tag='zd')
        bullet.color('yellow')
        bullet.scale(0.5)
        bullet.goto(player.pos())
        bullet.show()

player = Sprite(shape='res/thunder.png')      # 玩家操作的飞机
player.scale(0.5)
player.sety(-240)

leftkey = Key('a')                            # 新建a键
rightkey = Key('d')                           # 新建d键
upkey = Key('w')                              # 新建w键 
downkey = Key('s')                            # 新建s键
shootkey = Key('j')                           # 新建j键
screen.listen()                               # 监听屏幕

w = Sprite(visible=False)                     # 在屏幕上写分数的角色
w.addy(200)

score = 0                                     # 得分
clock = Clock()                               # 新建时钟对象
framecounter = 0                              # 帧计数器
enemies = plane.stampItems                    # 给plane的图章列表取别名为enemies


以下代码省略......................

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 雷电射击游戏_python精灵模块简版已关闭评论

AI自动打砖块游戏

AI就是人工智能的简称。这是一个无人参与游戏,游戏玩家是计算机本身。
在轻快的背景音乐下,计算机玩得可嗨了。我们人类成了旁观者。
在越来越多的行业,人类是不是也要成为旁观者呢?
小小打砖块,蕴涵大智慧,未来属于有灵魂的人工智能!

"""
   AI自动打砖块游戏,
   屏幕由画布和水平滚动条及垂直滚动条组成。
   屏幕上所有项目其实都有一个编号。可以用屏幕的cv属性获取画布对象。
   画布有相关方法可以对它上面的项目进行操作,如删除一个项目甚至移动一个项目。
   本课主要学习的内容是从总体上理解程序即可。
"""
import math                                     # 导入数学模块
from sprites import *                           # 从精灵模块导入所有命令

#PlaySound('背景音乐.wav',SND_ASYNC|SND_LOOP)    # 播放背景音乐
width,height = 800,600                          # 定义屏幕宽高变量
screen = Screen()
screen.setup(width,height)                      # 设定屏幕宽高
screen.bgpic('800x600.png')                     # 设定背景图片  
screen.title('AI自动打砖块游戏')                # 设定标题

board = Sprite(shape='square')                  # 这做为拦板
board.color('red','cyan')                       # 拦板的边框和填充颜色
board.shapesize(0.5,5,3)                        # 缩放拦板 
board.speed(1)                                  # 拦板移动速度为1
board.goto(0,-200)                              # 拦板初始坐标定位

ball = Sprite(1)                                # 新建小球角色
ball.setheading(-45)                            # 面向-45度方向

brick = Sprite(visible=False)                   # 新建砖块角色
brick.color('red','brown')                      # 砖块的颜色
rect = -width/2,width/2,50,250                  # 砖块随机移动的矩形范围 
bricks = []                                     # 所有砖块项目表
compute = True                                  # 决定是否要计算拦板x坐标的逻辑变量

以下代码省略......

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | AI自动打砖块游戏已关闭评论

吃豆小虫迷宫游戏

古有吃豆小人,今有吃豆小虫。皆为程序代码,今之吃豆小虫,乃派森之程序。
运行此程序,按上下左右箭操作小虫即可吃豆。吃完所有豆豆,显示Game over。

"""
   吃豆小虫.py
   本程序有一个外置模块叫mazemake。这个模块中有一个叫make_image的函数。
   它能生成图像,可以有边框,图像的颜色和边框厚度与颜色都是可以设置的。
   
   它还有一个make_maze能把一个文本文件转换成一个迷宫。
   迷宫的砖块都是用一张图片做为角色,让角色所盖的图章。
   需要相关的知识为图章列表,它的名字叫stampItems。
   这个stampItems存储了角色所盖的所有图章的编号。
   make_maze函数返回屏幕对象以及角色对象和没有盖图章的所有坐标点。
   
   本程序还要理解find_overlapping中排除参数的用法。
   角色的find_overlapping是查找所有和它有矩形重叠的项目编号。
   如果想让角色不对某些项目进行碰撞检测,那么可以加一个参数,这叫排除参数。
   排除参数可以是列表或元组,也可以是一个整数,或者一个字符串。
   如果是列表或元组,则遍历它。把每个号码都进行排除。
   如果是整数,直接把这个号码排除。
   如果是字符串,则认为是某类角色的标签,会把这一类角色的编号都进行排除。
"""
from sprites import *                   # 从精灵模块导入所有命令
from mazemake import *                  # 从迷宫生成模块导入所有命令

pic = make_image(50,50)                 # 生成50x50的图像  
pic.save('c:/a.png')                    # 保存图像
screen,square,nullcors = make_maze('maze.txt','c:/a.png')

bean = Sprite(shape='circle',visible=False) # 新建豆子角色,用盖图章的方法产生豆子
bean.color('green')
bean.scale(0.3)
for x,y in nullcors:
    bean.goto(x,y)
    bean.stamp()                        # 绿色的豆子是一个图章
dots = bean.stampItems                  # 给图章列表取一个别名

bug = Sprite(pos=(-25,0))               # 生成虫子角色
bug.scale(0.8)                          # 把虫子变小一点

speed = 6                               # 虫子移动的单位距离
leftkey = Key('Left')                   # 新建左方向箭头
rightkey = Key('Right')                 # 新建右方向箭头
upkey = Key('Up')                       # 新建上方向箭头
downkey = Key('Down')                   # 新建下方向箭头
screen.listen()                         # 监听屏幕按键 

以下代码省略...... 

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 吃豆小虫迷宫游戏已关闭评论

勇闯黑暗迷宫

小球球有大智慧,纵使完全看不见前方的路,但它仍有可能找到花朵。
可是这大智慧要你来赋予!这是一个瞬间记忆游戏,记住迷宫的布局!
在伸手不见五指的漆黑之夜按上下左右键头操作小球去碰到花朵吧。

"""
   勇闯黑暗迷宫,迷宫会停电,仅凭记忆去碰小花!
"""
from sprites import *
from winsound import PlaySound,SND_ASYNC

PlaySound('勇闯.wav',SND_ASYNC)
screen = Screen()
screen.setup(640,480)
screen.title('勇闯黑暗迷宫')        # 设定标题

ball = Sprite(1)                    # 新建小球角色
ball.color('black')
ball.bk(300)
ball.pensize(20)
ball.pendown()
ball.fd(400)
ball.penup()
ball.goto(0,250)
ball.pendown()
ball.goto(0,100)
ball.penup()

ball.goto(0,-250)
ball.pendown()
ball.goto(0,-100)
ball.penup()

ball.goto(160,100)
ball.pendown()
ball.goto(160,-100)
ball.penup()

ball.goto(-310,230)                      # 定位到这开始画黑色边框
ball.pendown() 
for _ in range(2):
    ball.fd(610)
    ball.rt(90)
    ball.fd(460)
    ball.rt(90)
ball.penup()

ball.goto(-200,-150)                      # 最终定位到这
ball.say('按方向箭头\n操作我碰到小花',10,False)

flower = Sprite('res/flower.png')        # 新建小花角色
flower.goto(-200,150)                    # 小花定位到这里

w = Sprite(visible=False)                # 写字的角色
w.goto(-100,30)                          # 定位到(-100,30)
info = "马上要停电,请立即记住迷宫布局"
ft = ('',23,'normal')
w.write(info)                            # 写提示信息
w.wait(4)                                # 等待4秒钟
w.goto(0,30)                             # 定位到(0,30)
# 下面是写倒计时3,2,1
for x in range(3):
    w.clear()    
    w.write(3-x,align='center',font=ft)
    w.wait(1)
w.clear()
screen.bgcolor('black')                 # 把背景设为黑色

leftkey = Key('Left')                   # 新建左方向箭头
rightkey = Key('Right')                 # 新建右方向箭头
upkey = Key('Up')                       # 新建上方向箭头
downkey = Key('Down')                   # 新建下方向箭头
screen.listen()                         # 监听屏幕按键 
flag = None


以下代码省略......


下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 勇闯黑暗迷宫已关闭评论

无限隧道闯关游戏

前面有危险重重的关卡,祝你一路顺风,否则你会死得很惨。
还有更重要的是关卡是无限的,所以你注定要死或者关闭这个游戏,哈哈哈。

"""
   无限隧道闯关游戏.py
   本程序演示一个按键操作的多关卡小游戏。
"""
from sprites import *                    # 从精灵模块导入所有命令

screen = Screen()                        # 新建屏幕
screen.setup(800,600)                    # 设定宽高
screen.bgcolor('black')                  # 背景为黑
screen.title('无限隧道闯关游戏')

level = 1                                # 关卡编号
ft = ('黑体',32,'normal')                # 新建字体样式
w = Sprite(visible=False)                # 用来写关卡号的角色
w.color('green')                         # 写字的颜色
w.goto(0,220)                            # 坐标定位

ball = Sprite(1)                         # 新建小球
ball.bk(400)                             # 倒退400个单位

pen1 = Sprite(visible=False)             # 画笔1
pen1.width(4)                            # 画笔线宽(pensize)
pen1.color('red')                        # 画笔颜色
pen1.bk(400)                             # 倒退400个单位
pen1.addy(80)                            # y坐标增加80

pen2 = Sprite(visible=False)             # 画笔2
pen2.width(4)                            # 画笔线宽(pensize)
pen2.color('red')                        # 画笔颜色    
pen2.bk(400)                             # 倒退400个单位
pen2.addy(-80)                           # y坐标减小80

k = 1                                    # 移动速度的系数
leftkey = Key('Left')                    # 左方向箭头
rightkey = Key('Right')                  # 右方向箭头
upkey = Key('Up')                        # 上方向箭头
downkey = Key('Down')                    # 下方向箭头
screen.listen()                          # 监听屏幕按键
                              
以下代码省略...... 

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 无限隧道闯关游戏已关闭评论

史上最难太空移球.py

在浩瀚的互联网中,海量的信息让人们无所适从。不过,在这个小游戏中,目标还是很明确的。
只要操作小球移到屏幕最左边即可。当然,没有这么容易的哦。这是由于小球有惯性!

"""
   史上最难太空移球.py
   本程序主要体验角色的find_overlapping命令,还有单独的explode命令。
   find_overlapping是用来查找和角色最小矩形重叠的命令,返回这些矩形对应的项目。
   这些项目包括其它角色、所画的线条、填充区域块、图章、dot命令所打的圆点。
   返回一个集合,集合就是找到的项目编号。
   explode是爆炸效果命令,接受一个坐标和一个列表,列表存储的是要显示的一些图片。
"""
from sprites import *                    # 从精灵模块导入所有命令
from random import randint               # 从随机模块导入randint命令

explosionframes = ['res/explosion0.png',
                   'res/explosion1.png']
screen = Screen()                        # 新建屏幕
screen.setup(800,600)                    # 屏幕大小
screen.bgcolor('black')                  # 背景颜色

w = Sprite(visible=False)                # w角色用来画障碍物 
w.color('red')                           # 设定w为红色
w.pensize(50)                            # 画笔粗细为50
w.goto(-300,300)                         # 定位到坐标(-300,300)
w.pendown()                              # 落笔
w.fd(700)                                # 前进700个单位
w.penup()                                # 抬笔
w.goto(-300,-300)                        # 定位到坐标(-300,-300)
w.pendown()                              # 落笔
w.fd(700)                                # 前进700个单位
w.penup()                                # 抬笔
w.pensize(1)                             # 设定画笔粗细为1
w.goto(-300,230)                         # 定位到坐标(-300,230)
# 下面是画6行红色方块,每行有10个
for i in range(6):
    for _ in range(10):
        dy = randint(-20,20)
        w.addy(dy)
        w.draw_rect(35,randint(30,50))   # 画方块,宽度为35,高度为30到50
        w.addy(-dy)
        w.fd(100)                        # 前进100个单位
    w.bk(1000)                           # 倒退1000个单位
    w.addy(-100)                         # 下移100个单位 
      
ball = Sprite(shape=1,pos=(-350,0))      # 这是要操作的主角小球
ball.dx = 0                              # 球的水平速度(这是自定义的属性)
ball.dy = 0                              # 球的垂直速度(这是自定义的属性)

leftkey = Key('Left')                    # 新建左方向箭头 
rightkey = Key('Right')                  # 新建右方向箭头
upkey = Key('Up')                        # 新建上方向箭头
downkey = Key('Down')                    # 新建下方向箭头
screen.listen()                          # 监听键盘按键

result = ""                              # 定义字符串,描述成功还是失败
running = True                           # 定义running变量,控制while是否结束


以下代码省略......

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 史上最难太空移球.py已关闭评论

顶重力弹球游戏

这个游戏可以用鼠标指针去顶弹球,顶到一次就会得分。
只有10秒的游戏时间,看看你能得到多少分哦。


本程序需要python精灵模块v1.29以上版本支持,请用pip uninstall sprites命令卸载老版本,用pip install sprites命令安装最新版本。

"""
   顶球重力弹球游戏.py
   本程序主要演示overlap_with命令和角色的polygon命令。
   
   角色的polygon命令以角色自身坐标为第一个点画一个多边形。
   参数为坐标点列表。

   角色的overlap_with命令检测参数所对应的项目是否和角色的矩形发生重叠,
   也就是检测是否发生碰撞。
   overlap_with的参数可能是列表/元组/集合,也可以是另一个角色或一个字符串。
   当是列表/元组/集合时,则遍历它,检测每个项目是否和角色重叠,返回所重叠的项目集合。
   当是另一个角色时,取这个角色的项目编号,检测是否和它重叠。
   当是一个字符串时,认为这个一个标签,遍历所有同一标签的角色,返回所重叠的项目集合。
"""
from sprites import *                   # 从精灵模块导入所有命令   

screen = Screen()                       # 新建屏幕
screen.setup(640,480)                   # 设定宽高
screen.bgcolor('dodger blue')           # 背景颜色

w = Sprite(visible=False)               # 新建隐藏的w角色
x,y = w.topleft()                       # 到左上角
cors = [(x,-y),(x+30,-y),(x+30,y)]
leftborder = w.polygon(cors)            # 以w所在坐标为起点画填充多边形

x,y = w.topright()                      # 到右上角
cors = [(x,-y),(x-30,-y),(x-30,y)]
rightborder = w.polygon(cors)

x,y = w.bottomleft()                     # 到左下角
cors = [(x,y+30),(x+640,y+30),(x+640,y)]
bottomborder = w.polygon(cors)

lrborders = [leftborder,rightborder]     # 左右黑边框
ball = Sprite(1)                         # 新建小球
ball.goto(0,180)                         # 坐标定位
dx = random.randint(-4,4)                # 水平速度
dy = 0                                   # 垂直速度
score = 0                                # 得分
start = time.time()                 # 起始时间


以下代码省略......

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 顶重力弹球游戏已关闭评论

迷宫生成器by李兴球@2020/3/9

"""
   迷宫生成器by李兴球@2020/3/9
"""
from turtle import *
from PIL import Image

def make_image(width,height,color=(255,0,0,255),border=2,bordercolor=(0,0,0,255)):
    """本函数用Image生成一个RGBA格式的图像,然后如果border不是0,则加边框。
       width:图像宽度,height:图像高度,color:填充颜色
       border:边框像素量,bordercolor:边框像素的颜色,返回图形对象。
    """
    pic = Image.new('RGBA',(width,height),color=color)
    if border > 0 :
        for x in range(width):
            for h in range(border):
                pic.putpixel((x,h),bordercolor)
                pic.putpixel((x,height-h-1),bordercolor)
        for y in range(height):
            for h in range(border):
                pic.putpixel((h,y),bordercolor) 
                pic.putpixel((width-h-1,y),bordercolor)
    return pic

def make_maze(mazefile,brickfilename):
    """根据mazefile描述的信息用brickfilename图形铺设迷宫"""
    im = Image.open(brickfilename)
    imgwidth,imgheight = im.size
                    
    f = open(mazefile)
    c = f.read()
    f.close()

    lines = c.split('\n')
    rows = len(lines)
    cols = len(lines[0])
    width = imgwidth * cols
    height = imgheight * rows

    screen = Screen()
    screen.delay(0)
    screen.setup(width,height)
    screen.addshape(brickfilename,Shape("image", screen._image(brickfilename)))

    square = Turtle(brickfilename,visible=False)
    square.penup()
    square.speed(0)
    square.goto(-width/2+imgwidth/2,height/2 - imgheight/2)
    nullcors = []
    for r in range(rows):
        for c in range(cols):
           if lines[r][c] == '+':
               square.stamp()
           else:
               nullcors.append(square.pos())
           square.fd(imgwidth)
        square.bk(width)
        square.sety(square.ycor()-imgheight)
    return screen,square,nullcors

if __name__ == "__main__":

    pic = make_image(50,50)
    pic.save('c:/a.png')
    screen,square,nullcors = make_maze('maze.txt','c:/a.png')
    for x,y in nullcors:
        square.goto(x,y)
        square.dot(5,'blue')

发表在 python, turtle | 迷宫生成器by李兴球@2020/3/9已关闭评论

天空飞来的鸽子

湛蓝的天空飞来一只鸽子。它最终悬停在甲板上方,这个时候小猫走过来了。
它喵地一声,向鸽子发出了你好的话语。鸽子听了也回了一句。
这个小作品的特色是模拟了一点3D效果!

"""
   天空飞来的鸽子.py
   本程序有模拟3D效果,表现鸽子由远及近的效果是让它的大小不断变大,
   并且y坐标不断地减小,本程序最后还有角色之间的对话。
"""
from sprites import *                     # 从精灵模块导入所有命令

screen = Screen()                         # 新建屏幕
screen.setup(800,600)                     # 设定屏幕宽高
screen.bgpic('boardwalk.png')             # 设定屏幕背景
screen.title('天空飞来的鸽子')            # 设定屏幕标题 

frames = ['dove1.png','dove2.png']        # 鸽子造型表
dove = Sprite(frames,pos=(0,420))         # 新建鸽子角色
dove.scale(0.05)                          # 缩放角色
for s in range(1,150):                    # 在范围内迭代s 
    dove.scale(s/600)                     # 缩放角色
    dove.addy(-3)                         # 往下移3个单位
    dove.nextshape()                      # 下一个造型 
    dove.wait(0.1)                        # 等待0.1秒

def alt_costume():
     """鸽子不断切换造型"""
     dove.nextshape()                     # 下一个造型
     screen.ontimer(alt_costume,200)      # 200毫秒后再次运行alt_costume 
alt_costume()                             # 调用切换造型函数


 

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 天空飞来的鸽子已关闭评论

虫子的柱状图

"""
   虫子的柱状图,本程序体验列表推式,顺便了解下draw_rect命令。
   列表推导式是用for循环生成一个列表的语法糖(技巧)。
"""
from sprites import *                     # 从精灵模块导入所有命令
from random import randint                # 从随机模块导入randint命令 

screen = Screen()                         # 新建屏幕
screen.setup(800,600)                     # 设定宽高

datas=[randint(20,300) for x in range(30)]# 生成30个从20到300的整数

bug = Sprite()                            # 新建角色 
bug.goto(-280,-100)                       # 定位到坐标(-280,-100)


以下代码省略......

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 虫子的柱状图已关闭评论

黑猫警长的射击

神勇威武的黑猫警长要练枪法了!按空格键,子弹会移到枪口射出。
相信老鼠们听到子弹声就会被吓得魂飞魄散了。这个程序主要学习按键检测!

"""
   黑猫警长的射击.py
   本程序主要演示的是空格键的按键检测
"""
import time
from sprites import *

screen = Screen()                          # 新建屏幕
screen.setup(480,360)                      # 设定宽高
screen.bgcolor('dodger blue')              # 设定屏幕颜色
screen.title('黑猫警长的射击')             # 写上标题

cat = Sprite('猫.png')                     # 新建猫角色 
zd = Sprite('子弹.png')                    # 新建子弹角色
zd.left(30)                                # 子弹左转30度
zd.hide()                                  # 隐藏子弹

spacekey = Key('space')                    # 新建空格键按键
screen.listen()                            # 监听键盘按键


 

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 黑猫警长的射击已关闭评论

算术虫子

会做算术的虫子,不过有时候这只虫子出的算术题是错的,这个时候就不要去单击它哦。
否则就得不到分数做为奖励了。


自动出算术题目的虫子,题目有时候正确,有时候不正确,单击到正确的题目时就会加分。

from sprites import *
from random import randint

s = 0
score = 0
screen = Screen()                        # 新建屏幕
screen.setup(800,600)                    # 设定屏幕宽高
screen.bgcolor('dodger blue') 
bug = Sprite()                           # 新建虫子角色
bug.left(90)                             # 虫子左转90度

def question():
    """每隔5秒运行一次的函数"""
    global s                             # 申明s为全局变量 
    a = randint(0,10)                    # 给a赋一个从0到10之间的数值
    b = randint(0,10)                    # 给b赋一个从0到10之间的数值
    s = randint(0,1)                     # s代表出正确的题目还是出错误的题目
    if s == 1 :                          # s为1表示显示正确的答案
        c = a + b
    else:                                # s为0表示显示错误的答案         
        c = randint(0,20)
        while c==(a+b):c = randint(0,20) # 这里是为了防止c刚好和a+b的和相等
    string = str(a) + "+" + str(b) + "=" + str(c)
    bug.gotorandom(-300,300,-200,200)    # -300是left,300是right,-200是bottom,200是top
    bug.show()                           # 显示虫子
    bug.say(string,5,False)              # 异步执行say命令,显示说话泡泡5秒
    screen.ontimer(question,5000)        # 5秒后再次调用question函数
question()                               # 调用一次question函数



下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 算术虫子已关闭评论

雪的梦幻

雪,带给我们的是宁静和纯洁,白色总是纯洁的象征,而雪带给我们的却不仅仅如此。那种安宁,让心里的思绪激不起一丝涟漪。
编程,会带给我们什么呢?这就得看你编的什么程。而编的什么程,又和个人学识、工作、性格、修养与社会环境有莫大关系。
打开这个Python作品,聆听《雪的梦幻》。它在告诉你,生活,不需要这么快,即要赚点钱,还要赚些闲。
要不然赚的钱没有闲时光来花,岂不是白白忙一场?本程序演示了如何自定义角色造型,当然,你学的不仅仅是个程序。

"""
   雪的梦幻.py
   本课主要学习如何自定义角色的多边形造型。
   屏幕的getshapes命令能获取所有的多边形造型。
   也可以用角色画一个形状,然后把这个形状设为角色的造型。
"""
from sprites import *                       # 从精灵模块导入所有命令

screen = Screen()                           # 新建屏幕
screen.bgcolor('dodger blue')               # 设定背景色
screen.setup(480,360)                       # 设定屏幕宽高
screen.bgpic('雪背景.png')                  # 设定背景图
screen.titlebar(False)                      # 去掉标题栏
screen.draggable()                          # 按中键可拖动
screen.addpopup()                           # 增加右键菜单  

t = Sprite(visible=False)                   # 新建不可见角色
t.color('white')                            # 设定颜色为白色

t.begin_poly()                              # 开始记录顶点
for x in range(8):                          # 在范围8迭代变量x
    t.fd(10)                                # 前进10个单位
    t.bk(10)                                # 倒退10个单位
    t.rt(45)                                # 右转45度
t.end_poly()                                # 结束记录顶点

p = t.get_poly()                            # 获取所有顶点坐标 
screen.addshape('snow',p)                   # 在形状列表中添加snow造型
t.shape('snow')                             # 设定t为snow造型
t.scale(0.3)                                # 设为0.3倍大小

for z in range(400):                        # 在范围200迭代z变量            
    x = random.randint(-240,240)            # 设定x坐标
    y = random.randint(200,1000)            # 设定y坐标
    t.goto(x,y)                             # 定位到x,y坐标
    t.stamp()                               # 盖图章


.


下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 雪的梦幻已关闭评论

黑脉金斑蝶动画演示程序

天地玄黄,宇宙洪荒。从古到今,太阳之光,催生万物。我相信,宇宙不止一个地球。
我相信,其它的地球同样有着众多的小精灵。 就像我们人类有能力在别的星球上创造一个文明,
而在暗中观察这个文明的发展一样。宇宙中其它类地球的文明不造访我们的目的其实是在保护我们。
让我们自由发展,他们一直在观察着我们。我们以为自己是上帝,但上帝之上,还有上帝。
对于小小的蝴蝶,我们也要保护它们,它们和我们一样是地球中平等的成员。
阅读这个Python作品,聆听这首扣人心弦地背景音乐,想像蝴蝶们的万里迁徙。
它们,不仅仅是虫子的浴火重生。它们也是地球小小的一面镜子。生态保护,刻不容缓!

"""
   黑脉金斑蝶.py
   本程序主要学习全局变量和局部变量,以及用global申明全局变量的用法。
   在函数内定义的变量叫局部变量,在函数外定义的叫全局变量。
   Python规定,在函数内可以引用,但不能改变全局变量的值,
   如果要改变全局变量的值,则要显示的声明一个变量为全局变量。
"""
from sprites import *

PlaySound('Elements.wav',SND_ASYNC|SND_LOOP)  # 循环播放音乐

f = open("说明.txt")                          # 打开文件
c = f.read()                                  # 读取文件
f.close()                                     # 关闭文件
briefs = c.split('++++++++++')                # 以连加号分隔,返回列表

bgs = []                                      # 定义bgs列表
for i in range(1,14):                         # 在范围1,14迭代i      
    bgs.append('res/' + str(i) + ".png")      # 添加到列表

screen = Screen()                             # 新建屏幕
screen.setup(960,720)                         # 设定屏幕宽高    

index = 0                                     # 定义index变量
def alt_background():
    global index                              # 声明index是全局变量
    screen.bgpic(bgs[index])                  # 显示背景图   
    index = index + 1                         # index自增加1
    index = index % 13                        # index对13求余
    screen.ontimer(alt_background,20000)      # 20秒后再次调用函数
alt_background()                              # 调用alt_background函数

s = Sprite(visible=False,pos=(0,-720))        # 新建s角色

以下代码省略......


下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 黑脉金斑蝶动画演示程序已关闭评论

灭霸的宝石

宇宙超级无敌BOSS灭霸也需要几颗原石才能完成他拯救宇宙的目标。
在这个游戏中,灭霸被鼠标指针给操作了,成了一个小傀儡。
难道灭霸真的是你永远的小傀儡吗?接完宝石后,灭霸会有怎么样的行为?
这一切都得靠你了!编程之路漫漫,而其修远兮,你将上下而求索?

"""
    灭霸的宝石.py
    本程序运行后通过鼠标指针操作角色,让它去接'宝石'
"""
from sprites import *
from time import sleep
from random import randint

gems = []                                 # 新建列表
screen = Screen()                         # 新建屏幕
screen.setup(843,468)                     # 设定屏幕宽高
screen.bgpic('星空背景.png')              # 设定屏幕背景
screen.title('灭霸的宝石')                # 设定屏幕标题

for x in range(10):                       # 在range(10)范围内迭代x
    x = randint(-400,400)                 # 生成一个x坐标 
    y = randint(240,690)                  # 生成一个y坐标
    g = Sprite(shape='circle',pos=(x,y))  # 新建一个叫g的角色
    g.randomcolor()                       # 随机颜色
    gems.append(g)                        # 添加到宝石列表

mieba = Sprite(shape='灭霸.png')          # 新建灭霸角色
mieba.sety(-200)                          # 设定灭霸的y坐标 


以下代码省略......

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 灭霸的宝石已关闭评论

查找重叠命令.py

"""
   查找重叠命令.py
   
   角色的find_overlapping命令就是查找重叠命令。
   它用来查找和角色最小矩形重叠的其它项目。简单理解就是有没有和其它项目发生碰撞。
   这些项目包括其它角色、所画的线条、填充的颜色块、盖的图章、画的圆点。
   返回的结果是这些项目的编号,是一个集合。本命令主要用来进行碰撞检测。
   本程序需要精灵模块v1.28版本以上支持。
"""
from sprites import *             # 从精灵模块导入所有命令

title = 'find_overlapping命令测试程序'
s = Sprite()                      # 新建角色
s.color('magenta')                # 设定颜色
s.goto(0,200)
s.write2(title)
s.width(3)                        # 画笔宽度
s.goto(0,0)
s.write('风火轮编程')             # 写文字 
s.fd(160)

s.dot(100,'green')                # 打绿色圆点
s.bk(300)
s.pendown()                       # 落笔
for x in range(3):                # 重复3次
  s.fd(100)                       # 前进100
  s.lt(90)                        # 左转90度
s.penup()                         # 抬笔 

while True:                       # 当成立的时候 
    s.goto(mouse_pos())           # 移到鼠标指针 
    t =  s.find_overlapping()     # 查找有没有和s的矩形重叠的东西 
    if t:print(t)                 # 有就打印它们的编号



发表在 python, sprites, turtle | 查找重叠命令.py已关闭评论

turtle和tkinter移动的红色矩形test程序

from turtle import *
from time import sleep
from turtle import TurtleScreenBase

def _convertxy(self,x,y):
    """把角色的x,y坐标转换回画布原来以左上角为原点的坐标"""
    x, y = x/self.xscale,-y/self.yscale
    return x,y

TurtleScreenBase.convertxy = _convertxy
screen = Screen()
x1,y1 = screen.convertxy(-100,100)
x2,y2 = screen.convertxy(0,0) 

def draw_rect(width,height,direction=1,fill=True,border=0):
    if direction != 1:direction = -1
    w2 = width/2
    x1 = t.xcor() - w2
    y1 = t.ycor() + height * direction
    x2 = t.xcor() + w2
    y2 = t.ycor()
    x1,y1 = screen.convertxy(x1,y1)
    x2,y2 = screen.convertxy(x2,y2)
    if fill:
       item = t.screen.cv.create_rectangle(x1,y1,x2,y2,width=border,fill=t.fillcolor())
    else:
       item = t.screen.cv.create_rectangle(x1,y1,x2,y2,width=border)
    return item

t = Turtle()
t.color('blue','red')
r = draw_rect(50,100,-1,2,5)
canvas = t.screen.cv
for x in range(100):
    canvas.move(r,1,0)
    canvas.update()
    sleep(0.01)

发表在 tkinter, turtle | turtle和tkinter移动的红色矩形test程序已关闭评论

外和和尚会念经

"""
   外国和尚会念经.py
   本程序演示了如何读取xls电子表格以及如何用jieba模块的lcut命令进行分词.
"""
import xlrd
import jieba

filename="excel电子表格.xls"
data = xlrd.open_workbook(filename)                 # 打开xls文件
table = data.sheets()[0]                            # 打开第一张表
nrows = table.nrows                                 # 获取表的行数
print(filename + "共有" + str(nrows) + "行数据。\n")
s = ""
for i in range(nrows):                              # 循环逐行
    line = table.row_values(i)                      # 索引为i的一行
    s = s + line[0] + line[1] + line[2]             # 连接这一行数据
    
r = jieba.lcut(s)                                   # 对s进行分词,返回列表
print(r)                                            # 打印这个列表
发表在 python | 外和和尚会念经已关闭评论

粉红房间整理垃圾程序

女孩的心思你别猜测,女生的房间你别进。要是进了,那就要帮忙清理垃圾。
这个动感活力小清新Python小程序代码优雅整齐,符合Python哲学,乃极品也。

"""
   粉红房间.py
   本程序主要理解lambda表达式能建立匿名函数
"""
from sprites import *

screen = Screen()                      # 新建屏幕
screen.setup(480,360)                  # 设定屏幕宽高
screen.bgpic('room.png')               # 贴上背景图
screen.draggable()                     # 按中键可拖动窗口
screen.titlebar(False)                 # 去除标题栏
screen.addpopup()                      # 增加右键菜单

PlaySound('动感活力小清新.wav',SND_ASYNC|SND_LOOP)

w = Sprite(visible=False)
w.goto(0,70)
w.color('cyan')
w.write('寻找垃圾,单击它',align='center')

z = Sprite(shape='images/垃圾娄.png')
z.goto(-200,-140)


以下代码省略......

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 粉红房间整理垃圾程序已关闭评论

颤抖的图章粒子效果

世界上本来没有这个程序,但是现在却有了这个程序。背后隐藏的力量是什么让粒子颤抖起来了?
君请看粒子效果演示程序《颤抖的图章》。

"""
   颤抖的图章,本程序主要学习角色有一个叫stampItems列表。
   这个列表存储的是角色所盖的所有图章的编号。
   图章也是可以移动的。图章的坐标是可以获取到的。
"""
from sprites import *                # 从精灵模块导入所有命令
from random import choice            # 从随机模块导入choice命令 

screen = Screen()                    # 新建屏幕
screen.bgcolor('black')              # 设定屏幕为黑色
screen.setup(800,600)                # 设定宽高为800x600

speed = [-5,-4,-3,-2,-1,1,2,3,4,5]   # 定义一个叫speed的列表

p = Sprite(shape='dot',visible=False)# 生成不可见角色,造型为dot
p.color('cyan')                      # 设定角色颜色


以下代码省略......

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 颤抖的图章粒子效果已关闭评论

一剪梅(歌词)play方法

一天,派森先生向我诉苦说,别人都用我来做数据挖掘、人工智能、大数据啥的。
可是有一个人却总用我来做些小儿科。什么小游戏啊,小动画啊,MV呀,课件呀,
还有啥数学、物理、国学、诗词、地理、历史、生物生态学全放进去。
这不,今天又把《一剪梅》给弄出来了,我还以为是李清照的那首词呢?
谁知道是一部电视剧的主题曲。知识倒是长了不少,可就是怎么觉得有点不对劲呢?
我说,世事洞明皆学问,汝果欲学诗,功夫在诗外,雪花飘飘,北风萧萧,天地间一片苍茫的代码….

"""
   一剪梅.py
   本程序主要介绍角色的play方法,它能带歌词文件!
"""
from sprites import *                  # 从精灵模块导入所有命令
from random import choice              # 从随机模块导入choice命令

screen = Screen()                      # 新建屏幕
screen.setup(706,500)                  # 设置屏幕宽高
screen.bgpic('封面.png')               # 设置屏幕背景图
screen.bgcolor('dodger blue')          # 设置屏幕背景色 
screen.titlebar(False)                 # 关闭标题栏
screen.addpopup()                      # 增加右键菜单
screen.draggable()                     # 按中键可拖动窗口

f = open('评论.txt')                   # 打开文件
c = f.read()                           # 读文件
f.close()                              # 关闭文件
lines = c.split('\n')                  # 以换行分隔文件,返回列表

bug = Sprite(visible=False)            # 新建隐藏的虫子角色
bug.color('blue')                      # 颜色为蓝色
bug.sety(-140)                         # 设置y坐标为-140
bug.play('一剪梅(费玉清).wav','歌词.txt')

w = Sprite(visible=False)              # 新建w角色,写评论的
w.sety(-200)                           # 设置y坐标为-200


以下代码省略......

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 一剪梅(歌词)play方法已关闭评论

将进酒_君不见

"""
   将进酒_君不见.py
   本课主要体验序列的遍历,字符串的split命令。
"""
from sprites import *

def stepwrite(sp,string,ft):
    """逐字写字函数
    遍历字符串,每写一个字就往右移一定的距离,从而产生逐字效果。
    sp:角色,string:字符串,ft:字体样式
    """
    x = sp.xcor()                            # 记录sp的x坐标
    for char in string:                      # 对于每一个字
        sp.write(char,align='center',font=ft)# 写这个字
        sp.addx(20)                          # 往右移20个单位 
        sp.wait(0.2)                         # 等待0.2秒
    sp.setx(x)                               # 回到刚才记录的x坐标
    sp.addy(-18)                             # 往下移18个单位
        
f = open('将进酒_君不见.txt')                # 打开文件
c = f.read()                                 # 读文件
f.close()                                    # 关闭文件 

ft = ('楷体',16,'normal')                    # 定义三元组做为字体样式 
screen = Screen()                            # 新建屏幕
screen.setup(951,600)                        # 设定屏幕宽高
screen.bgpic('bg.png')                       # 贴上背景图片
screen.title('将进酒_君不见')                # 给窗口写标题

bug = Sprite()                               # 新建虫子角色
bug.goto(-10,250)                            # 定位到坐标(-10,250)

以下代码省略......

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 将进酒_君不见已关闭评论

未来可期之星辰大海.py

2070年,人类的生命科学基因技术大发展。
每个人的器官,除了大脑,都可以更换了,让人类的寿命大大延长。
地球人类人口爆增,地球只是做为了人类的摇篮。
人类已经在外星球撒播了智慧的种子,有相当多的人类直接在外星球诞生。
平凡之下,暗流涌动,不随波逐流,跟我一起去太空流浪,wonderful!
未来可期! 我们的征途在星辰大海!


"""
   未来可期之星辰大海.py
   本程序演示两个动画,从文件中读取字符串,从左到右显示出来
"""
from sprites import *                           # 从精灵模块导入所有命令

PlaySound('流浪者(剪).wav',SND_LOOP|SND_ASYNC)  # 循环播放背景音乐

screen = Screen()                               # 新建屏幕 
screen.setup(800,600)                           # 设定宽高 
screen.bgpic('星空背景.png')                    # 贴上背景
screen.title('未来可期之星辰大海')              # 写上标题

brain = Sprite(shape='brains',pos=(0,170))      # 大脑动画角色
man = Sprite(shape='ironmans',pos=(0,-160))     # 钢铁侠动画角色

f = open('文字说明.txt')                        # 打开文字说明 
c = f.read()                                    # 读取文件
f.close()                                       # 关闭文件

txt2image(c,'res/zi.png',color=(255,250,0))     # 文字转换成图像
subtitle = Sprite('res/zi.png',pos=(1598,0))    # 新建字幕角色 


以下代码省略......
    

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 未来可期之星辰大海.py已关闭评论

光的反射定律演示程序

有一天,光子小姐来到了月亮,然后她又离开了月亮。
她自言自语地说,月球什么也没有,我还是向往星空,我要去寻找雅典娜和她一起玩!
请问,光子小姐和月亮碰撞的时候用的是什么定律?

"""
   光的反射定律演示,本课了解一下默认的多边形造型列表,
   通过screen.getshapes()可得到这个列表,
   还要学习一下shapesize命令的用法,
   它让角色的造型发生变形,但并不支持图形角色。
"""
from sprites import *

def make_photon():
    """在坐标(-50,0)生成一粒光子"""
    photon = Sprite(shape='dot',pos=(-50,0))
    photon.randomcolor()                # 随机颜色
    photon.dx = 2                       # 水平速度
    photon.dy = -4                      # 垂直速度
    ps.append(photon)                   # 加到列表
    
screen = Screen()                       # 新建屏幕 
screen.bgcolor('black')                 # 涂背景色
screen.setup(480,360)                   # 设定宽高  
screen.tracer(0,0)                      # 关闭自动刷新 

ps = []                                 # 新建列表
# 新建一块方形的反射板,坐标为(0,-103)
board = Sprite(shape='square',pos=(0,-103))
board.color('cyan')                     # 反射板 
board.left(90)                          # 左转90度
board.shapesize(10,0.1)                 # 宽高变形  

s = '光的反射定律演示'
ft = ('黑体',16,'normal')               # 定义三元组
w = Sprite(visible=False)               # 生成隐藏的w角色 
w.goto(0,100)                           # 定位到坐标(0,100)
w.color('white')                        # 设定颜色为白
w.write(s,align='center',font=ft)       # 写标题   
w.color('gray')                         # 设定颜色为灰
w.addy(-20)                             # 往下移20个单位
w.pendown()                             # 落笔
w.goto(0,-100)                          # 定位到(0,-100) 


以下代码省略......

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 光的反射定律演示程序已关闭评论

青青河边草动画

每个人都有自己的故事,我相信加工一下都是不错的故事。
Python的故事正在上演,请看《青青河边草》这个程序。
它又会演绎怎么样的故事呢?

"""
   青青河边草.py
   本程序会演示一个动画,并且每隔100帧对动画进行截屏,
   截成的图像并没有立即写入到硬盘中,而是临时放在列表,
   当动画完成后,最后一次性写入硬盘里。
"""
import time                                     # 导入时间模块
from sprites import *                           # 从精灵模块导入所有命令

screen = Screen()                               # 新建屏幕
screen.setup(600,399)                           # 设定屏幕宽高
screen.bgpic('河边草.jpg')                      # 铺上背景图
screen.titlebar(False)                          # 去掉标题栏
screen.addpopup()                               # 绑定右键菜单
screen.draggable()                              # 按中键可拖动

# 定义角色的造型列表
images = ['金铭.jpg','金铭2.jpg','金铭3.jpg',
          '三人照.jpg','海报.jpg','海报2.jpg',
          '金铭4.jpg','两人.jpg','风雨.jpg']

frames = []                                    # 帧图列表,保存截取屏幕的图形对象
pic = Sprite(shape='海报2.jpg')                # 新建角色
pic.play('青青河边草.wav')                     # 放音乐,它有186秒时长
begin = time.time()                            # 记录开始播放时间
index = 0                                      # 索引号从0开始
counter = 0                                    # 这个做为帧计数器
while True:                                    # 当成立的时候
 

以下代码省略......
        

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 青青河边草动画已关闭评论

精卫填海多媒体动画

夸父要追日,精卫要填海,这些都不现实,
编程学Python,代码整整齐,这才是现实,
本作品展示了精卫鸟衔石头扔海里的配音动画。

"""
   精卫填海.py
   本程序不断地按顺序把列表中的图像设为屏幕的背景图,
   精卫鸟会不断地从屏幕左边出来,有时候会扔石头。
"""
from random import randint              # 从随机模块导入randint命令
from time import sleep                  # 从时间模块导入sleep命令
from sprites import *                   # 从精灵模块导入所有命令

def throwstone():
    """
       设定一定的机率,让小鸟扔石头的函数
    """
    if stone.ishide():                  # 如果石头是隐藏的 
        if randint(1,100)==1:           # 设定一定的概率
            stone.goto(bird.pos())      # 石头到鸟的坐标
            stone.show()                # 显示石头
    else:                               # 否则(石头就是显示的)
        stone.addy(-5)                  # 往下移动5个单位
        if stone.ycor()<-100:           # 如果石关的y坐标小于-100 
            stone.hide()                # 隐藏石头        
        
screen = Screen()                       # 新建屏幕
screen.setup(490,360)                   # 设定屏幕宽高 
screen.titlebar(False)                  # 关闭标题栏
screen.draggable()                      # 按鼠标中键拖动窗口
screen.bgcolor('black')                 # 设定背景为黑色 
screen.addpopup()                       # 加上右键菜单

images = []                             # 新建名为images列表,它的内容将是所有的背景图片
for i in range(100):                    # 由于frames文件夹下有从0.png到99.png的100张图片
    filename = os.getcwd() + os.sep + 'frames' + os.sep + str(i) + ".png"
    images.append(filename)             # 把文件添加到列表

stone = Sprite(shape='石头.png',visible=False)
stone.scale(0.5)                        # 设为原来一半大小
stone.setalpha(128)                     # 设置半透明

# 新建隐藏的小鸟角色,它用来代表精卫鸟
bird = Sprite(shape='精卫鸟小.png',pos=(0,50),visible=False) 
bird.play('精卫填海.wav',loop=True)     # 循环播放
bird.write("精卫填海",align='center',font=("楷体",24,'bold'))
bird.goto(-300,100)                     # 定位到坐标(-300,100)
bird.show()                             # 显示出来 


以下代码省略......

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 精卫填海多媒体动画已关闭评论

一马当先_Python赛马动画


"""
   一马当先.py
   本程序是赛马演示动画,其中一匹马跑得更快,
   配乐为土耳其进行曲
"""
import random                          # 导入随机模块
from sprites import *                  # 从精灵模块导入所有命令

screen = Screen()                      # 新建屏幕
screen.setup(1024,480)                 # 设定宽高
screen.titlebar(False)                 # 隐标题栏
screen.draggable()                     # 按中键拖
screen.addpopup()                      # 右键菜单
screen.bgpic('grass.png')              # 设背景图

horse = Sprite("images",visible=False) # 新建角色 
horse.scale(0.4)                       # 缩小为0.4倍
horse.show()                           # 显示出来  
horse.setx(-450)                       # 设置x坐标
horse.速度 = random.randint(2,3)       # 自定义属性名字叫速度
horse.play('土耳其进行曲.wav')         # 播放音乐

hs = [horse]                           # 新建列表
for y in range(-150,151,50):           # 迭代y,-150,-100,-50,0,50,100,150
    h = horse.clone()                  # 克隆一匹马
    h.速度 = random.randint(2,3)       # 设置马的速度
    h.sety(y)                          # 设置马的y坐标 
    hs.append(h)                       # 把这匹马添加到列表

xm = random.choice(hs)                 # 随机从列表中挑一匹马             
xm.速度 = random.randint(4,6)          # 把xm马的速度设为更大

end = Sprite(shape='square')           # 终点线角色
end.color('red')                       # 把它设为红色
end.shapesize(20,0.2)                  # 对宽度和高度进行变形
end.setx(450)

 
以下代码省略......

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 一马当先_Python赛马动画已关闭评论

Python生日快乐贺卡

from sprites import *                           # 从精灵模块导入所有命令

screen = Screen()                               # 新建屏幕
screen.setup(480,480)                           # 设定屏幕大小
screen.bgcolor('dodger blue')                   # 设定背景色    
screen.bgpic('bg.png')                          # 设定背景图
screen.title('生日快乐贺卡')                    # 设定标题 

ft = ('Arial',14,'italic')                      # 定义字体样式
info = "请拖动火焰到蜡烛上,再按空格键"          # 定义开始提示语

w = Sprite(visible=False,pos=(0,150))           # 生成写字的角色
w.color('white')                                # 设为白色 
w.write(info,align='center',font=ft)            # 写提示语

fire1 = Sprite('fires')                         # 生成火苗1
fire2 = Sprite('fires')                         # 生成火苗2

spacekey = Key('space')                         # 空格按键实例
screen.listen()                                 # 监听按键

while not spacekey.down():                      # 没按空格键时刷新屏幕
    screen.update()
fire1.play('Happy Birthday.wav',loop=True)      # 循环播放生日快乐曲子
w.clear()                                       # 清空所写的文字
w.write("Happy Birthday",align='center',font=ft)# 写字


以下代码省略......

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | Python生日快乐贺卡已关闭评论

精灵模块V1.26版新增屏幕命令演示程序

"""
屏幕对象有一个叫popup的右键菜单,需要用addpopup方法绑定鼠标右键它才能调用。如果要”移除”的话,可以用removepopup方法。这本质上是取消鼠标右键的绑定。

默认的右键菜单只有三大项,即”关于本程序”和”截取本窗口屏幕”以及“退出本程序”。它们的索引号分别是0和1及2。对菜单项目进行添加,删除,修改的话遵循tkinter语法。假设有名为screen的屏幕对象,那么:

㈠ 删除一项菜单:screen.popup.delete( startindex [, endindex ]),参数为起始和结束索引号。

㈡ 修改菜单项目: screen.popup.entryconfig( index, options ),options就是可选项,如可以重新指派新的命令,重新指派label等。

㈢ 增加一个菜单项目:screen.popup.add_command命令,以下是示例:
fun = lambda:os.system('explorer https://www.lixingqiu.com'))
screen.popup.add_command(label=“打开主页”,command=fun)
更详细的说明请打开网址 : https://www.lixingqiu.com/2020/02/26/tkinter_menu/ 

"""
from sprites import *

screen = Screen()         # 新建屏幕
screen.bgcolor('lime')    # 设定背景颜色
screen.titlebar(False)    # 不显示标题栏 
screen.draggable()        # 按中键可拖动窗口
#screen.setalpha()        # 设置窗口为半透明(0到1.0的值)打开后截屏不到!
screen.addpopup()         # 绑定右键菜单

# 给右键菜单添加一项
screen.popup.add_command(label='打开主页',command=lambda:os.system('explorer https://www.lixingqiu.com'))

screen.popup.entryconfig(1,label='单击截本窗口屏幕')  # 配置原有的截屏菜单项目

screen.mainloop()

发表在 python, sprites, tkinter, turtle | 精灵模块V1.26版新增屏幕命令演示程序已关闭评论

tkinter菜单中文说明页

Menu类可以用来创建顶级菜单、弹出菜单、下拉菜单(pop-up, toplevel and pull-down)。

有一种叫做可选菜单的小部件可以用OptionMenu类来生成。它可以让你从一个列表中选择一个项目。

语法

下面是创建菜单的简单语法形式:

w = Menu ( master, option, ... )

参数

  • master ? 这是父窗口.

  • options ? 这是可选项,由下面的键值对提供。

Sr.No. Description
1

activebackground

鼠标指针悬停在菜单项目上时的背景色。

2

activeborderwidth

鼠标指针悬停时菜单项目的宽度,默认为1个像素宽。

3

activeforeground

鼠标指针悬停时菜单项目的前景颜色。

4

bg

鼠标指针非悬停时菜单项目们的背景色。

5

bd

菜单项目们的边宽的宽度值,默认为1个像素。

6

cursor

指定鼠标指针光标, but only when the menu has been torn off.

7

disabledforeground

状态为禁用的菜单项目的文本颜色

8

font

所选文本的默认字体

9

fg

指定前景色

10

postcommand

你可以将此选项设置为一个函数,每次有人打开此菜单时都会调用该函数。

11

relief

默认的3D效果菜单的这个参数值为RAISED.

12

image

在菜单按钮上显示一幅图像。

13

selectcolor

单选钮或复选框被选中时的颜色。

14

tearoff

通常菜单可以独立。如果设置tearoff=0, 菜单就不能单独在其它地方显示了。

15

title

独立出去后菜单最上面的标题。

方法

下面是Menu可用的方法 ?

Sr.No. Option & Description
1

add_command (options)

给菜单增加一个项目

2

add_radiobutton( options )

给菜单创建一个单选按扭

3

add_checkbutton( options )

给菜单创建一个复选按扭

4

add_cascade(options)

创建次级菜单

5

add_separator()

增加分隔符

6

add( type, options )

增加特定类型的项目

7

delete( startindex [, endindex ])

根据起始索引号和结束索引号删除菜单项目

8

entryconfig( index, options )

根据菜单项目的索引号配置菜单项目

9

index(item)

根据菜单条目的标签返回索引号

10

insert_separator ( index )

在指定索引号的位置插入分隔符

11

invoke ( index )

直接调用菜单项目所对应的函数。如果是复选框则会触发set和clear函数。如果是单选钮则调用set

12

type ( index )

根据索引号返回菜单项目的类型。 either “cascade”, “checkbutton”, “command”, “radiobutton”, “separator”, or “tearoff”.

举例

你是最棒的,请自行输入以下代码测试!

from tkinter import *

def donothing():
   filewin = Toplevel(root)
   button = Button(filewin, text="Do nothing button")
   button.pack()
   
root = Tk()
menubar = Menu(root)
filemenu = Menu(menubar, tearoff=1)
filemenu.add_command(label="New", command=donothing)
filemenu.add_command(label="Open", command=donothing)
filemenu.add_command(label="Save", command=donothing)
filemenu.add_command(label="Save as...", command=donothing)
filemenu.add_command(label="Close", command=donothing)

filemenu.add_separator()

filemenu.add_command(label="Exit", command=root.quit)
menubar.add_cascade(label="File", menu=filemenu)
editmenu = Menu(menubar, tearoff=0)
editmenu.add_command(label="Undo", command=donothing)

editmenu.add_separator()

editmenu.add_command(label="Cut", command=donothing)
editmenu.add_command(label="Copy", command=donothing)
editmenu.add_command(label="Paste", command=donothing)
editmenu.add_command(label="Delete", command=donothing)
editmenu.add_command(label="Select All", command=donothing)

menubar.add_cascade(label="Edit", menu=editmenu)
helpmenu = Menu(menubar, tearoff=0)
helpmenu.add_command(label="Help Index", command=donothing)
helpmenu.add_command(label="About...", command=donothing)
menubar.add_cascade(label="Help", menu=helpmenu)

root.config(menu=menubar)
root.mainloop()

        

本页由李兴球翻译,原网址:https://www.tutorialspoint.com/python/tk_menu.htm

发表在 python, tkinter | tkinter菜单中文说明页已关闭评论

Python梦幻水族馆

绝妙的配音,欢快的鱼儿,可是它们总也逃不出玻璃框框! 截屏生成的gif质量不太高哦。


"""
   梦幻水族馆.py
   本程序会生成16条小鱼,它们碰到边缘就会反弹,
   本课目标,给小鱼设定一个几率,让它不碰到边缘,有时候也会反弹。
"""
import random                              # 导入随机模块 
from sprites import *                      # 从精灵模块导入所有命令

screen = Screen()                          # 新建屏幕 
screen.setup(800,600)                      # 设置屏幕宽高 
screen.bgpic('sea.png')                    # 设置背景图
screen.titlebar(False)                     # 关闭标题栏
screen.draggable()                         # 设置按中键可拖动窗口
screen._root.wm_attributes('-alpha',0.9)   # 设置窗口透明度为0.9
screen.tracer(0,0)                         # 关闭自动刷新和屏幕绘画延时 

fish = Sprite('frames')                    # 新建小鱼角色   
fish.rotatemode(1)                         # 设置为左右翻转模式0,1,2 
fishes = [fish]                            # 新建列表 

# 生成大小不一的15条小鱼,都添加到列表
for x in range(35):                        # 重复15次
    f = fish.clone()                       # 克隆一条鱼
    s = max(0.5,random.random())           # 设定一个从0.5到1.0(不含1.0)的数据
    f.scale(s)                             # 缩放小鱼
    f.randomgoto(-300,300,-200,200)        # 移到一个矩形范围left,right,bottom,top 
    f.randomheading()                      # 面向随机的一个方向
    fishes.append(f)                       # 添加到fishes列表

fish.play('海洋.wav',loop=True)            # 循环播放声音 

以下代码省略......
    

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | Python梦幻水族馆已关闭评论

鼠小弟的本领

本程序是算术表达式,关系表达式,逻辑表达式自动生成演示教学文档,需要最新的精灵模块v1.25版支持。
如果已经安装了旧版本的精灵模块,请先用pip uninstall sprites卸载,再用pip install sprites安装最新版本(注意缓存)

from sprites import *

def gxe():
    """产生关系表达式的字符串"""
    s = ['>','>=','<','<=','==','!=']
    a = random.randint(0,100)
    b = random.randint(0,100)
    express = str(a) + " " + random.choice(s) + " " +  str(b)
    return express

def p1():
    """产生算术表达式并显示"""
    s = ['+','-','*','/','%']
    a = random.randint(1,100)
    b = random.randint(1,100)
    express = str(a) + " " + random.choice(s) + " " +  str(b)
    text = express + " 的结果是: " + str(round(eval(express),2))
    dummy.clear()
    dummy.sety(120)
    dummy.write("算术表达式",align='center',font=ft)
    dummy.sety(40)
    dummy.write(text,align='center',font=ft2)
    dummy.sety(-10)
    dummy.write('算术表达式用来计算数学式子的结果',align='center',font=ft3)
    
def p2():
    """产生关系表达式并显示"""
    express = gxe()
    text = express + " 的结果是: " + ('True' if eval(express) else 'False')
    dummy.clear()
    dummy.sety(120)
    dummy.write("关系表达式",align='center',font=ft)
    dummy.sety(40)
    dummy.write(text,align='center',font=ft2)
    dummy.sety(-10)
    dummy.write('关系表达式又叫比较表达式,返回真或者假',align='center',font=ft3)

def p3():
    """产生逻辑表达式并且显示"""
    s = ['not','and','or']
    a = gxe()
    b = gxe()
    signal  = random.choice(s)
    if signal == 'not':
        express = signal + " " +  str(b)
    else:
        express = str(a) + " " + signal + " " +  str(b)
    text = express + " 的结果是: " + ('True' if eval(express) else 'False')
    dummy.clear()
    dummy.sety(120)
    dummy.write("逻辑表达式",align='center',font=ft)
    dummy.sety(40)
    dummy.write(text,align='center',font=ft2)
    dummy.sety(-10)
    dummy.write('逻辑表达式又叫布尔表达式,返回真或者假',align='center',font=ft3)
     
ft = ('楷体',26,'normal')
ft2 = ('arail',20,'normal')   
ft3 = ('宋体',16,'normal')
frames = ['res/rat1.png','res/rat2.png']

screen = Screen()                       # 新建屏幕
screen.bgcolor('dodger blue')           # 设置底色
screen.setup(540,360)                   # 设定屏幕宽高
screen.titlebar(False)                  # 关闭标题栏
screen.draggable()                      # 按中键可拖动窗口

以下代码省略......

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, turtle | 鼠小弟的本领已关闭评论

弟子规之余力学文歌


"""
   弟子规之余力学文歌.py,本程序主要演示无标题栏窗口,可拖动窗口。
   
   列表,它是以逗号隔开的,以中括号封闭的有顺序的可变数据集合。
   这些数据可以是整数、小数或者字符串。
   如[],它是一个空列表,如[32,76,8]它是一个有三个数字的列表。
   如['中华','华夏','九州','天下'],它是一个有四个字符串的列表。
   当然,我们可以给列表取一个名字,如 x = ['Python','莽蛇']。
   本程序需要spritesv1.25版本支持,如果你无法运行,请用
   pip uninstall sprites 卸载老版本,再安装最新版本(注意缓存)
"""
from sprites import *           # 从精灵模块导入所有命令

screen = Screen()               # 新建屏幕
screen.setup(480,480)           # 设定屏幕宽高
screen.bgpic('cover.png')       # 设定背景图片
screen.titlebar(False)          # 关闭标题栏
screen.draggable()              # 按鼠标中键可拖动窗口

# 定义一个叫dzg的列表,它里面是一些字符串
dzg = ['不力行 但学文',
       '长浮华 成何人',
       '但力行 不学文',
       '任己见 昧理真',
       '读书法 有三到',
       '心眼口 信皆要',
       '方读此 勿慕彼',
       '此未终 彼勿起',
       '宽为限 紧用功',
       '工夫到 滞塞通',
       '心有疑 随札记',
       '就人问 求确义',
       '房室清 墙壁净',
       '几案洁 笔砚正',
       '墨磨偏 心不端',
       '字不敬 心先病',
       '列典籍 有定处',
       '读看毕 还原处',
       '虽有急 卷束齐',
       '有缺坏 就补之',
       '非圣书 屏勿视',
       '蔽聪明 坏心志',
       '勿自暴 勿自弃',
       '圣与贤 可驯致']
# 下面是访问列表中的每一个数据,
for s in dzg:
    print(s)

bug = Sprite(visible=False)
bug.color('black')
bug.goto(0,-200)
bug.write('按空格键播放音乐',align='center',font=('黑体',18,'normal'))


screen.listen()
spacekey = Key('space') # 实例化空格键
while not spacekey.down():screen.update()
bug.goto(-20,-10)
bug.clear()
bug.play('余力学文.wav','弟子规歌词.txt')

# 下面的TK是就是tkinter
popup = TK.Menu(screen._root, tearoff=0)
popup.add_command(label="关于本程序",command=lambda:showinfo('关于','本程序由李兴球开发\n\nQQ:406273900\n\nwww.lixingqiu.com'))
popup.add_command(label="打开主页",command=lambda:os.system('explorer https://www.lixingqiu.com'))
popup.add_command(label="退出本程序",command=lambda:screen.bye())


以下代码省略......

下载完整源代码与素材,请

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, sprites, tkinter, turtle | 弟子规之余力学文歌已关闭评论

Python颜色增加模块:coloradd 简介下教学示例幻灯片免费下载

coloradd是颜色增加模块。主要用途为配合海龟画图turtle制作酷炫的图形与动画。

它里面主要有四个命令一个是coloradd,别名是addcolor。另一个是colorset,别名是setcolor。有brightset命令,用来设置颜色亮度,有saturation命令,用来设置颜色饱和度。2022年1月8号增加了lerpcolor命令,用来在两个颜色之间插入渐变颜色。

安装方法为在cmd管理员框下输入 pip install coloradd。

以下假设有三元组c,它的值为(255,0,0),分别为red,green,blue三种颜色的份量,这个元组在turtle模块的colormode(255)模式下可以代表红色。

coloradd命令用法
coloradd命令能让RGB255格式的颜色的色调增加,返回的也是三元组,效果就像Scratch中的颜色增加积木命令一样。
如coloradd(c,0.01)返回(255, 15, 0), coloradd(c,0.02)返回(255, 30, 0),coloradd(c,0.03)返回(255, 45, 0),这样颜色就能向着红橙黄绿青蓝紫的“方向”渐变。

colorset命令用法

colorset命令能把一个整数转换成RGB255格式的三元组,这样海龟画图就能识别成颜色了。以下是代码示例:

>> colorset(0)
(255, 0, 0)
>>> colorset(10)
(255, 42, 0)
>>> colorset(20)
(255, 84, 0)
>>> colorset(30)
(255, 127, 0)

brightset命令用法

brightset命令用途是设置一个RGB颜色三元组的亮度。它的第二个参数为一个从0到1的小数,值越大越亮!以下是代码示例:

>>> brightset(c,0.1)
(51, 0, 0)
>>> brightset(c,0.2)
(102, 0, 0)
>>> brightset(c,0.3)
(153, 0, 0)
>>> brightset(c,0.5)
(255, 0, 0)
>>> brightset(c,0.8)
(255, 153, 153)
>>> 

saturationset命令用法

saturationset命令的用途是设置一种RGB颜色三元组的饱和度。它的第二个参数为一个从0到1的小数,值越大饱和度越高!以下是代码示例:

>>> saturationset(c,0.1)
(140, 114, 114)
>>> saturationset(c,0.2)
(153, 102, 102)
>>> saturationset(c,0.3)
(165, 89, 89)
>>> saturationset(c,0.8)
(229, 25, 25)
>>> 

lerpcolor线性颜色插值命令用法示例:
在两种颜色之间插入一个中间颜色,它有三个参数。
color1为第一个颜色,color2为第二个颜色,amt表示线性比例,从0.0到1.0的值。
下面是示例代码:
import turtle
from coloradd import *

turtle.penup()
turtle.bk(200)
turtle.colormode(255)

fromC = (255,0,0)
toC = (0,0,255)
colorA = lerpcolor(fromC,toC,0.2)
colorB = lerpcolor(fromC,toC,0.4)
colorC = lerpcolor(fromC,toC,0.6)
colorD = lerpcolor(fromC,toC,0.8)

cs = [fromC,colorA,colorB,colorC,colorD,toC]
for c in cs:
turtle.dot(50,c)
turtle.fd(100)

多个示例与PDF说明书下载网址:

链接:https://pan.baidu.com/s/1zfSth9Mv3Ij6FK57O-UlGw
提取码:7ei6

 

 

发表在 python, turtle | 标签为 , , | Python颜色增加模块:coloradd 简介下教学示例幻灯片免费下载已关闭评论

3D红框_coloradd模块的lightset示例代码

"""
   3D红框,本程序需要最新版本coloradd模块运行,请在cmd管理员窗口下输入
   pip install coloradd进行安装
"""
from turtle import *
from coloradd import *

def draw_square(hg,length):
    for _ in range(4):
        hg.fd(length)
        hg.rt(90)
        
screen = Screen()
screen.colormode(255)          # 这里一定要设置为255
screen.bgcolor('dodger blue')  # 设置背景颜色
screen.tracer(0,0)             # 关闭自动刷新和绘画延时
screen.setup(480,360)
screen.title("3D红框")

tom = Turtle(shape='turtle')   # 新建tom海龟

c = (255,0,0)
for w in range(40,100):
    ys = lightset(c,w/100)     # 设置红色的亮度
    tom.color(ys)              # 把颜色设置为ys
    tom.pensize(100-w)         # 设置画笔宽度
    for x in range(8):         # 重复8次日
        draw_square(tom,100)   # 画正方形 
        tom.right(45)          # 右转45度
    screen.update()            # 屏幕更新显示

发表在 python, turtle | 3D红框_coloradd模块的lightset示例代码已关闭评论

coloradd模块0.25版示例代码棒棒糖_colorset_saturationset_lightset


coloradd模块主要用来配合海龟画图,能使所画的图形更加漂亮。
本源代码为coloradd模块学习代码,请认真查看saturationset和lightset和coloradd与colorset的用法
saturationset: 饱和度设置,lightset:亮度设置,coloradd:颜色增加,colorset颜色设置。

import turtle
from coloradd import *

ft = ("",12,"normal")
screen = turtle.getscreen()    
screen.colormode(255)
screen.delay(0)
screen.bgcolor('black')
screen.title("draw lollipop 画棒棒糖")

c  = (255,0,0)                # RGB红色
turtle.ht()                   # 隐藏海龟
turtle.penup()                # 抬起笔来
turtle.goto(0,100)            # 定位坐标
turtle.pendown()              # 落下画笔
for i in range(300):          # 迭代变量
    turtle.width(i/10)        # 画笔笔宽
    turtle.fd(i/10)           # 海龟前进
    turtle.rt(10)             # 海龟右转
    c = coloradd(c,0.01)      # 颜色增加
    turtle.pencolor(c)        # 画笔颜色
    
turtle.penup()                # 抬起笔来
turtle.goto(0,100)            # 定位坐标
turtle.setheading(-90)        # 方向向下
turtle.color("brown")         # 画笔颜色
turtle.pendown()              # 落下笔来
turtle.fd(280)                # 前进300
turtle.penup()                # 抬起笔来
turtle.color("gray")          # 画笔颜色
turtle.write("www.lixingqiu.com",align='center',font=ft)

# 亮度设置
turtle.goto(-300,-200)
turtle.write("lightset test (亮度测试)",font=ft)
turtle.goto(-300,-230)
c = (255,0,0)
turtle.setheading(0)
turtle.pendown()
for x in range(200):
    ys = lightset(c,x/200)   # 设置红色的亮度
    turtle.color(ys)
    turtle.fd(3)
turtle.penup()

# 饱和度设置
turtle.goto(-300,-280)
turtle.write("saturation test (饱和度测试)",font=ft)
turtle.goto(-300,-300)
c = (255,0,0)
turtle.setheading(0)
turtle.pendown()
for x in range(200):
    ys = saturationset(c,x/200) # 设置红色的饱和度
    turtle.color(ys)
    turtle.fd(3)

screen.mainloop()

发表在 python, turtle | coloradd模块0.25版示例代码棒棒糖_colorset_saturationset_lightset已关闭评论

艺术彩花之三角花


"""
   艺术彩花之三角花,配上了音乐,那可效果不一般啦!
"""
import turtle
from winsound import *

PlaySound('mysterious.wav',SND_ASYNC|SND_LOOP)

screen = turtle.getscreen()  # 获取屏幕对象
screen.colormode(255)        # 设定颜色模式
screen.bgcolor('black')      # 设置背景颜色为黑
screen.delay(6)              # 设定绘画延时 
screen.setup(480,360)        # 设定屏幕宽高
screen.title('艺术彩花之三角花by李兴球www.lixingqiu.com')


turtle.pensize(4)            # 画笔粗细
turtle.setheading(90)        # 初始方向为向上

成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)

发表在 python, turtle | 艺术彩花之三角花已关闭评论