Python の基礎 - 人間と機械の戦争、プログラミング的思考

import pygame 
import time #ループ内でスリープする必要があります。そうしないと、しばらくするとメモリがいっぱいになります
from pygame.locals import * #キーボードを検出
import Random 
import sys #システムを終了
#動的プロジェクトの場合は、最初に静的な写真を撮ります分析する: 平静を保つために、困難を簡単に変えてください。スイカを細かく切って、それらを組み合わせてください。
大規模なプロジェクトを取得した場合、まずプロジェクトのさまざまな要素をオブジェクトに分割し、オブジェクトの属性とメソッドを決定します。
# Player クラス: #属性
: 表示ウィンドウ、位置、画像、箇条書きリスト、移動ステータス
# メソッド: 表示、移動、発射、すべてのアクション クラスがメソッドに作成されます class 
player() : 
    def __init__(self,screen): 
        self.screen =screen# 属性値としてウィンドウ オブジェクトを使用します
        self.x=150 
        self.y=500 
        self.img =pygame.image.load("Airplane\\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)) 
        self.y=y
        print() 
        for f in self.bullet_list: 
            f.move() 
            f.display() 
            if fy<=0: 
                self.bullet_list.remove(f) 
    def move(self): 
        if self.ifmoveleft==1 および self。 x>=-30: 
        self.ifmoveright==1 および self.x<=270 の場合、 self.x-= 
            20 : 
            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.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("Airplane\\emone1.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 () 
            by>=600 の場合: 
        self.x<=0 の場合: 
            self.dijimove=1 
                self.bullet_list.remove(b)
    def move(self): 
#玩家子弹类
        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):
    : 
        ifevent.type==QUIT: 
            print("Exiting") 
            sys.exit(0)#強制終了
        ifevent.type==KEYDOWN: 
            ifevent.key = =K_RIGHT: 
                print("右へ移動") 
                player.ifmoveright=1 
            ifevent.key==K_LEFT: 
                print("左へ移動") 
                player.ifmoveleft=1 
            ifevent.key==K_SPACE: 
                print("プレイヤーの射撃") 
                player.fire() 
        ifevent.type==KEYUP: 
            ifevent.key==K_RIGHT: 
                player.ifmoveright=0 
            ifevent.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) 
        c==1 の場合: 
            b.fire() 
        b.display() 
        jpinput(a) 
        a.move() 
        a .display() 
        pygame.display.update() 
        time.sleep(0.5)

おすすめ

転載: blog.csdn.net/qq_40333984/article/details/125637376