# 123 import pygame import random import pymysql # 单重循环 for i in range(1, 21): print(i) # 双重循环 for i in range(1, 6): for j in range(1, 6): print(i, "*", j, "=", i*j) # 面向对象方法 class Plane: def __init__(self, x, y, speed=5): self.x = x self.y = y self.speed = speed def move(self): self.x += self.speed def fire(self): bullet = Bullet(self.x, self.y) class Bullet: def __init__(self, x, y, speed=10): self.x = x self.y = y self.speed = speed def move(self): self.y -= self.speed def hit(self, enemy): if self.x > enemy.x and self.x < enemy.x+50 and self.y > enemy.y and self.y < enemy.y+50: return True else: return False # 函数 def create_enemies(): enemies = [] for i in range(6): x = random.randint(0, 400) y = random.randint(0, 200) enemy = Enemy(x, y) enemies.append(enemy) return enemies def check_collision(enemies, bullets): for enemy in enemies: for bullet in bullets: if bullet.hit(enemy): enemies.remove(enemy) bullets.remove(bullet) score += 1 return score # 数据库操作 def connect_db(): conn = pymysql.connect(host='localhost', user='root', password='123456', database='game') cursor = conn.cursor() return conn, cursor def create_table(cursor): cursor.execute('CREATE TABLE IF NOT EXISTS players (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), score INT)') def insert_player(cursor, name, score): sql = 'INSERT INTO players (name, score) VALUES (%s, %s)' cursor.execute(sql, (name, score)) def select_players(cursor): cursor.execute('SELECT * FROM players') players = cursor.fetchall() for player in players: print(player) # 创建敌机类 class Enemy: def __init__(self, x, y, speed=1): self.x = x self.y = y self.speed = speed def move(self): self.y += self.speed # 主程序 def main(): pygame.init() screen = pygame.display.set_mode((400, 300)) pygame.display.set_caption("打飞机游戏") clock = pygame.time.Clock() running = True # 创建玩家飞机 player = Plane(200, 250) # 创建敌机列表 enemies = create_enemies() # 创建子弹列表 bullets = [] # 创建数据库连接 conn, cursor = connect_db() # 创建玩家信息表 create_table(cursor) # 游戏循环 while running: # 控制游戏帧率 clock.tick(60) # 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_SPACE: player.fire() bullet = Bullet(player.x, player.y) bullets.append(bullet) # 移动玩家飞机 keys = pygame.key.get_pressed() if keys[pygame.K_LEFT]: player.x -= player.speed elif keys[pygame.K_RIGHT]: player.x += player.speed # 移动敌机 for enemy in enemies: enemy.move() # 移动子弹 for bullet in bullets: bullet.move() # 检测碰撞 score = check_collision(enemies, bullets) # 绘制游戏元素 screen.fill((255, 255, 255)) pygame.draw.rect(screen, (0, 255, 0), (player.x, player.y, 50, 50)) for enemy in enemies: pygame.draw.rect(screen, (255, 0, 0), (enemy.x, enemy.y, 50, 50)) for bullet in bullets: pygame.draw.rect(screen, (0, 0, 255), (bullet.x, bullet.y, 10, 10)) pygame.display.flip() # 插入玩家分数记录 name = input("请输入您的名字:") insert_player(cursor, name, score) conn.commit() # 查询所有玩家记录 select_players(cursor) # 关闭数据库连接 cursor.close() conn.close() if __name__ == '__main__': main()