python学习——飞机大战之初期

在开始正式编写飞机大战游戏之前,对pygame所提供的模块进行学习,以下代码只是验证了一些功能,并不能进行飞机大战游戏。

在开始正式的编写代码之前一定一定要先调用pygame.init()方法,并相应的调用pygame.quit()方法,这里要养成好的习惯,把成对出现的代码一并写好,以免最后忘记写,而导致错误,然后在pygame.init()与pygame.quit()之间写游戏代码。

import pygame #导入pygame模块,pygame是专门设计用来设计游戏的python模块。
from plane_sprites import* #此模块继承了pygame中sprite类中Sprite方法,有了此模块后不需要每次都进行处理图像加载、绘制图像等代码
pygame.init()#加载pygame的模块
screen = pygame.display.set_mode((480,850))#利用set_mode方法创建游戏的主窗口,set_mode方法有三个缺省参数,第一个位元组,指定屏幕的大小,默认屏幕与窗口大小一致,第二个为标志位,默认为0,第三个为深度,默认也为0,注意set_mode方法有返回结果,返回一个Surface对象,需要变量记录此返回结果,此程序中由screen接收返回结果,后续的图像绘制都在此窗口上进行
background = pygame.image.load("./image/background.png")#调用load方法加载背景图像,load方法中传入背景图像所在位置,.表示当前目录screen.blit(background,(0,0)) #screen调用blit方法,在刚刚创建的窗口中绘制背景图像,bilt方法需要传入两个参数第一个为背景图像,第二个为背景图像绘制的位置,此参数可以为元组,也可以为矩形对象,如果想要看到绘制的图像还需要调用display模块中的update()方法,此方法更新屏幕显示,所以最好一起写出来两个方法
hero = pygame.image.load("./image/hero.gif")#加载英雄图片
screen.blit(hero,(200,400))#在制定位置绘制英雄图片
pygame.display.update()#更新屏幕显示 ,可以在窗口上看到刚刚绘制英雄的图片,一定要记住无论绘制什么图像最后都要调用此方法,否则在游戏窗口中看不到所绘制的图像
clock = pygame.time.Clock()#创建时钟对象
hero_rect = pygame.Rect(200,400,100,124)#调用Rect()方法,Rect()方法用来描述矩形对象,接收4个参数分别是位置参数,x,y代表绘制图像的位置,以及矩形的宽高,用hero_rect变量来记录英雄图片的位置
enemy0 = GameSprite("./image/enemy0_down1.png")#GameSprite类的实例化,并传入相应参数,speed为默认值
enemy1 = GameSprite("./image/enemy0_down2.png",speed = 2)
enemy_group = pygame.sprite.Group(enemy0,enemy1)#调用精灵组方法
while True:#游戏循环,游戏正式开始,产生相应的动画效果,(所谓动画效果就是静止图片快速移动,产生的视觉效果就是连续的,所以就需要调用一种方法使图像快速移动,快速更新)以上都是游戏的准备工作,下面就是可以是图片可以连续移动的代码
  clock.tick(60)#游戏刷新帧率,tick()方法会根据上次被调用的时间,设置循环中的延时,tick()可以指定循环体内部的代码执行频率
  hero_rect.y -= 1#使英雄图片向上移动
  if hero_rect.y <= -124: #判断英雄图片是否移出屏幕,如果移出则将英雄图片重新放到背景图片底部
    hero_rect.y = 800
  screan.blit(background,(0,0)) #重新绘制背景图片,然后把每一张图片重新绘制到新的背景图片上,否则会出现重影现象
  screan.blit(hero ,hero_rect)#在hero_rect上绘制英雄图像,hero_rect实际是记录英雄图片移动的每一帧     enemy_group.update() #调用精灵组中update方法,使精灵组中所有精灵调用update方法
  enemy_group.draw(screen) #调用精灵组中的draw方法,使精灵组中所有精灵绘制到screen上
  pygame.display.update() #更新屏幕显示
pygame.quit()#卸载所有pygame模块

原文地址:https://www.cnblogs.com/wangaige/p/9083079.html

时间: 2024-07-31 23:01:06

python学习——飞机大战之初期的相关文章

Python版飞机大战

