python实现飞船游戏的纵向移动


Posted in Python onApril 24, 2020

本文实例为大家分享了python实现飞船游戏的纵向移动,供大家参考,具体内容如下

我是跟着书里一步步写到横向移动后 我就想怎么纵向移动,放上自己写的代码,如果有问题的话,请指出来,我也是刚刚学习python,希望可以跟大家多多交流。

新增的就是有关up和down的代码了。

我自己是成功了,肯定有其他的更优化的,那就等我在学习一段时间吧。

附上代码:

game_function:

import sys
import pygame

 # 监视键盘和鼠标事件 
def check_keydown_events(event,ship):
 if event.key==pygame.K_RIGHT:
  ship.moving_right=True
 elif event.key==pygame.K_LEFT:
  ship.moving_left=True
 elif event.key==pygame.K_UP:
  ship.moving_up=True
 elif event.key==pygame.K_DOWN:
  ship.moving_down=True

def check_keyup_events(event,ship):
 if event.key==pygame.K_RIGHT:
  ship.moving_right=False
 elif event.key==pygame.K_LEFT:
  ship.moving_left=False
 elif event.key==pygame.K_UP:
  ship.moving_up=False
 elif event.key==pygame.K_DOWN:
  ship.moving_down=False
 
def check_events(ship):
 for event in pygame.event.get():
  if event.type==pygame.QUIT:
   sys.exit()
  elif event.type==pygame.KEYDOWN:
   check_keydown_events(event,ship)
  elif event.type==pygame.KEYUP:
   check_keyup_events(event,ship)
 
def update_screen(ai_settings,screen,ship):
 screen.fill(ai_settings.bg_color)
 ship.blitme()

 pygame.display.flip() #让最近回执的屏幕可见(刷新)

ship:

import pygame
class Ship():

def __init__(self,ai_settings,screen):
 self.screen=screen
 self.ai_settings=ai_settings

#加载飞船图像
  self.image=pygame.image.load('chengyan_ship.bmp')
  self.rect=self.image.get_rect() 
  self.screen_rect=screen.get_rect()

 self.rect.centerx=self.screen_rect.centerx #x的坐标
 self.rect.centery=self.screen_rect.centery #y的坐标
 
 self.rect.bottom=self.screen_rect.bottom
 
 self.moving_right=False
 self.moving_left=False
 self.moving_up=False
 self.moving_down=False
 
 #得到飞船移动到最下面的值(我不知道有没有表述清楚...就是只能飞到界面的最下面)
 self.screen_top=self.rect.top
 
def update(self):
 #横向移动
 if self.moving_right and self.rect.right<self.screen_rect.right:
  self.rect.centerx+=self.ai_settings.ship_speed_factor
  #纵向移动
 if self.moving_left and self.rect.left>0:
  self.rect.centerx-=self.ai_settings.ship_speed_factor
 if self.moving_up and self.rect.top>0:
  self.rect.centery-=self.ai_settings.ship_speed_factor
 if self.moving_down and self.rect.top<self.screen_top:
  self.rect.centery+=self.ai_settings.ship_speed_factor

 self.rect.centerx=self.rect.centerx
 self.rect.centery=self.rect.centery

def blitme(self):
 self.screen.blit(self.image,self.rect)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现的一只从百度开始不断搜索的小爬虫
Aug 13 Python
使用Python操作Elasticsearch数据索引的教程
Apr 08 Python
Pthon批量处理将pdb文件生成dssp文件
Jun 21 Python
Python函数式编程指南(四):生成器详解
Jun 24 Python
python 统计代码行数简单实例
May 04 Python
Python引用传值概念与用法实例小结
Oct 07 Python
python读文件保存到字典,修改字典并写入新文件的实例
Apr 23 Python
详解Django 中是否使用时区的区别
Jun 14 Python
Python如何处理大数据?3个技巧效率提升攻略(推荐)
Apr 15 Python
详解Python并发编程之从性能角度来初探并发编程
Aug 23 Python
在jupyter notebook中调用.ipynb文件方式
Apr 14 Python
Python连接mysql数据库及简单增删改查操作示例代码
Aug 03 Python
python实现俄罗斯方块小游戏
Apr 24 #Python
iPython pylab模式启动方式
Apr 24 #Python
python实现扫雷小游戏
Apr 24 #Python
jupyter 使用Pillow包显示图像时inline显示方式
Apr 24 #Python
pyspark 随机森林的实现
Apr 24 #Python
Jupyter打开图形界面并画出正弦函数图像实例
Apr 24 #Python
pyspark给dataframe增加新的一列的实现示例
Apr 24 #Python
You might like
PHP 和 MySQL 基础教程(二)
2006/10/09 PHP
通过table标签,PHP输出EXCEL的实现方法
2013/07/24 PHP
php堆排序实现原理与应用方法
2015/01/03 PHP
php简单统计在线人数的方法
2016/05/10 PHP
qTip 基于JQuery的Tooltip插件[兼容性好]
2010/09/01 Javascript
浏览器打开层自动缓慢展开收缩实例代码
2013/07/04 Javascript
javascript中数组中求最大值示例代码
2013/12/18 Javascript
JavaScript实现的链表数据结构实例
2015/04/02 Javascript
js库Modernizr的介绍和使用
2015/05/07 Javascript
jquery实现图片上传之前预览的方法
2015/07/11 Javascript
js表单验证实例讲解
2016/03/31 Javascript
JavaScript字符串对象
2017/01/14 Javascript
详谈jQuery.load()和Jsp的include的区别
2017/04/12 jQuery
Angular中使用$watch监听object属性值的变化(详解)
2017/04/24 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
2017/12/20 jQuery
浅谈react-router@4.0 使用方法和源码分析
2019/06/04 Javascript
node基于async/await对mysql进行封装
2019/06/20 Javascript
浅析 Vue 3.0 的组装式 API(一)
2020/08/31 Javascript
Python Web框架Flask信号机制(signals)介绍
2015/01/01 Python
Python中几个比较常见的名词解释
2015/07/04 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
2017/06/20 Python
Python帮你识破双11的套路
2019/11/11 Python
Python实现word2Vec model过程解析
2019/12/16 Python
详解python tkinter模块安装过程
2020/01/06 Python
使用PyCharm安装pytest及requests的问题
2020/07/31 Python
python自动化办公操作PPT的实现
2021/02/05 Python
布鲁明戴尔百货店:Bloomingdale’s
2016/12/21 全球购物
C++:memset ,memcpy和strcpy的根本区别
2013/04/27 面试题
Linux机考试题
2015/10/16 面试题
畜牧兽医本科生个人的自我评价
2013/10/11 职场文书
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
2014年保管员工作总结
2014/11/18 职场文书
教导主任个人总结
2015/03/03 职场文书
反腐倡廉学习心得体会范文
2015/08/15 职场文书
光之国的四大叛徒:第一贝利亚导致宇宙毁灭,赛文奥特曼在榜
2022/03/18 日漫
SQL Server中T-SQL标识符介绍与无排序生成序号的方法
2022/05/25 SQL Server