pygameでインベーダーゲームもどき

大砲、大砲から発射する玉、打つ対象のトンボ、障壁
のそれぞれの座標管理が必要です。

それぞれの座標は玉とトンボの衝突、玉と障壁の衝突
の検出に使います。


さあゲームクリア出来る人はいるのでしょうか?
制限時間は15秒です。

 

 

 

from pygame.locals import *
import sys
import pygame
import random
import time


WIDTH  = 640        # 幅
HEIGHT = 400        # 高さ

WALL_COUNT = 2
BALL_COUNT = 10
TARGET_COUNT = 10

class top_app():

    def __init__(self):
        pygame.init()
        self.main_surface = pygame.display.set_mode((500, 500)) 
        self.by0 =400
        self.by1 =400
        self.by2 =400
        self.x3=300
        self.y3 =400
        self.target_size=8
        self.wall_size=40
        self.xy0state=0    
        self.khit=0
        self.state = 0
        self.hit_count=0
        self.stop=1
        self.hit=[0,1,2,3,4,5,6,7,8,9]
        self.state = 0
        self.kstate = 0
        self.xstate=[0,1,2,3,4,5,6,7,8,9]
        self.ystate=[0,1,2,3,4,5,6,7,8,9]
        self.x_wall=100
        self.y_wall=100
        self.xwall_state=0
        self.wall_hit = 0
        self.dummy_hit = 0

        self.bxt=[0,1,2,3,4,5,6,7,8,9]
        self.byt=[0,1,2,3,4,5,6,7,8,9]
        self.xk=[0,1,2,3,4,5,6,7,8,9]
        self.yk=[0,1,2,3,4,5,6,7,8,9]
        self.x=[0,1,2,3,4,5,6,7,8,9]
        self.y=[0,1,2,3,4,5,6,7,8,9]
        self.dummy_x=[0,1,2,3,4,5,6,7,8,9]
        self.dummy_y=[0,1,2,3,4,5,6,7,8,9]
        self.xkstate=[0,1,2,3,4,5,6,7,8,9]
        self.ykstate=[0,1,2,3,4,5,6,7,8,9]
        self.scenario_state=0
        self.timeout=0

        self.loop_count=0

        for i in range(BALL_COUNT):
            self.bxt[i]=300
            self.byt[i]=400
            self.xk[i]=150
            self.yk[i]=30
            self.x[i]=150
            self.y[i]=30
            self.dummy_x[i]=150
            self.dummy_y[i]=100
            self.xkstate[i]=0    
            self.ykstate[i]=0    
            self.xstate[i]=0    
            self.ystate[i]=0    
            self.hit[i]=0
            self.dummy_x[i]=self.x_wall
            self.dummy_y[i]=self.y_wall


    def main(self):
        
        self.game_loop()

        pygame.quit()
        sys.exit()

    def hit_check(self):
        for j in range(BALL_COUNT):
            for i in range(TARGET_COUNT):
                if(((self.bxt[j]>(self.x[i]-self.target_size-10))and(self.bxt[j]<(self.x[i]+self.target_size+10)))
                and((self.byt[j]>(self.y[i]-10))and(self.byt[j]<(self.y[i]+10)))):
                    self.hit[i]=1

    def wall_col_check(self):
        for j in range(BALL_COUNT):
            if(((self.bxt[j]>(self.x_wall-self.target_size))and(self.bxt[j]<(self.x_wall+self.target_size+50)))
                and((self.byt[j]>(self.y_wall-10))and(self.byt[j]<(self.y_wall+10)))):
               self.wall_hit = 1

    def dummy_col_check(self):
        for j in range(BALL_COUNT):
            if(((self.dummy_x[j]>(self.x3-50))and(self.dummy_x[j]<(self.x3)))
                and((self.dummy_y[j]>(400-10))and(self.dummy_y[j]<(400+10)))):
               self.dummy_hit = 1

    def all_hit(self):
        for i in range(TARGET_COUNT):
            if (self.hit[i]==0):
                return 0       
            else:
                pass
        return 1

    def make_wall(self):
        pygame.draw.rect(self.main_surface, (100,0,255), (self.x_wall+10, self.y_wall-10,10,10))
        pygame.draw.rect(self.main_surface, (100,0,255), (self.x_wall+20, self.y_wall-20,10,10))
        pygame.draw.rect(self.main_surface, (100,0,255), (self.x_wall+20, self.y_wall-10,10,10))
        pygame.draw.rect(self.main_surface, (100,0,255), (self.x_wall+30, self.y_wall-10,10,10))
        pygame.draw.rect(self.main_surface, (100,0,255), (self.x_wall, self.y_wall,50,10))
            
    def make_target(self):
        for i in range(TARGET_COUNT):
            if(self.hit[i]==0):
                pygame.draw.circle(self.main_surface, (random.randint(0,255),random.randint(0,255),random.randint(0,255)), (self.x[i], self.y[i]), self.target_size)
                pygame.draw.circle(self.main_surface, (random.randint(0,255),random.randint(0,255),random.randint(0,255)), (self.x[i]-8, self.y[i]-8), self.target_size)
                pygame.draw.circle(self.main_surface, (random.randint(0,255),random.randint(0,255),random.randint(0,255)), (self.x[i]-8, self.y[i]+8), self.target_size)
                pygame.draw.circle(self.main_surface, (random.randint(0,255),random.randint(0,255),random.randint(0,255)), (self.x[i]+8, self.y[i]-8), self.target_size)
                pygame.draw.circle(self.main_surface, (random.randint(0,255),random.randint(0,255),random.randint(0,255)), (self.x[i]+8, self.y[i]+8), self.target_size)
                pygame.draw.circle(self.main_surface, (0,0,0), (self.x[i], self.y[i]+16), self.target_size)
                pygame.draw.circle(self.main_surface, (0,255,0), (self.x[i]+8, self.y[i]+16), self.target_size)
                pygame.draw.circle(self.main_surface, (0,255,0), (self.x[i]-8, self.y[i]+16), self.target_size)
                pygame.draw.circle(self.main_surface, (0,255,0), (self.x[i]+16, self.y[i]+16), self.target_size)
                pygame.draw.circle(self.main_surface, (0,255,0), (self.x[i]-16, self.y[i]+16), self.target_size)
                pygame.draw.circle(self.main_surface, (0,255,0), (self.x[i]+24, self.y[i]+16), self.target_size)
                pygame.draw.circle(self.main_surface, (0,255,0), (self.x[i]-24, self.y[i]+16), self.target_size)
                pygame.draw.circle(self.main_surface, (0,0,0), (self.x[i], self.y[i]+24), self.target_size)
                pygame.draw.circle(self.main_surface, (0,0,0), (self.x[i], self.y[i]+32), self.target_size)
            else:
                pass
                

    def make_target2(self):
        for i in range(TARGET_COUNT):
            if(self.hit[i]==0):
                pygame.draw.rect(self.main_surface,(247, 247, 247) , (self.x[i]+0*5, self.y[i],5,5))
                pygame.draw.rect(self.main_surface,(246, 247, 249) , (self.x[i]+1*5, self.y[i],5,5))
                pygame.draw.rect(self.main_surface,(255, 243, 253) , (self.x[i]+2*5, self.y[i],5,5))
                pygame.draw.rect(self.main_surface,(235, 195, 46) , (self.x[i]+3*5, self.y[i],5,5))
                pygame.draw.rect(self.main_surface,(240, 219, 68) , (self.x[i]+4*5, self.y[i],5,5))
                pygame.draw.rect(self.main_surface,(243, 213, 67) , (self.x[i]+5*5, self.y[i],5,5))
                pygame.draw.rect(self.main_surface,(245, 210, 64) , (self.x[i]+6*5, self.y[i],5,5))
                pygame.draw.rect(self.main_surface,(227, 181, 36) , (self.x[i]+7*5, self.y[i],5,5))
                pygame.draw.rect(self.main_surface,(233, 218, 161) , (self.x[i]+8*5, self.y[i],5,5))
                pygame.draw.rect(self.main_surface,(246, 246, 244) , (self.x[i]+9*5, self.y[i],5,5))
                pygame.draw.rect(self.main_surface,(248, 246, 247) , (self.x[i]+0*5, self.y[i]+10/2,5,5))
                pygame.draw.rect(self.main_surface,(245, 245, 243) , (self.x[i]+1*5, self.y[i]+10/2,5,5))
                pygame.draw.rect(self.main_surface,(234, 191, 50) , (self.x[i]+2*5, self.y[i]+10/2,5,5))
                pygame.draw.rect(self.main_surface,(239, 218, 67) , (self.x[i]+3*5, self.y[i]+10/2,5,5))
                pygame.draw.rect(self.main_surface,(239, 213, 64) , (self.x[i]+4*5, self.y[i]+10/2,5,5))
                pygame.draw.rect(self.main_surface,(241, 206, 60) , (self.x[i]+5*5, self.y[i]+10/2,5,5))
                pygame.draw.rect(self.main_surface,(241, 203, 58) , (self.x[i]+6*5, self.y[i]+10/2,5,5))
                pygame.draw.rect(self.main_surface,(231, 200, 57) , (self.x[i]+7*5, self.y[i]+10/2,5,5))
                pygame.draw.rect(self.main_surface,(248, 238, 106) , (self.x[i]+8*5, self.y[i]+10/2,5,5))
                pygame.draw.rect(self.main_surface,(244, 231, 179) , (self.x[i]+9*5, self.y[i]+10/2,5,5))
                pygame.draw.rect(self.main_surface,(244, 250, 240) , (self.x[i]+0*5, self.y[i]+20/2,5,5))
                pygame.draw.rect(self.main_surface,(236, 197, 60) , (self.x[i]+1*5, self.y[i]+20/2,5,5))
                pygame.draw.rect(self.main_surface,(239, 215, 67) , (self.x[i]+2*5, self.y[i]+20/2,5,5))
                pygame.draw.rect(self.main_surface,(240, 213, 64) , (self.x[i]+3*5, self.y[i]+20/2,5,5))
                pygame.draw.rect(self.main_surface,(241, 210, 60) , (self.x[i]+4*5, self.y[i]+20/2,5,5))
                pygame.draw.rect(self.main_surface,(238, 202, 54) , (self.x[i]+5*5, self.y[i]+20/2,5,5))
                pygame.draw.rect(self.main_surface,(241, 201, 54) , (self.x[i]+6*5, self.y[i]+20/2,5,5))
                pygame.draw.rect(self.main_surface,(238, 198, 51) , (self.x[i]+7*5, self.y[i]+20/2,5,5))
                pygame.draw.rect(self.main_surface,(237, 194, 56) , (self.x[i]+8*5, self.y[i]+20/2,5,5))
                pygame.draw.rect(self.main_surface,(241, 208, 92) , (self.x[i]+9*5, self.y[i]+20/2,5,5))
                pygame.draw.rect(self.main_surface,(255, 244, 248) , (self.x[i]+0*5, self.y[i]+30/2,5,5))
                pygame.draw.rect(self.main_surface,(239, 201, 54) , (self.x[i]+1*5, self.y[i]+30/2,5,5))
                pygame.draw.rect(self.main_surface,(238, 211, 62) , (self.x[i]+2*5, self.y[i]+30/2,5,5))
                pygame.draw.rect(self.main_surface,(240, 205, 59) , (self.x[i]+3*5, self.y[i]+30/2,5,5))
                pygame.draw.rect(self.main_surface,(241, 201, 54) , (self.x[i]+4*5, self.y[i]+30/2,5,5))
                pygame.draw.rect(self.main_surface,(240, 200, 50) , (self.x[i]+5*5, self.y[i]+30/2,5,5))
                pygame.draw.rect(self.main_surface,(239, 201, 56) , (self.x[i]+6*5, self.y[i]+30/2,5,5))
                pygame.draw.rect(self.main_surface,(233, 192, 48) , (self.x[i]+7*5, self.y[i]+30/2,5,5))
                pygame.draw.rect(self.main_surface,(234, 191, 50) , (self.x[i]+8*5, self.y[i]+30/2,5,5))
                pygame.draw.rect(self.main_surface,(252, 241, 100) , (self.x[i]+9*5, self.y[i]+30/2,5,5))
                pygame.draw.rect(self.main_surface,(242, 249, 242) , (self.x[i]+0*5, self.y[i]+40/2,5,5))
                pygame.draw.rect(self.main_surface,(239, 211, 65) , (self.x[i]+1*5, self.y[i]+40/2,5,5))
                pygame.draw.rect(self.main_surface,(240, 205, 59) , (self.x[i]+2*5, self.y[i]+40/2,5,5))
                pygame.draw.rect(self.main_surface,(238, 200, 53) , (self.x[i]+3*5, self.y[i]+40/2,5,5))
                pygame.draw.rect(self.main_surface,(241, 199, 51) , (self.x[i]+4*5, self.y[i]+40/2,5,5))
                pygame.draw.rect(self.main_surface,(242, 201, 57) , (self.x[i]+5*5, self.y[i]+40/2,5,5))
                pygame.draw.rect(self.main_surface,(232, 191, 47) , (self.x[i]+6*5, self.y[i]+40/2,5,5))
                pygame.draw.rect(self.main_surface,(233, 188, 45) , (self.x[i]+7*5, self.y[i]+40/2,5,5))
                pygame.draw.rect(self.main_surface,(228, 185, 44) , (self.x[i]+8*5, self.y[i]+40/2,5,5))
                pygame.draw.rect(self.main_surface,(230, 183, 41) , (self.x[i]+9*5, self.y[i]+40/2,5,5))
                pygame.draw.rect(self.main_surface,(242, 246, 255) , (self.x[i]+0*5, self.y[i]+50/2,5,5))
                pygame.draw.rect(self.main_surface,(236, 191, 46) , (self.x[i]+1*5, self.y[i]+50/2,5,5))
                pygame.draw.rect(self.main_surface,(242, 201, 51) , (self.x[i]+2*5, self.y[i]+50/2,5,5))
                pygame.draw.rect(self.main_surface,(242, 197, 52) , (self.x[i]+3*5, self.y[i]+50/2,5,5))
                pygame.draw.rect(self.main_surface,(238, 196, 52) , (self.x[i]+4*5, self.y[i]+50/2,5,5))
                pygame.draw.rect(self.main_surface,(231, 189, 45) , (self.x[i]+5*5, self.y[i]+50/2,5,5))
                pygame.draw.rect(self.main_surface,(230, 185, 42) , (self.x[i]+6*5, self.y[i]+50/2,5,5))
                pygame.draw.rect(self.main_surface,(230, 183, 41) , (self.x[i]+7*5, self.y[i]+50/2,5,5))
                pygame.draw.rect(self.main_surface,(229, 182, 42) , (self.x[i]+8*5, self.y[i]+50/2,5,5))
                pygame.draw.rect(self.main_surface,(225, 178, 36) , (self.x[i]+9*5, self.y[i]+50/2,5,5))
                pygame.draw.rect(self.main_surface,(255, 245, 233) , (self.x[i]+0*5, self.y[i]+60/2,5,5))
                pygame.draw.rect(self.main_surface,(234, 189, 44) , (self.x[i]+1*5, self.y[i]+60/2,5,5))
                pygame.draw.rect(self.main_surface,(216, 188, 44) , (self.x[i]+2*5, self.y[i]+60/2,5,5))
                pygame.draw.rect(self.main_surface,(231, 186, 43) , (self.x[i]+3*5, self.y[i]+60/2,5,5))
                pygame.draw.rect(self.main_surface,(231, 184, 44) , (self.x[i]+4*5, self.y[i]+60/2,5,5))
                pygame.draw.rect(self.main_surface,(231, 184, 44) , (self.x[i]+5*5, self.y[i]+60/2,5,5))
                pygame.draw.rect(self.main_surface,(228, 181, 41) , (self.x[i]+6*5, self.y[i]+60/2,5,5))
                pygame.draw.rect(self.main_surface,(227, 178, 37) , (self.x[i]+7*5, self.y[i]+60/2,5,5))
                pygame.draw.rect(self.main_surface,(229, 178, 37) , (self.x[i]+8*5, self.y[i]+60/2,5,5))
                pygame.draw.rect(self.main_surface,(234, 196, 53) , (self.x[i]+9*5, self.y[i]+60/2,5,5))
                pygame.draw.rect(self.main_surface,(247, 246, 244) , (self.x[i]+0*5, self.y[i]+70/2,5,5))
                pygame.draw.rect(self.main_surface,(252, 244, 208) , (self.x[i]+1*5, self.y[i]+70/2,5,5))
                pygame.draw.rect(self.main_surface,(226, 193, 52) , (self.x[i]+2*5, self.y[i]+70/2,5,5))
                pygame.draw.rect(self.main_surface,(226, 179, 39) , (self.x[i]+3*5, self.y[i]+70/2,5,5))
                pygame.draw.rect(self.main_surface,(227, 178, 37) , (self.x[i]+4*5, self.y[i]+70/2,5,5))
                pygame.draw.rect(self.main_surface,(229, 178, 37) , (self.x[i]+5*5, self.y[i]+70/2,5,5))
                pygame.draw.rect(self.main_surface,(227, 176, 35) , (self.x[i]+6*5, self.y[i]+70/2,5,5))
                pygame.draw.rect(self.main_surface,(228, 174, 39) , (self.x[i]+7*5, self.y[i]+70/2,5,5))
                pygame.draw.rect(self.main_surface,(225, 173, 38) , (self.x[i]+8*5, self.y[i]+70/2,5,5))
                pygame.draw.rect(self.main_surface,(221, 172, 31) , (self.x[i]+9*5, self.y[i]+70/2,5,5))
                pygame.draw.rect(self.main_surface,(247, 247, 247) , (self.x[i]+0*5, self.y[i]+80/2,5,5))
                pygame.draw.rect(self.main_surface,(250, 246, 243) , (self.x[i]+1*5, self.y[i]+80/2,5,5))
                pygame.draw.rect(self.main_surface,(227, 204, 136) , (self.x[i]+2*5, self.y[i]+80/2,5,5))
                pygame.draw.rect(self.main_surface,(223, 185, 58) , (self.x[i]+3*5, self.y[i]+80/2,5,5))
                pygame.draw.rect(self.main_surface,(228, 175, 35) , (self.x[i]+4*5, self.y[i]+80/2,5,5))
                pygame.draw.rect(self.main_surface,(227, 173, 38) , (self.x[i]+5*5, self.y[i]+80/2,5,5))
                pygame.draw.rect(self.main_surface,(225, 171, 37) , (self.x[i]+6*5, self.y[i]+80/2,5,5))
                pygame.draw.rect(self.main_surface,(226, 170, 33) , (self.x[i]+7*5, self.y[i]+80/2,5,5))
                pygame.draw.rect(self.main_surface,(224, 163, 13) , (self.x[i]+8*5, self.y[i]+80/2,5,5))
                pygame.draw.rect(self.main_surface,(245, 246, 241) , (self.x[i]+9*5, self.y[i]+80/2,5,5))
                pygame.draw.rect(self.main_surface,(247, 247, 247) , (self.x[i]+0*5, self.y[i]+90/2,5,5))
                pygame.draw.rect(self.main_surface,(247, 247, 247) , (self.x[i]+1*5, self.y[i]+90/2,5,5))
                pygame.draw.rect(self.main_surface,(247, 248, 243) , (self.x[i]+2*5, self.y[i]+90/2,5,5))
                pygame.draw.rect(self.main_surface,(241, 242, 255) , (self.x[i]+3*5, self.y[i]+90/2,5,5))
                pygame.draw.rect(self.main_surface,(228, 177, 49) , (self.x[i]+4*5, self.y[i]+90/2,5,5))
                pygame.draw.rect(self.main_surface,(234, 173, 22) , (self.x[i]+5*5, self.y[i]+90/2,5,5))
                pygame.draw.rect(self.main_surface,(227, 171, 16) , (self.x[i]+6*5, self.y[i]+90/2,5,5))
                pygame.draw.rect(self.main_surface,(249, 244, 240) , (self.x[i]+7*5, self.y[i]+90/2,5,5))
                pygame.draw.rect(self.main_surface,(250, 246, 245) , (self.x[i]+8*5, self.y[i]+90/2,5,5))
                pygame.draw.rect(self.main_surface,(247, 247, 247) , (self.x[i]+9*5, self.y[i]+90/2,5,5))
            else:
                pass
                

    def make_dummy(self):
        for i in range(TARGET_COUNT):
            pygame.draw.circle(self.main_surface, (255,0,0), (self.dummy_x[i]+25, self.dummy_y[i]), self.target_size)
            pygame.draw.circle(self.main_surface, (0,0,0), (self.dummy_x[i]+25, self.dummy_y[i]+8), self.target_size)
                

    def make_gun(self):
        pygame.draw.rect(self.main_surface, (255,0,255), (self.x3-10, self.y3-10,20,20))
        pygame.draw.rect(self.main_surface, (255,0,255), (self.x3-25, self.y3,50,20))

    def make_gun_out(self):
        pygame.draw.rect(self.main_surface, (200,200,200), (self.x3-10, self.y3-10,20,20))
        pygame.draw.rect(self.main_surface, (200,200,200), (self.x3-25, self.y3,50,20))

    def make_ball(self):
        for i in range(TARGET_COUNT):
            pygame.draw.circle(self.main_surface, (random.randint(0,255),random.randint(0,255),random.randint(0,255)), (self.bxt[i], self.byt[i]), 10)
    
    
    def target_move(self):
        #的移動
        for i in range(TARGET_COUNT):
            if(self.xstate[i]==0):
                self.x[i] += (1 +i)
                if(self.x[i]>400):
                    self.xstate[i]=1
            if(self.xstate[i]==1):
                self.x[i] -= (1 +i)
                if(self.x[i]<150):
                    self.xstate[i]=0    


            if(self.ystate[i]==0):
                self.y[i] += (1 +i)
                if(self.y[i]>300):
                    self.ystate[i]=1
            if(self.ystate[i]==1):
                self.y[i] -= (1 +i)
                if(self.y[i]<150):
                    self.ystate[i]=0 
                       
    def dummy_move(self):
        for i in range(TARGET_COUNT):

            if(self.xwall_state ==0):
                self.dummy_x[i] += (1+self.scenario_state)
            if(self.xwall_state==1):
                self.dummy_x[i] -= (1+self.scenario_state)

            
            self.dummy_y[i] += (10)
            if(self.dummy_y[i] >400):
                self.dummy_y[i]=100
        
    def wall_move(self):
        if(self.xwall_state ==0):
            self.x_wall += (1+self.scenario_state)
            if(self.x_wall>400):
                self.xwall_state=1
        if(self.xwall_state==1):
            self.x_wall -= (1+self.scenario_state)
            if(self.x_wall<150):
                self.xwall_state=0    



    def game_loop(self):
        pygame.display.set_caption("SHOOTING TEST")
        clock = pygame.time.Clock()
        stop_button = pygame.Rect(30, 30, 80, 50)  
        start_button = pygame.Rect(30, 130, 80, 50)  
        reset_button = pygame.Rect(30, 230, 80, 50)  
        font = pygame.font.SysFont(None, 25)
        text1 = font.render("STOP", True, (0,0,0))
        text2 = font.render("START", True, (0,0,0))
        text3 = font.render("SHOOT", True, (0,0,0))
        text4 = font.render("CURSOL:SHOOTER MOVE /  SPACE ball start   ", True, (0,0,0))
        texthit = font.render("  ", True, (0,0,0))
        start = time.time()
        
        going = True
        while going:
            if (self.stop==1):
                start = time.time()
                
            t = time.time() - start
            if(t>15):
                self.timeout=1

            pressed = pygame.key.get_pressed()
            if pressed[pygame.K_LEFT]:
                #大砲移動 左
                self.x3=self.x3-10        
            if pressed[pygame.K_RIGHT]:
                #大砲移動 右
                self.x3=self.x3+10        
    
    
            for event in pygame.event.get():
                
                if event.type == pygame.QUIT:
                    going = False
    
    
                if event.type == KEYDOWN:
                    if event.key == K_LEFT:
                       #大砲移動 左
                        self.x3=self.x3-10        
                    if event.key == K_RIGHT:
                       #大砲移動 右
                        self.x3=self.x3+10        
                    if event.key == K_SPACE:
                        #弾発射
                        self.bxt[self.xy0state]=self.x3
                        self.byt[self.xy0state]=400
                        self.xy0state += 1
                        if(self.xy0state==9):
                            self.xy0state=0    
                        self.stop=0
    
    
                if event.type == pygame.MOUSEBUTTONDOWN:
                    if stop_button.collidepoint(event.pos):
                        self.stop=1
                    if start_button.collidepoint(event.pos):
                        self.stop=0
                    if reset_button.collidepoint(event.pos):
                        #弾発射
                        self.bxt[self.xy0state]=self.x3
                        self.byt[self.xy0state]=400
                        self.xy0state += 1
                        if(self.xy0state==9):
                            self.xy0state=0    
                        self.stop=0
    
            #的衝突 
            self.hit_check()            
            #self.wall_col_check()    
            self.dummy_col_check()    
    
            self.main_surface.fill((220, 220, 220))
            pygame.draw.rect(self.main_surface, (255, 0, 0), stop_button)
            pygame.draw.rect(self.main_surface, (255, 255, 0), start_button)
            pygame.draw.rect(self.main_surface, (0, 0, 255), reset_button)
    
            self.by0 -=10
            self.by1 -=10
            self.by2 -=10
    
            if(self.stop==1):
                pass
            else: 
                for i in range(BALL_COUNT):
                    self.byt[i]-=10
    
                #的移動
                self.target_move()	    
    
                self.make_wall()     
                self.wall_move()     
                
                #弾             
                self.make_ball()
                
                #大砲             
                self.make_gun()
                self.make_dummy()
                self.dummy_move()
    
                        
                        
            #的 

            if(self.scenario_state==0):            
                texthit = font.render("STAGE1", True, (0,0,0))
                self.make_target()
                if (self.all_hit()==1):
                    self.scenario_state = 1
                    for i in range(BALL_COUNT):
                       self.hit[i]=0
                    
            if(self.scenario_state==1):            
                texthit = font.render("STAGE2", True, (0,0,0))
                self.make_target2()
                if (self.all_hit()==1):
                    self.scenario_state = 2
                    for i in range(BALL_COUNT):
                           self.hit[i]=0
            if(self.scenario_state==2):            
                texthit = font.render("GAME CLEAR !", True, (0,0,0))
                self.stop=1                            
                    
            
            
                
            self.main_surface.blit(text1, (40, 45))
            self.main_surface.blit(text2, (40,145))
            self.main_surface.blit(text3, (40,245))
            self.main_surface.blit(text4, (40,430))
            if(self.dummy_hit==1):        
                self.make_gun_out()
                texthit = font.render("BALL HIT TO GUN GAME OVER!", True, (255,0,0))
                self.stop=1                    
            if(self.wall_hit==1):        
                texthit = font.render("WALL HIT GAME OVER!", True, (255,0,0))
                self.stop=1                    
            
            if(self.timeout==1):        
                texthit = font.render("TIMEOUT!", True, (255,0,0))
                self.stop=1                    
            if(self.khit==1):        
                texthit = font.render("game over count="+str(self.hit_count), True, (0,0,0))
            else:
                pass
            self.main_surface.blit(texthit, (200,45))
            pygame.display.update()
            clock.tick(50)
            self.loop_count+=1
if __name__ == '__main__':
    app = top_app()
    app.main()

 

github.com