python基础之--人机大战,编程思维
import pygame import time #循环里面要sleep一下,不然一会儿就将内存占满了 from pygame.locals import * #检测键盘 import random import sys #退出系统 #动态的项目,先截个静态图来分析:化动为静,化难为易,一个西瓜切成块,再拼接起来 #拿到一个大项目,首先把项目的各个元素分成一个个的对象,确定对象具备的属性,方法,然后再组装成为一个项目 #玩家类: #属性:显示窗口、位置、图片、子弹列表、移动状态 #方法:显示、移动、开火,凡是动作类都搞成方法 class player():def __init__(self,screen):self.screen=screen#将一个窗口对象作为了属性值self.x=150self.y=500self.img =pygame.image.load("飞机\\hero.gif")self.bullet_list=[]self.ifmoveright=0#0表示不移动,1表示移动self.ifmoveleft=0def display(self):self.screen.blit(self.img,(self.x,self.y))print()for f in self.bullet_list:f.move()f.display()if f.y<=0:self.bullet_list.remove(f)def move(self):if self.ifmoveleft==1 and self.x>=-30:self.x-=20if self.ifmoveright==1 and self.x<=270:self.x+=20def fire(self):d=playerzd(self.screen,self.x,self.y)self.bullet_list.append(d) class playerzd():def __init__(self,screen,x,y):self.screen=screenself.x=xself.y=yself.img=pygame.image.load("飞机\\bullet.png")def display(self):self.screen.blit(self.img,(self.x,self.y))def move(self):self.y-=20 class diji():def __init__(self,screen):self.screen=screen#将一个窗口对象作为了属性值self.x=0self.y=0self.img =pygame.image.load("飞机\\enemy1.png")self.bullet_list=[]self.dijimove=0#0表示左移动,1表示右移动def display(self):self.screen.blit(self.img,(self.x,self.y))for b in self.bullet_list:b.move()b.display()if b.y>=600:self.bullet_list.remove(b)def move(self):if self.x<=0:self.dijimove=1if self.x>280:self.dijimove=0if self.dijimove==1:self.x+=10if self.dijimove==0:self.x-=10def fire(self):dijizd1=dijizd(self.screen,self.x,self.y)self.bullet_list.append(dijizd1) class dijizd():def __init__(self,screen,x,y):self.screen=screen#将一个窗口对象作为了属性值self.x=xself.y=yself.img=pygame.image.load("飞机\\bullet-1.gif")def display(self):self.screen.blit(self.img,(self.x,self.y))def move(self):self.y+=20 #玩家子弹类 #键盘监控 def jpinput(player):for event in pygame.event.get():if event.type==QUIT:print("正在退出")sys.exit(0)#强制退出if event.type==KEYDOWN:if event.key==K_RIGHT:print("正在右移动")player.ifmoveright=1if event.key==K_LEFT:print("正在左移动")player.ifmoveleft=1if event.key==K_SPACE:print("玩家开火")player.fire()if event.type==KEYUP:if event.key==K_RIGHT:player.ifmoveright=0if event.key==K_LEFT:player.ifmoveleft=0 class main():screen=pygame.display.set_mode((300,600))backimg = pygame.image.load("飞机\\background.png")a = player(screen)b = diji(screen)while 1==1:screen.blit(backimg,(0,0))b.move()c=random.randint(1,5)if c==1:b.fire()b.display()jpinput(a)a.move()a.display()pygame.display.update()time.sleep(0.5)
python基础之--人机大战,编程思维相关推荐
- python中国象棋人机大战_还记得浪潮杯首届象棋人机大战吗?五位高手被电脑18回合打败了...
[DhtmlXQ] [DhtmlXQ_init]500,350[/DhtmlXQ_init] [DhtmlXQ_title]浪潮杯人机大战,电脑vs五位高手[/DhtmlXQ_title] [Dhtm ...
- 用python的turtle画等边三角形讲解_通过Python turtle绘制等边三角形谈编程思维和逻辑...
相信三角形对于绝大数人来说,是再熟悉不过的一个几何图形了,并且在现实生活和工作中也经常遇见,如果要画的话,相信很多人也会说,简单的很啊,画三条相等的线段,每两个线段的夹角为60度就可以了啊,也许我们借 ...
- Python基础知识点总结13张思维导图(附全套教程)
如果初学者接触的第一门语言是Python,学习曲线则会平滑得多,掌握一些基本语法和Python内置的数据结构,已经可以上手写一些小工具或者小型应用.这对初学者来说,非常重要.因为学习的过程是一个突破舒 ...
- Python基础11-函数式编程与内置函数
目录 函数即变量 lambda关键字定义匿名函数 高阶函数 内置函数map 内置函数filter 内置函数reduce 内置函数看文档 函数即变量 书接上回,Python里面,函数就是变量,可以被当成 ...
- Python基础之六面向对象高级编程
'''面向对象高级编程 ''' from enum import Enum'''__slots__限制实例属性定义的属性只对当前类实例起作用,对于继承的子类不起作用''' class Student( ...
- python基础教学day20--多任务编程
一.多任务编程 1.所谓多任务编程就是操作系统可以同时运行多个任务.实质上是每个任务交替执行,每一个任务约执行0.01秒,由于速度太快看着像是所有任务一起执行. 二.多进程编程 1.编写完毕的代码,在 ...
- Python基础之 7. 面向对象编程基础
1. 概述 如今主流的软件开发思想有两种:一个是面向过程,另一个是面向对象.面向过程出现得较早,典型代表为C语言,开发中小型项目的效率很高,但是很难适用于如今主流的大中型项目开发场景.面向对象则出现得 ...
- Python基础Pro | (4) 函数式编程
本文取自廖雪峰Python教程,原文地址https://www.liaoxuefeng.com/wiki/1016959663602400. 目录 1. 前言 2. 高阶函数 3. map/reduc ...
- python飞机大战源码素材包_小甲鱼python基础教程飞机大战源码及素材
原博文 2018-12-22 23:32 − 百度了半天小甲鱼python飞机大战的源码和素材,搜出一堆不知道是什么玩意儿的玩意儿. 最终还是自己对着视频一行行代码敲出来. 需要的同学点下面的链接自取 ...
最新文章
- git submodule获取子模块
- Spring(二)——IoC
- poj 1338 Ugly Numbers(丑数模拟)
- 优秀的程序员VS糟糕的程序员
- java 内存分布_一图看懂JVM内存分布,永久记住!
- 修改intellij(idea)中mybatis对应的xml背景颜色
- 6 个快速学会 JavaScript 的秘诀!
- 【Luogu】P1122最大子树和(DFS,树上DP)
- makefile函数集锦
- Windows 性能监视器概述
- JSP技术的学习总结
- 思科路由器OSPF配置实例
- request.getParameterValues()用法
- 模糊逻辑基本原理与编程
- mac chrome更新错误12
- 单车---------Eason
- flex-shrink如何如何分配容器收缩空间
- 题解 SP2916 【GSS5 - Can you answer these queries V】
- polkit启动失败_CentOS Linux 7.4中polkit服务启动失败
- python是解释性语言!