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基础之--人机大战,编程思维相关推荐

  1. python中国象棋人机大战_还记得浪潮杯首届象棋人机大战吗?五位高手被电脑18回合打败了...

    [DhtmlXQ] [DhtmlXQ_init]500,350[/DhtmlXQ_init] [DhtmlXQ_title]浪潮杯人机大战,电脑vs五位高手[/DhtmlXQ_title] [Dhtm ...

  2. 用python的turtle画等边三角形讲解_通过Python turtle绘制等边三角形谈编程思维和逻辑...

    相信三角形对于绝大数人来说,是再熟悉不过的一个几何图形了,并且在现实生活和工作中也经常遇见,如果要画的话,相信很多人也会说,简单的很啊,画三条相等的线段,每两个线段的夹角为60度就可以了啊,也许我们借 ...

  3. Python基础知识点总结13张思维导图(附全套教程)

    如果初学者接触的第一门语言是Python,学习曲线则会平滑得多,掌握一些基本语法和Python内置的数据结构,已经可以上手写一些小工具或者小型应用.这对初学者来说,非常重要.因为学习的过程是一个突破舒 ...

  4. Python基础11-函数式编程与内置函数

    目录 函数即变量 lambda关键字定义匿名函数 高阶函数 内置函数map 内置函数filter 内置函数reduce 内置函数看文档 函数即变量 书接上回,Python里面,函数就是变量,可以被当成 ...

  5. Python基础之六面向对象高级编程

    '''面向对象高级编程 ''' from enum import Enum'''__slots__限制实例属性定义的属性只对当前类实例起作用,对于继承的子类不起作用''' class Student( ...

  6. python基础教学day20--多任务编程

    一.多任务编程 1.所谓多任务编程就是操作系统可以同时运行多个任务.实质上是每个任务交替执行,每一个任务约执行0.01秒,由于速度太快看着像是所有任务一起执行. 二.多进程编程 1.编写完毕的代码,在 ...

  7. Python基础之 7. 面向对象编程基础

    1. 概述 如今主流的软件开发思想有两种:一个是面向过程,另一个是面向对象.面向过程出现得较早,典型代表为C语言,开发中小型项目的效率很高,但是很难适用于如今主流的大中型项目开发场景.面向对象则出现得 ...

  8. Python基础Pro | (4) 函数式编程

    本文取自廖雪峰Python教程,原文地址https://www.liaoxuefeng.com/wiki/1016959663602400. 目录 1. 前言 2. 高阶函数 3. map/reduc ...

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

    原博文 2018-12-22 23:32 − 百度了半天小甲鱼python飞机大战的源码和素材,搜出一堆不知道是什么玩意儿的玩意儿. 最终还是自己对着视频一行行代码敲出来. 需要的同学点下面的链接自取 ...

最新文章

  1. git submodule获取子模块
  2. Spring(二)——IoC
  3. poj 1338 Ugly Numbers(丑数模拟)
  4. 优秀的程序员VS糟糕的程序员
  5. java 内存分布_一图看懂JVM内存分布,永久记住!
  6. 修改intellij(idea)中mybatis对应的xml背景颜色
  7. 6 个快速学会 JavaScript 的秘诀!
  8. 【Luogu】P1122最大子树和(DFS,树上DP)
  9. makefile函数集锦
  10. Windows 性能监视器概述
  11. JSP技术的学习总结
  12. 思科路由器OSPF配置实例
  13. request.getParameterValues()用法
  14. 模糊逻辑基本原理与编程
  15. mac chrome更新错误12
  16. 单车---------Eason
  17. flex-shrink如何如何分配容器收缩空间
  18. 题解 SP2916 【GSS5 - Can you answer these queries V】
  19. polkit启动失败_CentOS Linux 7.4中polkit服务启动失败
  20. python是解释性语言!

热门文章

  1. 2019美国大学计算机专业硕士申请条件,104@2019美国大学计算机(CS)硕士申请难度大比拼(二)...
  2. Flutter BLoC
  3. Rasbian系统 树莓派Python环境搭建
  4. 【LinuxUnix--exec 与 fock 系统调用】
  5. 江苏金丰机电有限公司参观考察
  6. php编辑器_新PHP编辑器
  7. 一个java多线程测试
  8. 前端系列——与众不同的移动端底部固定栏 fixed、absolute 兼容 iOS 和 Android 方案
  9. 两少年玩防狼喷雾剂 致广州地铁发生踩踏
  10. 上海踩踏事件所想,莫把应急预案当摆设