Rumah pembangunan bahagian belakang Tutorial Python Bagaimana untuk melaksanakan permainan mengelak Tetris berdasarkan Python

Bagaimana untuk melaksanakan permainan mengelak Tetris berdasarkan Python

Apr 19, 2023 pm 06:10 PM
python

Tetris ialah permainan teka-teki klasik, pertama kali dibangunkan oleh Alexei Pajitnov Rusia pada tahun 1984. Dikatakan bahawa inspirasinya datang dari pengalaman zaman kanak-kanaknya dalam membina blok. Permainan ini mula-mula menjadi popular di komputer di Kesatuan Soviet dan kemudian menjadi popular di seluruh dunia. Niat reka bentuk asalnya adalah untuk melatih kelajuan reaksi pemain dan imaginasi spatial melalui permainan ini.

Bagi ramai orang yang lahir pada tahun 1980-an, Tetris adalah kenangan zaman remaja mereka. Pada masa itu, orang tidak mempunyai banyak jenis permainan untuk dipilih sekarang, dan Tetris adalah salah satu permainan yang paling popular. Orang sering berkumpul untuk bermain Tetris di Famicom atau konsol permainan lain, dan menghabiskan berjam-jam bersama-sama. Pengalaman permainan seperti ini bukan sahaja permainan itu sendiri, tetapi juga komunikasi dan interaksi antara orang, yang telah menjadi kenangan berharga bagi ramai orang.

Saya tiada apa-apa nak buat baru-baru ini, jadi saya bermain sedikit permainan mengelak saya harap ia akan membantu dan memberi inspirasi kepada rakan-rakan yang melihatnya. Sudah tentu, hanya fungsi mudah dilaksanakan di sini, dan ia juga memberi ruang kepada rakan lain untuk mengubah suai atau mengembangkan semula.

Mari kita lihat pelaksanaan kod.

import pygame
import random

# 初始化 Pygame
pygame.init()

# 设置游戏窗口大小和标题
win_width, win_height = 640, 480
win = pygame.display.set_mode((win_width, win_height))
pygame.display.set_caption("小游戏")

# 设置游戏颜色
black = (0, 0, 0)
white = (255, 255, 255)
red = (255, 0, 0)

# 设置关键物属性
man_width, man_height = 50, 100
man_x, man_y = win_width // 2 - man_width // 2, win_height - man_height
man_vel = 5

# 设置障碍物属性
obstacle_width, obstacle_height = 50, 50
obstacle_x, obstacle_y = random.randint(0, win_width - obstacle_width), 0
obstacle_vel = 2

# 设置字体和文本
font = pygame.font.SysFont(None, 30)
score_text = font.render("得分: 0", True, white)

# 初始化分数和帧率
score = 0
fps = 30
clock = pygame.time.Clock()

# 游戏循环
game_over = False
while not game_over:
    # 设置帧率
    clock.tick(fps)

    # 检测事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            game_over = True

    # 获取键盘输入
    keys = pygame.key.get_pressed()
    if keys[pygame.K_LEFT] and man_x > 0:
        man_x -= man_vel
    if keys[pygame.K_RIGHT] and man_x < win_width - man_width:
        man_x += man_vel

    # 移动障碍物
    obstacle_y += obstacle_vel

    # 判断是否碰撞
    if obstacle_y > man_y:
        if man_x < obstacle_x < man_x + man_width or man_x < obstacle_x + obstacle_width < man_x + man_width:
            game_over = True

    # 判断障碍物是否移出屏幕
    if obstacle_y > win_height:
        obstacle_x, obstacle_y = random.randint(0, win_width - obstacle_width), 0
        score += 1
        score_text = font.render("得分: " + str(score), True, white)

    # 绘制屏幕
    win.fill(black)
    pygame.draw.rect(win, red, (man_x, man_y, man_width, man_height))
    pygame.draw.rect(win, white, (obstacle_x, obstacle_y, obstacle_width, obstacle_height))
    win.blit(score_text, (10, 10))
    pygame.display.update()

# 退出 Pygame
pygame.quit()
Salin selepas log masuk

Rendering

Bagaimana untuk melaksanakan permainan mengelak Tetris berdasarkan Python

Dalam kod sampel ini, kami menggunakan fungsi clock.tick(fps) untuk mengehadkan Permainan kadar bingkai ialah fps, yang mengawal kepantasan permainan berjalan. Dalam gelung permainan, gunakan fungsi pygame.time.Clock().tick(fps) untuk menjeda permainan untuk tempoh masa selepas setiap gelung tamat supaya kadar bingkai permainan tidak terlalu tinggi.

Selain itu, kami juga menggunakan modul fon Pygame untuk memaparkan markah Setiap kali skor dijaringkan, teks skor akan dipaparkan semula dan paparan dikemas kini.

Selepas pengubahsuaian ini, permainan harus berjalan pada kelajuan yang agak stabil Anda boleh melaraskan kadar bingkai mengikut keperluan untuk mengawal kelajuan larian permainan. Anda boleh mengubah suai dan melanjutkan kod mengikut keperluan anda untuk mencapai permainan yang lebih kompleks dan menarik.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan permainan mengelak Tetris berdasarkan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah kelebihan dan kekurangan templat? Apakah kelebihan dan kekurangan templat? May 08, 2024 pm 03:51 PM

Apakah kelebihan dan kekurangan templat?

Cara Muat turun DeepSeek Xiaomi Cara Muat turun DeepSeek Xiaomi Feb 19, 2025 pm 05:27 PM

Cara Muat turun DeepSeek Xiaomi

Google AI mengumumkan Gemini 1.5 Pro dan Gemma 2 untuk pembangun Google AI mengumumkan Gemini 1.5 Pro dan Gemma 2 untuk pembangun Jul 01, 2024 am 07:22 AM

Google AI mengumumkan Gemini 1.5 Pro dan Gemma 2 untuk pembangun

Dengan hanya $250, pengarah teknikal Hugging Face mengajar anda cara memperhalusi Llama 3 Dengan hanya $250, pengarah teknikal Hugging Face mengajar anda cara memperhalusi Llama 3 May 06, 2024 pm 03:52 PM

Dengan hanya $250, pengarah teknikal Hugging Face mengajar anda cara memperhalusi Llama 3

Kongsi beberapa rangka kerja projek berkaitan AI dan LLM sumber terbuka .NET Kongsi beberapa rangka kerja projek berkaitan AI dan LLM sumber terbuka .NET May 06, 2024 pm 04:43 PM

Kongsi beberapa rangka kerja projek berkaitan AI dan LLM sumber terbuka .NET

Panduan lengkap untuk penyahpepijatan dan analisis fungsi golang Panduan lengkap untuk penyahpepijatan dan analisis fungsi golang May 06, 2024 pm 02:00 PM

Panduan lengkap untuk penyahpepijatan dan analisis fungsi golang

Bagaimana anda bertanya kepadanya Deepseek Bagaimana anda bertanya kepadanya Deepseek Feb 19, 2025 pm 04:42 PM

Bagaimana anda bertanya kepadanya Deepseek

Bagaimana untuk menyimpan fungsi menilai Bagaimana untuk menyimpan fungsi menilai May 07, 2024 am 01:09 AM

Bagaimana untuk menyimpan fungsi menilai

See all articles