|
|
3 years ago | |
|---|---|---|
| README.md | 3 years ago | |
README.md
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, "=", ij)
面向对象方法
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()