pythongame

贪吃S

import pygame
import time
import random

# 初始化pygame
pygame.init()

# 设置屏幕宽度和高度
width, height = 600, 400
screen = pygame.display.set_mode((width, height))

# 设置颜色
black = (0, 0, 0)
white = (255, 255, 255)
red = (213, 50, 80)
green = (0, 255, 0)
blue = (50, 153, 213)

# 设置蛇的大小和速度
snake_block = 10
snake_speed = 15

# 设置字体
font_style = pygame.font.SysFont(None, 35)
score_font = pygame.font.SysFont(None, 35)

def Your_score(score):
    value = score_font.render("Your Score: " + str(score), True, white)
    screen.blit(value, [0, 0])

def our_snake(snake_block, snake_list):
    for x in snake_list:
        pygame.draw.rect(screen, black, [x[0], x[1], snake_block, snake_block])

def message(msg, color):
    mesg = font_style.render(msg, True, color)
    screen.blit(mesg, [width / 6, height / 3])

def gameLoop():
    game_over = False
    game_close = False

    x1 = width / 2
    y1 = height / 2

    x1_change = 0
    y1_change = 0

    snake_List = []
    Length_of_snake = 1

    foodx = round(random.randrange(0, width - snake_block) / 10.0) * 10.0
    foody = round(random.randrange(0, height - snake_block) / 10.0) * 10.0

    score = 0

    clock = pygame.time.Clock()

    while not game_over:

        while game_close == True:
            screen.fill(blue)
            message("You Lost! Press Q-Quit or C-Play Again", red)
            Your_score(score)
            pygame.display.update()

            for event in pygame.event.get():
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_q:
                        game_over = True
                        game_close = False
                    if event.key == pygame.K_c:
                        gameLoop()

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                game_over = True
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    x1_change = -snake_block
                    y1_change = 0
                elif event.key == pygame.K_RIGHT:
                    x1_change = snake_block
                    y1_change = 0
                elif event.key == pygame.K_UP:
                    y1_change = -snake_block
                    x1_change = 0
                elif event.key == pygame.K_DOWN:
                    y1_change = snake_block
                    x1_change = 0

        if x1 >= width or x1 < 0 or y1 >= height or y1 < 0:
            game_close = True
        x1 += x1_change
        y1 += y1_change
        screen.fill(blue)
        pygame.draw.rect(screen, green, [foodx, foody, snake_block, snake_block])
        snake_Head = []
        snake_Head.append(x1)
        snake_Head.append(y1)
        snake_List.append(snake_Head)
        if len(snake_List) > Length_of_snake:
            del snake_List[0]

        for x in snake_List[:-1]:
            if x == snake_Head:
                game_close = True

        our_snake(snake_block, snake_List)
        Your_score(score)

        pygame.display.update()

        if x1 == foodx and y1 == foody:
            foodx = round(random.randrange(0, width - snake_block) / 10.0) * 10.0
            foody = round(random.randrange(0, height - snake_block) / 10.0) * 10.0
            Length_of_snake += 1
            score += 10  # 每吃到一个食物增加10分

        clock.tick(snake_speed)

    pygame.quit()
    quit()

gameLoop()

饿了斯放快

import pygame
import random
import sys

# Initialize Pygame
pygame.init()

# Colors
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
CYAN = (0, 255, 255)
YELLOW = (255, 255, 0)
MAGENTA = (255, 0, 255)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
ORANGE = (255, 165, 0)

# Game settings
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
BLOCK_SIZE = 30
GRID_WIDTH = 10
GRID_HEIGHT = 20

# Create game window
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("Tetris")

# Define shapes
SHAPES = [
    [[1, 1, 1, 1]],
    [[1, 1], [1, 1]],
    [[1, 1, 1], [0, 1, 0]],
    [[1, 1, 1], [1, 0, 0]],
    [[1, 1, 1], [0, 0, 1]],
    [[1, 1, 0], [0, 1, 1]],
    [[0, 1, 1], [1, 1, 0]]
]

# Define colors
COLORS = [CYAN, YELLOW, MAGENTA, RED, GREEN, BLUE, ORANGE]

