当前位置:   article > 正文

python基础之--人机大战,编程思维!_python人马大战csdn

python人马大战csdn

前言

import pygame
import time  #循环里面要sleep一下,不然一会儿就将内存占满了
from pygame.locals import \* #检测键盘
import random
import sys  #退出系统
#动态的项目,先截个静态图来分析:化动为静,化难为易,一个西瓜切成块,再拼接起来
#拿到一个大项目,首先把项目的各个元素分成一个个的对象,确定对象具备的属性,方法,然后再组装成为一个项目
#玩家类:
#属性:显示窗口、位置、图片、子弹列表、移动状态
#方法:显示、移动、开火,凡是动作类都搞成方法
class player():
    def \_\_init\_\_(self,screen):
        self.screen=screen#将一个窗口对象作为了属性值
        self.x=150
        self.y=500
        self.img =pygame.image.load("飞机\\\\hero.gif")
        self.bullet\_list=\[\]
        self.ifmoveright=0#0表示不移动,1表示移动
        self.ifmoveleft=0
    def 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-=20
        if self.ifmoveright==1 and self.x<=270:
            self.x+=20
    def 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=screen
        self.x=x
        self.y=y
        self.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=0
        self.y=0
        self.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=1
        if self.x>280:
            self.dijimove=0
        if self.dijimove==1:
            self.x+=10
        if self.dijimove==0:
            self.x-=10
    def 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=x
        self.y=y
        self.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=1
            if event.key==K\_LEFT:
                print("正在左移动")
                player.ifmoveleft=1
            if event.key==K\_SPACE:
                print("玩家开火")
                player.fire()
        if event.type==KEYUP:
            if event.key==K\_RIGHT:
                player.ifmoveright=0
            if 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)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122

Python入门教程

如果你现在还是不会Python也没关系,下面我会给大家免费分享一份Python全套学习资料, 包含视频、源码、课件,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,可以和我一起来学习交流。

① Python所有方向的学习路线图,清楚各个方向要学什么东西

② 600多节Python课程视频,涵盖必备基础、爬虫和数据分析

③ 100多个Python实战案例,含50个超大型项目详解,学习不再是只会理论

④ 20款主流手游迫解 爬虫手游逆行迫解教程包

爬虫与反爬虫攻防教程包,含15个大型网站迫解

爬虫APP逆向实战教程包,含45项绝密技术详解

⑦ 超300本Python电子好书,从入门到高阶应有尽有

⑧ 华为出品独家Python漫画教程,手机也能学习

⑨ 历年互联网企业Python面试真题,复习时非常方便

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/377925

推荐阅读
相关标签