Example #1
0
def run_game():
    pygame.init()
    setinit = Game_Settings.Settings_of_Show()
    screen = pygame.display.set_mode(
        (setinit.screen_width, setinit.screen_height))

    pygame.display.set_caption("联机坦克大战")
    tank1 = Tank.Tank1(screen)
    tank2 = Tank.Tank2(screen)
    bullets1 = Group()
    bullets2 = Group()

    start_button = Button.Button(screen, 80, 40, (0, 255, 0), (255, 255, 255),
                                 "开始游戏", (500, 200))
    settings_button = Button.Button(screen, 80, 40, (164, 247, 151),
                                    (255, 255, 255), "游戏设置", (500, 300))
    help_button = Button.Button(screen, 80, 40, (105, 194, 49),
                                (255, 255, 255), "游戏帮助", (500, 400))
    game_settings = Game_Settings.Settings(tank_speed=5,
                                           bullet_speed=1,
                                           bullet_allow_num=1)

    bullet_speed1 = Button.Button(screen, 80, 40, (164, 247, 151),
                                  (255, 255, 255), "炮弹速度1", (200, 150))
    bullet_speed2 = Button.Button(screen, 80, 40, (164, 247, 151),
                                  (255, 255, 255), "炮弹速度2", (500, 150))
    bullet_speed3 = Button.Button(screen, 80, 40, (164, 247, 151),
                                  (255, 255, 255), "炮弹速度3", (800, 150))
    tank_speed1 = Button.Button(screen, 80, 40, (164, 247, 151),
                                (255, 255, 255), "坦克速度1", (200, 300))
    tank_speed2 = Button.Button(screen, 80, 40, (164, 247, 151),
                                (255, 255, 255), "坦克速度2", (500, 300))
    tank_speed3 = Button.Button(screen, 80, 40, (164, 247, 151),
                                (255, 255, 255), "坦克速度3", (800, 300))
    login_name_input = TextBox.TextBox(screen, None, None, 20, "隶书", (0, 0, 0),
                                       (255, 255, 255), (500, 300), "输入用户名")
    password_input = TextBox.TextBox(screen, None, None, 20, "隶书", (0, 0, 0),
                                     (255, 255, 255), (500, 300), "输入密码")

    sound_shoot = pygame.mixer.Sound("music//shoot.wav")

    flag = None
    login_name = "wsde"
    '''

    while flag!=login_name:
        screen.fill(setinit.bg_color)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
            if event.type == pygame.KEYDOWN:
                flag = login_name_input.key_down_text(event)
                print(flag)
        login_name_input.draw_textbox()
        pygame.display.flip()

    flag = None
    password: str = "mmnf"
    print(password)
    while flag != password:
        screen.fill(setinit.bg_color)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
            if event.type == pygame.KEYDOWN:
                flag= password_input.key_down_text(event)

        password_input.draw_textbox()
        pygame.display.flip()
    '''
    # 游戏主界面
    while True:
        screen.fill(setinit.bg_color)
        flag = game_button(start_button, settings_button, help_button)
        if flag == 0:
            settings_button.draw()

            start_button.draw()

            help_button.draw()

        if flag == -1:
            pygame.display.flip()
            screen.fill(setinit.bg_color)
            #print("-1")

            pygame.display.flip()
            #print(game_settings.tank_speed, game_settings.bullet_speed)
            score_of_two = Score.Score(screen, tank1, tank2, bullets1,
                                       bullets2, setinit)
            # 进入游戏
            main_flag = False
            while not main_flag:

                screen.fill(setinit.bg_color)
                score_of_two.score_change()
                for event in pygame.event.get():
                    if event.type == pygame.QUIT:
                        sys.exit()
                tank1_control_event(game_settings, tank1, bullets1, screen,
                                    sound_shoot)
                tank2_control_event(game_settings, tank2, bullets2, screen,
                                    sound_shoot)

                score_of_two.score_draw()

                for i in bullets1.copy():
                    if i.rect.centerx <= 0 or i.rect.centerx >= 1000:
                        bullets1.remove(i)
                    elif i.rect.centery >= 600 or i.rect.centery <= 0:
                        bullets1.remove(i)
                for i in bullets1.sprites():
                    i.draw_bull()

                for i in bullets2.copy():
                    if i.rect.centerx <= 0 or i.rect.centerx >= 1000:
                        bullets2.remove(i)
                    elif i.rect.centery >= 600 or i.rect.centery <= 0:
                        bullets2.remove(i)
                for i in bullets2.sprites():
                    i.draw_bull()
                update_screen(tank1, bullets1, tank2, bullets2)
                main_flag = score_of_two.who_win()
                pygame.display.flip()

            score_of_two.who_win()
            time.sleep(10)
        if flag == -2:
            pygame.display.flip()
            screen.fill(setinit.bg_color)
            # print("-2")
            temp_settings = -1
            while True:
                # print("1")

                if temp_settings == -1:
                    screen.fill(setinit.bg_color)
                    # print("设定难度")
                    bullet_speed1.draw()
                    bullet_speed2.draw()
                    bullet_speed3.draw()
                    tank_speed1.draw()
                    tank_speed2.draw()
                    tank_speed3.draw()

                    temp_settings: int = settings_mode_ui(
                        game_settings, bullet_speed1, bullet_speed2,
                        bullet_speed3, tank_speed1, tank_speed2, tank_speed3)
                    pygame.display.flip()

                # print(temp_settings)
                if temp_settings == 1:
                    screen.fill(setinit.bg_color)

                    break
                if temp_settings == 2:
                    screen.fill(setinit.bg_color)

                    break
                if temp_settings == 3:
                    screen.fill(setinit.bg_color)

                    break
                if temp_settings == 4:
                    screen.fill(setinit.bg_color)

                    break
                if temp_settings == 5:
                    screen.fill(setinit.bg_color)

                    break
                if temp_settings == 6:
                    screen.fill(setinit.bg_color)

                    break

        if flag == -3:
            pygame.display.flip()
            screen.fill(setinit.bg_color)
            # print("-2")
            help_flag = -1
            jump_end_button = Button.Button(screen, 40, 50, (164, 247, 151),
                                            (255, 255, 255), "结束", (800, 300))
            while True:
                if help_flag == -1:
                    screen.fill(setinit.bg_color)
                    font = pygame.font.SysFont("隶书", 20)
                    text = font.render("服务器端上线后,客户端才可以登录", True,
                                       (255, 255, 255), (0, 255, 0))
                    text_rect = text.get_rect()
                    text_rect.center = screen.get_rect().center
                    screen.blit(text, text_rect)
                    jump_end_button.draw()
                    help_flag = end_help(jump_end_button)
                    pygame.display.flip()
                if help_flag == 1:

                    break

        pygame.display.flip()
