"""
碰到边缘就反弹的金币收集游戏,译者:lixingqiu,这是用Arcade街机模块制作的一个游戏示例。
演示了如何实例化角色,实例化角色列表,类的继承,角色的移动等。当前最新版本是2.0.0b4。
安装方法:pip install arcade==2.0.0b4 (2019/2/27),注释翻译:www.lixingqiu.com
arcade模块是由Paul Vincent Craven开发并维护,专业用来开发街机游戏。"""import random
import arcade
import os# 常量定义
SPRITE_SCALING_PLAYER = 0.5
SPRITE_SCALING_COIN = 0.2
COIN_COUNT = 50SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
SCREEN_TITLE = "碰到边缘就反弹的金币收集游戏,译者:lixingqiu"class Coin(arcade.Sprite):def __init__(self, filename, sprite_scaling):super().__init__(filename, sprite_scaling)self.change_x = 0self.change_y = 0def update(self):# 移动金币self.center_x += self.change_xself.center_y += self.change_y# 碰到边缘就反弹if self.left < 0:self.change_x *= -1if self.right > SCREEN_WIDTH:self.change_x *= -1if self.bottom < 0:self.change_y *= -1if self.top > SCREEN_HEIGHT:self.change_y *= -1class MyGame(arcade.Window):""" 继承自Window类的MyGame类"""def __init__(self):""" 初始化器 """# 调用父类的初始化器super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_TITLE)# 所有角色列表定义self.all_sprites_list = Noneself.coin_list = None# 定义玩家角色相关变量self.player_sprite = Noneself.score = 0# 隐藏鼠标self.set_mouse_visible(False)arcade.set_background_color(arcade.color.AMAZON)def setup(self):""" 设置游戏 """# 实例化角色列表self.all_sprites_list = arcade.SpriteList()self.coin_list = arcade.SpriteList()# 得分self.score = 0# 玩家角色实例化self.player_sprite = arcade.Sprite("images/character.png", SPRITE_SCALING_PLAYER)self.player_sprite.center_x = 50self.player_sprite.center_y = 50self.all_sprites_list.append(self.player_sprite)# 实例化一些金币for i in range(50):# 创建金币对象coin = Coin("images/coin_01.png", SPRITE_SCALING_COIN)# 随机设定坐标coin.center_x = random.randrange(SCREEN_WIDTH)coin.center_y = random.randrange(SCREEN_HEIGHT)coin.change_x = random.randrange(-3, 4)coin.change_y = random.randrange(-3, 4)# 增加到所有角色列表self.all_sprites_list.append(coin)self.coin_list.append(coin)def on_draw(self):""" 重画方法 """arcade.start_render()self.all_sprites_list.draw()# 放得分文本output = f"Score: {self.score}"arcade.draw_text(output, 10, 20, arcade.color.WHITE, 14)def on_mouse_motion(self, x, y, dx, dy):""" 处理鼠标移动 """# Move the center of the player sprite to match the mouse x, yself.player_sprite.center_x = xself.player_sprite.center_y = ydef update(self, delta_time):""" 游戏逻辑更新 """# 所有角色更新self.all_sprites_list.update()# 玩家所操作角色和金币的碰撞检测hit_list = arcade.check_for_collision_with_list(self.player_sprite,self.coin_list)# 碰到的金币被删除并加分for coin in hit_list:coin.kill()self.score += 1def main():window = MyGame()window.setup()arcade.run()if __name__ == "__main__":main()