# Set up fonts
FONT = pygame.font.Font(None, 36)
LARGE_FONT = pygame.font.Font(None, 48)


class Tetromino:
    def __init__(self):
        self.shape = random.choice(SHAPES)
        self.color = random.choice(COLORS)
        self.x = GRID_WIDTH // 2 - len(self.shape[0]) // 2
        self.y = 0

    def move(self, dx, dy):
        self.x += dx
        self.y += dy

    def rotate(self):
        self.shape = list(zip(*self.shape[::-1]))


class TetrisGame:
    def __init__(self):
        self.reset_game()

    def reset_game(self):
        self.grid = [[0 for _ in range(GRID_WIDTH)] for _ in range(GRID_HEIGHT)]
        self.current_piece = Tetromino()
        self.game_over = False
        self.score = 0
        self.fall_time = 0
        self.fall_speed = 0.5  # seconds
        self.fast_fall = False

    def draw(self):
        screen.fill(BLACK)
        self.draw_grid()
        self.draw_current_piece()
        self.draw_score()
        if self.game_over:
            self.draw_game_over()
        pygame.display.flip()

    def draw_grid(self):
        for y, row in enumerate(self.grid):
            for x, cell in enumerate(row):
                if cell:
                    pygame.draw.rect(screen, cell, (x * BLOCK_SIZE, y * BLOCK_SIZE, BLOCK_SIZE - 1, BLOCK_SIZE - 1))

    def draw_current_piece(self):
        for y, row in enumerate(self.current_piece.shape):
            for x, cell in enumerate(row):
                if cell:
                    pygame.draw.rect(screen, self.current_piece.color,
                                     ((self.current_piece.x + x) * BLOCK_SIZE,
                                      (self.current_piece.y + y) * BLOCK_SIZE,
                                      BLOCK_SIZE - 1, BLOCK_SIZE - 1))

    def draw_score(self):
        score_text = FONT.render(f"Score: {self.score}", True, WHITE)
        screen.blit(score_text, (10, 10))

    def draw_game_over(self):
        game_over_text = LARGE_FONT.render("Game Over!", True, WHITE)
        restart_text = FONT.render("Press SPACE to restart", True, WHITE)
        screen.blit(game_over_text, (SCREEN_WIDTH // 2 - game_over_text.get_width() // 2, SCREEN_HEIGHT // 2 - 50))
        screen.blit(restart_text, (SCREEN_WIDTH // 2 - restart_text.get_width() // 2, SCREEN_HEIGHT // 2 + 10))

    def move_piece(self, dx, dy):
        self.current_piece.move(dx, dy)
        if self.check_collision():
            self.current_piece.move(-dx, -dy)
            if dy > 0:
                self.lock_piece()
                return True
        return False

    def rotate_piece(self):
        original_shape = self.current_piece.shape
        self.current_piece.rotate()
        if self.check_collision():
            self.current_piece.shape = original_shape

    def check_collision(self):
        for y, row in enumerate(self.current_piece.shape):
            for x, cell in enumerate(row):
                if cell:
                    if (self.current_piece.x + x < 0 or
                            self.current_piece.x + x >= GRID_WIDTH or
                            self.current_piece.y + y >= GRID_HEIGHT or
                            (self.current_piece.y + y >= 0 and self.grid[self.current_piece.y + y][
                                self.current_piece.x + x])):
                        return True
        return False

    def lock_piece(self):
        for y, row in enumerate(self.current_piece.shape):
            for x, cell in enumerate(row):
                if cell:
                    if 0 <= self.current_piece.y + y < GRID_HEIGHT:
                        self.grid[self.current_piece.y + y][self.current_piece.x + x] = self.current_piece.color
        self.clear_lines()
        self.current_piece = Tetromino()
        if self.check_collision():
            self.game_over = True

    def clear_lines(self):
        lines_cleared = 0
        for y in range(GRID_HEIGHT - 1, -1, -1):
            if all(self.grid[y]):
                del self.grid[y]
                self.grid.insert(0, [0 for _ in range(GRID_WIDTH)])
                lines_cleared += 1
        self.score += lines_cleared ** 2 * 100

    def update(self, dt):
        self.fall_time += dt
        if self.fast_fall:
            fall_speed = self.fall_speed / 10
        else:
            fall_speed = self.fall_speed

        if self.fall_time > fall_speed:
            if self.move_piece(0, 1):
                self.fast_fall = False
            self.fall_time = 0

    def run(self):
        clock = pygame.time.Clock()

        while True:
            dt = clock.tick(60) / 1000.0  # Convert to seconds

            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                    sys.exit()
                if event.type == pygame.KEYDOWN:
                    if not self.game_over:
                        if event.key == pygame.K_LEFT:
                            self.move_piece(-1, 0)
                        elif event.key == pygame.K_RIGHT:
                            self.move_piece(1, 0)
                        elif event.key == pygame.K_DOWN:
                            self.fast_fall = True
                        elif event.key == pygame.K_UP:
                            self.rotate_piece()
                    if event.key == pygame.K_SPACE:
                        self.reset_game()
                if event.type == pygame.KEYUP:
                    if event.key == pygame.K_DOWN:
                        self.fast_fall = False

            if not self.game_over:
                self.update(dt)

            self.draw()


if __name__ == "__main__":
    game = TetrisGame()
    game.run()

飞机

import pygame
import random
import sys

# Initialize Pygame
pygame.init()

# Set up the game window
WIDTH = 800
HEIGHT = 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Space Shooter")

# Load images
player_img = pygame.image.load("1.png").convert_alpha()
bullet_img = pygame.image.load("2.png").convert_alpha()
enemy_img = pygame.image.load("3.png").convert_alpha()

# Scale images if needed
player_img = pygame.transform.scale(player_img, (50, 50))
bullet_img = pygame.transform.scale(bullet_img, (10, 20))
enemy_img = pygame.transform.scale(enemy_img, (50, 50))

# Define colors
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)

# Define constants
BULLET_INTERVAL = 10  # Interval in milliseconds
ENEMY_COUNT = 3  # Number of enemies

# Player class
class Player(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = player_img
        self.rect = self.image.get_rect()
        self.rect.centerx = WIDTH // 2
        self.rect.bottom = HEIGHT - 10
        self.speed = 15

    def update(self):
        keys = pygame.key.get_pressed()
        if keys[pygame.K_LEFT] and self.rect.left > 0:
            self.rect.x -= self.speed
        if keys[pygame.K_RIGHT] and self.rect.right < WIDTH:
            self.rect.x += self.speed
        if keys[pygame.K_UP] and self.rect.top > 0:
            self.rect.y -= self.speed
        if keys[pygame.K_DOWN] and self.rect.bottom < HEIGHT:
            self.rect.y += self.speed

    def shoot(self):
        return Bullet(self.rect.centerx, self.rect.top)

# Bullet class
class Bullet(pygame.sprite.Sprite):
    def __init__(self, x, y):
        super().__init__()
        self.image = bullet_img
        self.rect = self.image.get_rect()
        self.rect.centerx = x
        self.rect.bottom = y
        self.speed = -35

    def update(self):
        self.rect.y += self.speed
        if self.rect.bottom < 0:
            self.kill()

# Enemy class
class Enemy(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = enemy_img
        self.rect = self.image.get_rect()
        self.rect.x = random.randint(0, WIDTH - self.rect.width)
        self.rect.y = random.randint(-100, -40)
        self.speed = random.randint(1, 3)

    def update(self):
        self.rect.y += self.speed
        if self.rect.top > HEIGHT:
            self.kill()
            return True
        return False

# Create sprite groups
all_sprites = pygame.sprite.Group()
bullets = pygame.sprite.Group()
enemies = pygame.sprite.Group()

def new_game():
    global player, score, last_bullet_time
    all_sprites.empty()
    bullets.empty()
    enemies.empty()

    # Create player
    player = Player()
    all_sprites.add(player)

    # Create enemies
    for i in range(ENEMY_COUNT):
        enemy = Enemy()
        all_sprites.add(enemy)
        enemies.add(enemy)

    # Initialize score and bullet timer
    score = 0
    last_bullet_time = pygame.time.get_ticks()

# Initial game setup
new_game()

# Set up the game clock
clock = pygame.time.Clock()

# Set up the font for the score
font = pygame.font.Font(None, 36)

# Game loop
def game_loop():
    global running, score, last_bullet_time

    running = True
    while running:
        # Keep the loop running at the right speed
        clock.tick(60)

        # Process input (events)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                return False  # Quit the game
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    return False  # Quit the game

        # Automatic shooting
        current_time = pygame.time.get_ticks()
        if current_time - last_bullet_time > BULLET_INTERVAL:
            bullet = player.shoot()
            all_sprites.add(bullet)
            bullets.add(bullet)
            last_bullet_time = current_time

        # Update
        all_sprites.update()

        # Check for enemies passing through the bottom
        for enemy in enemies:
            if enemy.update():
                running = False
                break

        # Check for collisions between bullets and enemies
        hits = pygame.sprite.groupcollide(enemies, bullets, True, True)
        for hit in hits:
            score += 10
            enemy = Enemy()
            all_sprites.add(enemy)
            enemies.add(enemy)

        # Check for collisions between player and enemies
        hits = pygame.sprite.spritecollide(player, enemies, False)
        if hits:
            running = False

        # Draw / render
        screen.fill(BLACK)
        all_sprites.draw(screen)

        # Draw score
        score_text = font.render(f"Score: {score}", True, WHITE)
        screen.blit(score_text, (10, 10))

        # Flip the display
        pygame.display.flip()

    return True  # Continue to game over screen

# Main game loop
while True:
    if game_loop():
        # Game over screen
        screen.fill(BLACK)
        game_over_text = font.render("Game Over", True, WHITE)
        score_text = font.render(f"Final Score: {score}", True, WHITE)
        restart_text = font.render("Press R to restart or Q to quit", True, WHITE)

        screen.blit(game_over_text, (WIDTH // 2 - game_over_text.get_width() // 2, HEIGHT // 2 - 50))
        screen.blit(score_text, (WIDTH // 2 - score_text.get_width() // 2, HEIGHT // 2))
        screen.blit(restart_text, (WIDTH // 2 - restart_text.get_width() // 2, HEIGHT // 2 + 50))

        pygame.display.flip()

        # Wait for restart or quit
        waiting = True
        while waiting:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                    sys.exit()
                elif event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_r:
                        # Restart the game
                        new_game()
                        waiting = False
                    elif event.key == pygame.K_q:
                        pygame.quit()
                        sys.exit()
    else:
        break

pygame.quit()
sys.exit()
回答: Python贪吃蛇游戏是一个非常受欢迎的街机游戏,也是每个新手程序员都应该尝试的一个初学者友好项目。在这个游戏中,玩家的目标是控制蛇在不撞墙或自身的情况下吃到尽可能多的水果。学习如何创建贪吃蛇游戏是一种有趣而有趣的学习过程。\[1\] 要使用Python创建贪吃蛇游戏,可以使用Pygame库。首先,需要导入必要的库并初始化Pygame。然后,可以设置蛇的初始位置和大小,并创建一个函数来显示玩家的得分。此外,还需要创建一个游戏结束函数,以处理蛇撞墙或自身的情况。最后,创建一个主要的功能来控制游戏的进行。\[2\] 在贪吃蛇游戏中,蛇的移动是根据方向来判断的。可以使用pos变量来记录蛇的方向,例如pos(1, 0)表示蛇向右移动,pos(-1, 0)表示蛇向左移动,pos(0, 1)表示蛇向下移动,pos(0, -1)表示蛇向上移动。此外,可以通过控制时间来控制蛇的速度,通过刷新来更新游戏的状态。\[3\] #### 引用[.reference_title] - *1* *2* [100个Python实战项目(九)制作贪吃蛇游戏(评论抽奖送书)](https://blog.csdn.net/qq_44273429/article/details/124836313)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Python贪吃蛇 (完整代码+详细注释+粘贴即食)](https://blog.csdn.net/weixin_45662804/article/details/113098296)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值