def rungame():
    pygame.init()
    screen = pygame.display.set_mode((800, 600))
    pygame.display.set_caption("xx游戏")
    pos1 = 1
    pos2 = 1
    tank1 = Tank.Tank1(screen)
    tank2 = Tank.Tank2(screen)
    tank1_bullts = Group()
    tank2_bullts = Group()
    screen.fill((230, 230, 230))
    while True:
        screen.fill((230, 230, 230))
        tank1.draw_tank()
        tank2.draw_tank()

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()

        mykeylist = pygame.key.get_pressed()
        if mykeylist[pygame.K_UP]:
            pos1 = 1
            tank1.rect.centery -= 1
            tank1.img = pygame.image.load("picture/坦克1.png")
        elif mykeylist[pygame.K_RIGHT]:
            pos1 = 2
            tank1.rect.centerx += 1
            tank1.img = pygame.image.load("picture/坦克2.png")
        elif mykeylist[pygame.K_DOWN]:
            pos1 = 3
            tank1.rect.centery += 1
            tank1.img = pygame.image.load("picture/坦克3.png")
        elif mykeylist[pygame.K_LEFT]:
            pos1 = 4
            tank1.rect.centerx -= 1
            tank1.img = pygame.image.load("picture/坦克4.png")
        elif mykeylist[pygame.K_SPACE]:
            if tank1_bullts.__len__() < 5:
                newbullet = Bullet.Bullet(screen, tank1, pos1)
                tank1_bullts.add(newbullet)

        if mykeylist[pygame.K_w]:
            pos2 = 1
            tank2.rect.centery -= 1
            tank2.img = pygame.image.load("picture/坦克_1.png")
        elif mykeylist[pygame.K_d]:
            pos2 = 2
            tank2.rect.centerx += 1
            tank2.img = pygame.image.load("picture/坦克_2.png")
        elif mykeylist[pygame.K_s]:
            pos2 = 3
            tank2.rect.centery += 1
            tank2.img = pygame.image.load("picture/坦克_3.png")
        elif mykeylist[pygame.K_a]:
            pos2 = 4
            tank2.rect.centerx -= 1
            tank2.img = pygame.image.load("picture/坦克_4.png")
        elif mykeylist[pygame.K_x]:
            if tank2_bullts.__len__() < 5:
                newbullet = Bullet.Bullet(screen, tank2, pos2)
                tank2_bullts.add(newbullet)

        if tank1.rect.centery < 0:
            tank1.rect.centery = 0
        if tank1.rect.centery > 600:
            tank1.rect.centery = 600
        if tank1.rect.centerx < 0:
            tank1.rect.centerx = 0
        if tank1.rect.centerx > 800:
            tank1.rect.centerx = 800
        tank1_bullts.update()
        for i in tank1_bullts.sprites():
            i.draw_bullet()

        for i in tank1_bullts.copy():
            if i.rect.centerx <= 0 or i.rect.centerx >= 800:
                tank1_bullts.remove(i)
            elif i.rect.centery >= 600 or i.rect.centery <= 0:
                tank1_bullts.remove(i)

        if tank2.rect.centery < 0:
            tank2.rect.centery = 0
        if tank2.rect.centery > 600:
            tank2.rect.centery = 600
        if tank2.rect.centerx < 0:
            tank2.rect.centerx = 0
        if tank2.rect.centerx > 800:
            tank2.rect.centerx = 800
        tank2_bullts.update()
        for i in tank2_bullts.sprites():
            i.draw_bullet()

        for i in tank2_bullts.copy():
            if i.rect.centerx <= 0 or i.rect.centerx >= 800:
                tank2_bullts.remove(i)
            elif i.rect.centery >= 600 or i.rect.centery <= 0:
                tank2_bullts.remove(i)
        score_change(tank1_bullts, tank2_bullts, tank1, tank2)
        pygame.display.flip()