碰到边缘就反弹的金币收集游戏,译者:lixingqiu相关推荐

  1. 【Scratch-动作模块】碰到边缘就反弹和翻转方式

    指令解释 碰到边缘就反弹 旋转方式设为:分为左右翻转.不可旋转.任意旋转(默认旋转方式)三种 对应效果 对应效果 对应效果 视频演示 「零基础学习Scratch3.0」26运动模块碰到边缘和翻转积木 ...

  2. 第二章 第六课 Scratch作品:摇摇晃晃的虫子(随机数和碰到边缘就反弹)

    同学们,今天我们学习随机数,并且复习循环和碰到边缘就反弹. 知识点总结: 1. Scratch中有三种类型循环:重复执行是其中的一种. 重复执行,表示一直执行下去. 2. 碰到边缘就反弹,表示角色会在 ...

  3. java 滚动小球_Java语言编写一个程序:在面板中多个小球浮动,碰到边缘则反弹,小球和小球想撞得话,其中一个就消失...

    编写一个窗体的类BallFrameDemo: package com.lzy.ball; import javax.swing.JFrame; public class BallFrameDemo e ...

  4. unity小球吃金币小游戏

    链接放在这里 unity小球吃金币小游戏-Unity3D文档类资源-CSDN下载这是我在学完虚拟现实技术这门课程后利用unity所做的小球吃金币小游戏,里面有源码和作品源文件,用u更多下载资源.学习资 ...

  5. Unity3d小球碰到墙壁之后反弹

    Unity物理反弹时的反弹系数:也就是Physic Material 的Bounciness属性 给小球的Collider添加Material属性就好啦 1.小球首先要有碰撞盒 2.创建一个Physi ...

  6. 无聊的时候怎么办?教你用java写一个简单挂机打金币小游戏吧!

    无聊的时候怎么办?教你用java写一个超简单挂机打金币小游戏吧! Java写一个挂机打金币程序 1.Java的面向对象 2.基础打金的分析 3. Robot介绍以及Demo演示 4.挂机打金程序如何去 ...

  7. Unity 数字跳动增长,金币收集路径动画

    一.想实现一个金币按照曲线运动到目标位置的动画,同时运动的过程中需要有金币收集的数字增长动画 二.思路 贝塞尔曲线计算路径,Dotween 进行路径动画 数字增长动画用dotween做 微信公众号:

  8. H5实现点击获取金币小游戏以及大富翁

    最近做了一个比较不错的点击获取金币小游戏,这里分享给大家 主要实现方式是通过hilojs实现的 以下为官方文档的地址 官方文档 第一步:安装插件 npm i hilojs或者yarn add hilo ...

  9. 黑马Qt翻金币小游戏——拓展到100关

    目录 前言: 一.拓展--增加到100功能实现: 二.拓展--下一关实功能现 三.最后分享ChooseWindow.h.ChooseWindow.cpp和PlayWindow.h.PlayWindow ...

最新文章

  1. 大厂架构都开始做机房多活了
  2. Android之相对布局
  3. 【机器学习】搞懂机器学习的常用评价指标!
  4. Android期末考试题
  5. 决策树原理详解及python代码实现
  6. windows远程连接ubuntu 黑屏_Windows跟Windows远程连接传输文件
  7. php中时间轴,PHP时间轴函数
  8. 小程序沉浸式_企业开发小程序:客户裂变式增长
  9. 【SQLSERVER】SQL SERVER 2008筛选表报错
  10. 第九节:委托和事件(1)(委托的发展历史、插件式编程、多播委托)
  11. 利用反射过滤对象的null值
  12. java实现单词或字符串反转
  13. mysql在缺省状态下_MYSQL面试题
  14. c#通过RFC调用SAP接口程序之输入输出参数案例
  15. AI技术如何做工程?
  16. C#使用DevExpress中的chartcontrol
  17. 如何编译运行opencv的sample
  18. 收款码三合一制作生成系统源码
  19. windows 8.1 关机
  20. 常用的端口号有哪些?

热门文章

  1. 机房服务器系统整合注意事项,idc服务器机房搬迁后注意的事项你知道吗?
  2. 前辈们的话--大疆技术总监的金玉良言
  3. 非常好用的 npx!!!
  4. SQL Server 附加数据库
  5. 生日快乐歌用c语言16进制,生日快乐歌
  6. 大学生活怎么过才会有意义
  7. 如何在vue中实现文件预览功能
  8. 本地mysql访问线上_MySQL线上与本地实时同步
  9. 课堂练习4.1:段式内存管理
  10. Latex 绘制流程图