前面学了java用java写了飞机大战这次学完python基础后写了个python版的飞机大战,有兴趣的可以看下. 父类是飞行物类是所有对象的父类,setting里面是需要加载的图片,你可以换称自己的喜欢的图片,敌机可以分为敌机和奖励,enemy为普通敌人的父类,award为奖励敌机的父类. 各个类的基本属性 主类的大概逻辑 具体的代码: settings配置 import pygame class Settings(object): """设置常用的属性"&quo

python开发飞机大战

1.使用pygame包,使用Python3.5版本2.达到的效果是: 出现一个窗口,显示一张背景图片,出现一架敌机和一架自己的飞机 敌机在最上面,左右移动,随机发子弹,自己的飞机使用键盘左右键左右移动,使用空格键发子弹 当自己的飞机发出的子弹碰到敌机发出的子弹时,敌机的子弹消失 当自己的飞机发出的子弹碰到敌机时,敌机原地摧毁后,再次出现开始游戏 当敌机发出的子弹碰到自己的飞机时,飞机原地摧毁,并退出游戏 3.主要涉及,飞机运动,子弹检测,子弹碰撞检测等,使用面向对象的思路 import pyga

python项目飞机大战

实现步骤 1.创建窗口 2.创建一个玩家飞机,按方向键可以左右移动 3.给玩家飞机添加按空格键发射子弹功能 4.创建一个敌机 5.敌机自动左右移动 6.敌机自动发射子弹 1.创建窗口 import pygame import time def main(): #1.创建窗口 screen = pygame.display.set_mode((480,852)) #2 创建一个背景图片 background = pygame.image.load('./feiji/background.png')

Python飞机大战实例有感——pygame如何实现“切歌”以及多曲重奏?

目录 pygame如何实现"切歌"以及多曲重奏? 一.pygame实现切歌 初始化路径 尝试一 尝试二 尝试三 成功 总结 二.如何在python多线程顺序执行的情况下实现音乐和音效同时播放? 尝试一 尝试二 尝试三 尝试四 成功 总结 pygame如何实现"切歌"以及多曲重奏? 昨天晚上研究了好久pygame的音乐混合器mixer,出了很多问题后最终成功,不过学习本来也不可能一帆风顺的吗,下面我就来讲一讲我遇到的问题. 一.pygame实现切歌 初始化路径 # 导

【python】步骤四 第二课、实现飞机大战

第二课.实现飞机大战 一.项目介绍 项目实战:飞机大战 课程目标 掌握面向对象分析和开发的思想 能对项目进行拆分,进行模块化开发 了解项目开发的基本流程 理解并运用python的包.模块相关知识 理解并运用文件读写,函数式编程 理解简单2D游戏开发的基本思路 能独立开发简单的2D游戏项目 掌握IDE的调试技巧 项目功能模块 我方飞机 敌方小型飞机 敌方中型飞机 图片资源 音效资源 游戏历史 子弹 游戏展示结果 所需技能点 python的基础,包括变量.字符串.分支.条件控制.循环等 python

[知了堂学习笔记]_纯JS制作《飞机大战》游戏_第1讲(实现思路与游戏界面的实现)

整体效果展示: 一.实现思路 如图,这是我完成该项目的一个逻辑图,也是一个功能模块完成的顺序图. 游戏界面的完成 英雄飞机对象实现,在实现发射子弹方法过程中,又引出了子弹对象并实现.在此时,英雄飞机能进行基本操作了. 敌机对象的实现,并且初步完成了boos出现(30s自动出现).然后又引出了许多方法的处理,如英雄子弹击中敌机和boos,英雄与敌机相撞等等.并一一解决. 随后又设置了一些游戏的参数,如血量,关卡数,等级,积分,必杀,道具对象等等. 最后又完成了一些辅助功能,暂停游戏,继续游戏,退出

飞机大战c语言编程学习体会

#include <stdio.h>#include <conio.h>#include <stdlib.h>#include <time.h>#define N 35void print(int [][N]);//输出函数void movebul(int [][N]);//子弹移动函数void movepla(int [][N]);//敌机移动函数void setting(void);//设置函数void menu(void);//菜单函数int scr[

python学习笔记(七) 类和pygame实现打飞机游戏

python中类声明如下: class Student(object): def __init__(self, name, score): self.name = name self.score = score def printinfo(self): print('name is %s, score is %d'%(self.name, self.score)) Student类有两个成员变量,name和score,类的成员函数第一个参数都为self,用来实现成员变量的赋值,__init__是

小甲鱼python基础教程飞机大战源码及素材

百度了半天小甲鱼python飞机大战的源码和素材,搜出一堆不知道是什么玩意儿的玩意儿. 最终还是自己对着视频一行行代码敲出来. 需要的同学点下面的链接自取. 下载 原文地址:https://www.cnblogs.com/144823836yj/p/10162920.html