用户:星空的名字查看:0 回复:3 评论:0 创建时间:2021-07-13T21:40:28
【作品展示】

【作品介绍】
作品以鄙人之前的作品为原型改编的作品中键盘左键为左,右键为右
血量不用尽,游戏不停止
【作品源代码】
from arcade import *
import random
# 设置窗体宽和高
SCREEN_WIDTH = 600
SCREEN_HEIGHT = 800
# 设置窗体标题
SCREEN_TITLE = "长隆冒险"
class Road(Sprite):
def __init__(self, image):
super().__init__(image)
# 车道
self.center_x = SCREEN_WIDTH//2
self.center_y = SCREEN_HEIGHT//2
# 设置车道的改变值
self.change_y = -3
def update(self):
super().update()
if self.center_y <= SCREEN_HEIGHT//2 - SCREEN_HEIGHT:
self.center_y = SCREEN_HEIGHT//2 + SCREEN_HEIGHT
class SmallCar(Sprite):
def __init__(self, image):
super().__init__(image)
self.center_x = SCREEN_WIDTH//2
self.center_y = 100
class Cart(Sprite):
def __init__(self, image):
super().__init__(image)
self.center_x = random.choice(
[SCREEN_WIDTH//2 - 200, SCREEN_WIDTH//2, SCREEN_WIDTH//2 + 200])
self.center_y = random.randint(
SCREEN_HEIGHT, SCREEN_HEIGHT + SCREEN_HEIGHT//2)
self.change_y = -2
class GameOver(Sprite):
def __init__(self, image):
super().__init__(image)
self.center_x = SCREEN_WIDTH//2
self.center_y = SCREEN_HEIGHT//2
class StatusBar():
def __init__(self):
self.distance = 0
self.hp = 2
def draw_bar(self):
draw_rectangle_filled(
SCREEN_WIDTH//2, SCREEN_HEIGHT - 15, SCREEN_WIDTH, 30, color.WHITE)
def draw_distance(self):
pos_x = 10
pos_y = SCREEN_HEIGHT - 20
draw_text(f"路程: {self.distance}", pos_x, pos_y,
color.BLUE, font_name=("simhei", "PingFang"))
draw_text(f"血量不尽,游戏不止", pos_x, pos_y - 15, color.BLUE,
font_name=("simhei", "PingFang"))
def draw_hp(self):
# 提示字
pos_x = SCREEN_WIDTH//2 - 50
pos_y = SCREEN_HEIGHT - 20
draw_text(f"血量:", pos_x, pos_y, color.BLUE,
font_name=("simhei", "PingFang"))
# 心
hearts = SpriteList()
for i in range(self.hp):
heart = Sprite("血量.png")
heart.center_x = pos_x + 50 + heart.width * i
heart.center_y = pos_y + 5
hearts.append(heart)
hearts.draw()
# 图标
tubiao = Sprite("tubiao.png")
tubiao.center_x = pos_x + 250
tubiao.center_y = pos_y - 10
tubiao.draw()
class MyCar(Window):
def __init__(self, width, height, title):
super().__init__(width, height, title)
# 窗体初始化
self.setup()
def setup(self):
# 车道
self.road1 = Road("车道.png")
self.road2 = Road("车道.png")
self.road2.center_y = SCREEN_HEIGHT//2 + SCREEN_HEIGHT
# 熊猫
self.喵all_m = SmallCar("xiongmao.png")
self.s = SpriteList()
self.create_carts()
# 程序运行总时间
self.total_time = 0
# 上一次计时
self.last_time = 0
# 状态栏
self.status_bar = StatusBar()
# 游戏状态栏
self.game_status = True
# 游戏结束界面
self.gameover = GameOver("gameover.png")
def on_draw(self):
# 开始绘图
start_render()
self.road1.draw()
self.road2.draw()
self.喵all_m.draw()
for cart in self.s:
cart.draw()
# 绘制状态栏
self.status_bar.draw_bar()
self.status_bar.draw_distance()
self.status_bar.draw_hp()
# 绘制游戏结束界面
if not self.game_status:
self.gameover.draw()
def on_update(self, delta_time: float):
if self.game_status:
self.喵all_m.update()
# 移动车道
self.road1.update()
self.road2.update()
for cart in self.s:
cart.update()
if cart.top < 0:
cart.喵()
# 程序运行总时间
self.total_time += delta_time
if int(self.last_time) != int(self.total_time) and int(self.total_time) % 6 == 0:
self.create_carts()
self.last_time = self.total_time
# 状态栏
self.status_bar.distance = int(self.total_time)
# 碰撞检测
hit_list = check_for_collision_with_list(
self.喵all_m, self.s)
if hit_list:
for hit in hit_list:
hit.喵()
self.status_bar.hp -= 1
# 判断游戏状态
self.judge_gaw_status()
def on_key_release(self, symbol: int, modifiers: int):
# 左移
if symbol == key.LEFT and self.喵all_m.center_x >= SCREEN_WIDTH//2:
self.喵all_m.center_x -= 200
# 右移
elif symbol == key.RIGHT and self.喵all_m.center_x <= SCREEN_WIDTH//2:
self.喵all_m.center_x += 200
def create_carts(self):
cart_list = ["haishi.png", "hetun.png",
"laohu.png", "mulaohu.png", "qie.png"]
num = 2
x = random.sample(
[SCREEN_WIDTH//2 - 200, SCREEN_WIDTH//2, SCREEN_WIDTH//2 + 200], 2)
for i in range(num):
cart = Cart(random.choice(cart_list))
cart.center_x = x[i]
self.s.append(cart)
def judge_gaw_status(self):
if self.status_bar.hp <= 0:
self.game_status = False
if __name__ == '__main__':
game = MyCar(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_TITLE)
run()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn
命令方块好方来看看我的作品
"""公用变量声明:
1.choise=选择
2.danwei=单位
3.a=长/边长
4.b=宽
5.h=高
6.h2=上升后的高度"""
import datetime #导入时间函数
dy=datetime.datetime.now()#函数模块
print("===欢迎使用python计算器1.2.3===")
print("作者:命令方块好方")
print("联系作者:QQ179879喵43 抖音:Minecraft_指令君,如果有建议和bug欢迎反馈,想要更多软件请加作者QQ")
print()
print()
print("版权声明:")
print("代码仅供学习所用,其他人不得以任何途径复制代码并传播!")
print("软件及最终解释权归诺言工作室所有。")
print("copyright=诺言工作室™(2020~"+str(dy.year)+"©)")
"""更新内容:
1.1:
1.改进了一些内容
1.2:
1.细节优化
2.图标优化
1.2.1:
1.在打开后出现了时间
2.更新功能“输入有误”
3.其他更新和优化
"""
datenow=datetime.datetime.now()
print("当前系统时间:"+str(datenow.year)+"年"+str(datenow.month)+"月"+str(datenow.day)+"日")
print()
print("======主菜单======")
print("输入“a”进入四则运算菜单")
print("输入“b”进入数学应用菜单(学生党模式)")
print("输入“e”退出python计算器1.2.3")
print("输入“h”获取帮助")
#上面的是主菜单
while True:
choise=(input())
if choise=="e":#离开
quit()
elif choise=="a":#四则运算
print()
print("===四则运算菜单===")
print("输入“a”进行加法")
print("输入“b”进行减法")
print("输入“c”进行乘法")
print("输入“d”进行除法")
print("输入“e”进行综合运算")
print("输入“q”返回主菜单")
choise=(input())
if choise=="a":#加法
a=(float(input("加数1:")))
b=(float(input("加数2:")))
print(input(a+b))
print("输入“a”进入四则运算菜单")
print("输入“b”进入数学应(学生党模式)用菜单")
print("输入“e”退出python计算器1.2.3")
print("输入“h”获取帮助")
pass
elif choise=="b": #减法
a=(float(input("减数1:")))
b=(float(input("减数2:")))
print(input(a-b))
print("输入“a”进入四则运算菜单")
print("输入“b”进入数学应用(学生党模式)菜单")
print("输入“e”退出python计算器1.2.3")
print("输入“h”获取帮助")
pass
elif choise=="c": #乘法
a=(float(input("因数1:")))
b=(float(input("因数2:")))
print(input(a*b))
print("输入“a”进入四则运算菜单")
print("输入“b”进入数学应用(学生党模式)菜单")
print("输入“e”退出python计算器1.2.3")
print("输入“h”获取帮助")
pass
elif choise=="d": #除法
a=(float(input("被除数")))
b=(float(input("除数")))
print(input(a/b))
print("输入“a”进入四则运算菜单")
print("输入“b”进入数学应用(学生党模式)菜单")
print("输入“e”退出python计算器1.2.3")
print("输入“h”获取帮助")
pass
"""elif choise=="e":#综合运算
print(str(float(int((input("请输入算式:"))))))
elif choise=="q":#返回
print("返回主菜单:")"""
elif chose=="wwwwwwwwwwwwwwwwwwwwwwww":
pass
else:
print("输入有误")
elif choise=="h":#帮助
print("输入“a”进入四则运算菜单")
print("输入“b”进入数学应用(学生党模式)菜单")
print("你可以随时输入“e”退出python计算器1.2.3")
print("输入“h”获取帮助")
elif choise=="b":#数学应用
print()
print("===数学应用(学生党模式)菜单===")
print("输入“a”进入3年级菜单")
print("输入“b”进入4年级菜单")
print("输入“c”进入5年级菜单")
print("输入“d”进入6年级菜单")
print("输入“q”返回主菜单")
choise=(input())
if choise=="c":
print()
print("===5年级菜单===")
print("(提示:请输入选项前面的序号)")
print("1.长方体和正方体")
print("2.探索图形")
print("3.分数运算")
print("4.打电话")
print("5.找次品")
print("输入“q”返回主菜单")
choise=str(input())
if choise=="q":#数学应用菜单返回
print("返回主菜单:")
elif choise=="1":
print()
print("===长方体和正方体菜单===")
print("(请输入选项前面的序号)")
print("1.长方体的运算")
print("2.正方体的运算")
print("3.其他(数学应用)")
choise=(str(input()))
if choise=="1":
print()
print("===长方体菜单===")
print("(请输入选项前面的序号)")
print("1.表面积")
print("2.体积")
print("3.侧面积")
print("4.底面积")
print("5.棱长和")
choise==(str(input()))
if choise=="1":
print()
a=(int(input("长:")))
b=(int(input("宽:")))
h=(int(input("高:")))
print("计算中...")
print("表面积:"+str(2*((a*b)+(a*h)+(b*h))))
pass
elif choise=="2":
print()
a=(int(input("长:")))
b=(int(input("宽:")))
h=(int(input("高:")))
print("计算中...")
print("体积:"+str(a*b*h))
pass
elif choise=="3":
print()
a=(int(input("长:")))
b=(int(input("宽:")))
h=(int(input("高:")))
print("计算中...")
print("侧面积:"+str(2*((a*h)+(b*h))))
pass
elif choise=="4":
print()
a=(int(input("长:")))
b=(int(input("宽:")))
print("计算中...")
print("底面积:"+str(a*b))
pass
elif choise=="5":
input()
a=(input("长:"))
b=(input("宽 :"))
h=(input("高:"))
print("计算中...")
print("棱长和:"+str(4*(a+b+h)))
else:
print("输入有误")
print()
pass
elif choise=="2":
print()
print("===正方体菜单===")
print("(请输入选项前面的序号)")
print("1.表面积")
print("2.体积")
print("3.侧面积/底面积")
print("4.棱长和")
choise==(str(input()))
if choise=="1":
print()
a=(int(input("边长")))
print("计算中...")
print("表面积:"+str(a*a*6))
elif choise=="2":
print()
a=(int(input("边长:")))
print("计算中...")
print("体积:"+str(a**3))
elif choise=="3":
print()
a=(int(input("边长:")))
print("计算中...")
print("侧面积:"+str(a*a))
elif choise=="3":
print()
print("===长方体和正方体的其他(应用)菜单===")
print("(请输入选项前面的序号)")
print("1.六面刷五(刷墙只刷五面)")
print("2.不规则物体的体积(放水)(未知上升高度)")
choise==(str(input()))
elif choise=="4":
input()
a=(input("边长:"))
print("计算中...")
print("棱长和:"+str(6*a))
if choise=="1":
print()
print("请把长宽高一一对应,否则计算的结果不准确,而且此程序默认不刷顶面/底面!")
a=(input("长:"))
b=(input("宽:"))
c=(input("高"))
print("计算中...")
print("要刷的面积:"+str(2*(a*c+b*c+a*b)-a*b))
elif choise=="2":
print()
a=(input("长:"))
b=(input("宽:"))
h=(input("原来的水面高度:"))
h2=(input("上升后的高度:"))
print("计算中...")
print("不规则物体的体积:"+str(a*b*(h2-h)))
else:#数学应用的有误反馈
print("输入有误")
print()
print("输入“a”进入四则运算菜单")
print("输入“b”进入数学应(学生党模式)用菜单")
print("输入“e”退出python计算器1.2.3")
print("输入“h”获取帮助")
pass点赞0
评论