Cipta animasi imbasan radar menggunakan Pygame dalam Python

WBOY
Lepaskan: 2023-08-28 10:09:05
ke hadapan
1277 orang telah melayarinya

Pygame ialah satu set modul Python merentas platform yang direka untuk menulis permainan video. Ia termasuk grafik komputer dan perpustakaan bunyi yang direka untuk digunakan dengan bahasa pengaturcaraan Python. Pygame bukan enjin pembangunan permainan, tetapi satu set alat dan perpustakaan yang membolehkan pembangun mencipta permainan 2D menggunakan Python.

Pygame menyediakan pelbagai fungsi dan kelas untuk membantu pembangun membuat permainan, termasuk pemuatan dan manipulasi imej, main balik dan rakaman bunyi, pengendalian input papan kekunci dan tetikus, pengurusan sprite dan kumpulan serta pengesanan perlanggaran. Ia juga termasuk sokongan terbina dalam untuk tugas pembangunan permainan biasa seperti animasi, menatal dan peta berasaskan jubin.

Pygame ialah sumber terbuka dan percuma untuk digunakan, dan ia berjalan pada Windows, macOS, Linux dan platform lain. Ia sering digunakan dalam tetapan pendidikan sebagai pengenalan kepada pembangunan permainan atau sebagai alat untuk mengajar konsep pengaturcaraan.

Komponen untuk animasi imbasan radar

Animasi imbasan radar asas terdiri daripada bahagian berikut -

  • Bulatan Radar - Ini ialah bulatan yang mewakili julat radar. Ia berpusat pada asalan dan mempunyai jejari tetap.

  • Radar Scan - Ini ialah garisan berputar mengelilingi pusat bulatan. Ia mewakili pancaran yang dipancarkan daripada radar dengan julat imbasan 360 darjah.

  • Sasaran Radar - Ini adalah objek yang ingin kita kesan menggunakan radar. Mereka diwakili sebagai titik pada skrin.

Sekarang kita mengetahui komponen animasi imbasan radar, mari kita selami pelaksanaannya menggunakan Pygame.

Prasyarat

Sebelum kita mendalami tugas itu, terdapat beberapa perkara yang perlu dipasang pada anda

Sistem-

Senarai tetapan yang disyorkan -

  • pip pasang Numpy, pygame dan Math

  • Dijangka pengguna akan dapat mengakses mana-mana IDE kendiri seperti VSCode, PyCharm, Atom atau teks Sublime.

  • Anda juga boleh menggunakan penyusun Python dalam talian seperti Kaggle.com, Google Cloud Platform atau mana-mana platform lain.

  • Versi Python yang dikemas kini. Sehingga berita ini ditulis, saya menggunakan versi 3.10.9.

  • Ketahui tentang penggunaan Jupyter Notebook.

  • Pengetahuan dan penggunaan persekitaran maya akan bermanfaat tetapi tidak diperlukan.

  • Juga harapkan orang itu mempunyai pemahaman yang baik tentang statistik dan matematik.

Butiran pelaksanaan

Import Perpustakaan - Kami akan bermula dengan mengimport perpustakaan yang diperlukan - Pygame, NumPy dan Math.

import pygame
import math
import random
Salin selepas log masuk

Initialize Game Window - Kami akan menggunakan pustaka Pygame untuk memulakan tetingkap permainan dengan lebar dan ketinggian yang diperlukan.

WIDTH = 800
HEIGHT = 600
pygame.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Radar Sweep Animation")
clock = pygame.time.Clock()
Salin selepas log masuk

Sediakan persekitaran permainan - Kami akan menyediakan persekitaran permainan dengan menentukan warna, latar belakang dan kadar bingkai animasi.

WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
Salin selepas log masuk

Tetapkan kadar bingkai animasi

Tentukan Bulatan Radar - Kami akan menentukan bulatan radar dengan jejari dan koordinat pusat yang dikehendaki. Kami juga akan menetapkan warna bulatan dan ketebalan garisan.

radar_circle_radius = 200
radar_circle_center_x = int(WIDTH / 2)
radar_circle_center_y = int(HEIGHT / 2)
Salin selepas log masuk

Tentukan Imbasan Radar - Kami akan mentakrifkan imbasan radar dengan menetapkan sudut awal kepada 0 darjah dan menambahnya setiap bingkai supaya mengimbas 360 darjah. Kami juga akan menetapkan warna dan ketebalan garisan imbasan.

Tentukan Imbasan Radar

radar_sweep_angle = 0
radar_sweep_length = radar_circle_radius + 50
def update():
   # Increment the angle in each frame
   global radar_sweep_angle
   radar_sweep_angle += 1
# Draw the radar sweep line
def draw_radar_sweep():
   x = radar_circle_center_x + radar_sweep_length *
math.sin(math.radians(radar_sweep_angle))
   y = radar_circle_center_y + radar_sweep_length *
math.cos(math.radians(radar_sweep_angle))
   pygame.draw.line(screen, BLACK, (radar_circle_center_x,
radar_circle_center_y), (x, y), 3)
Salin selepas log masuk

Tentukan Sasaran Radar - Kami akan mentakrifkan sasaran radar menggunakan koordinat x dan y rawak dalam bulatan radar. Kami juga akan menetapkan warna dan jejari sasaran.

num_targets = 10
target_radius = 10
targets = []
for i in range(num_targets):
   x = random.randint(radar_circle_center_x - radar_circle_radius,
radar_circle_center_x + radar_circle_radius)
   y = random.randint(radar_circle_center_y - radar_circle_radius,
radar_circle_center_y + radar_circle_radius)
   targets.append((x, y))
   # Draw the radar targets
def draw_radar_targets():
   for target in targets:
      pygame.draw.circle(screen, BLUE, target, target_radius)
      distance_to_target = math.sqrt((target[0] - x) ** 2 + (target[1] - y) ** 2)
      if distance_to_target <= target_radius:
         pygame.draw.rect(screen, RED, (target[0], target[1], 60, 20))
         font = pygame.font.SysFont(None, 25)
         text = font.render("DETECTED", True, BLACK)
         screen.blit(text, (target[0], target[1]))
Salin selepas log masuk

Jalankan Permainan - Kami akan menjalankan permainan dengan mencipta tetingkap pygame, menyediakan pengendali acara yang diperlukan dan menjalankan gelung permainan.

# Main game loop
running = True
while running:
   for event in pygame.event.get():
      if event.type == pygame.QUIT:
         running = False
   screen.fill(WHITE)
   update()
   draw_radar_sweep()
   draw_radar_targets()
   pygame.display.update()
   clock.tick(FPS)
# Quit the game
pygame.quit()
Salin selepas log masuk

Program akhir, kod

import pygame
import math
import random
# Initializing the Game Window:
WIDTH = 800
HEIGHT = 600
pygame.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Radar Sweep Animation")
clock = pygame.time.Clock()
# Defining colors:
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
# Set the frame rate of the animation
FPS = 60
# Defining the Radar Circle:
radar_circle_radius = 200
radar_circle_center_x = int(WIDTH / 2)
radar_circle_center_y = int(HEIGHT / 2)
# Define the radar sweep
radar_sweep_angle = 0
radar_sweep_length = radar_circle_radius + 50
# Define the radar targets
num_targets = 10
target_radius = 10
targets = []
for i in range(num_targets):
   x = random.randint(radar_circle_center_x - radar_circle_radius,
radar_circle_center_x + radar_circle_radius)
   y = random.randint(radar_circle_center_y - radar_circle_radius,
radar_circle_center_y + radar_circle_radius)
targets.append((x, y))
def update():
   # Increment the angle in each frame
   global radar_sweep_angle
   radar_sweep_angle += 1
# Draw the radar sweep line
def draw_radar_sweep():
   x = radar_circle_center_x + radar_sweep_length *
math.sin(math.radians(radar_sweep_angle))
   y = radar_circle_center_y + radar_sweep_length *
math.cos(math.radians(radar_sweep_angle))
   pygame.draw.line(screen, BLACK, (radar_circle_center_x,
radar_circle_center_y), (x, y), 3)
# Draw the radar targets
def draw_radar_targets():
   for target in targets:
      pygame.draw.circle(screen, BLUE, target, target_radius)
      distance_to_target = math.sqrt((target[0] - x) ** 2 + (target[1] - y)** 2)
      if distance_to_target <= target_radius:
         pygame.draw.rect(screen, RED, (target[0], target[1], 60, 20))
         font = pygame.font.SysFont(None, 25)
         text = font.render("DETECTED", True, BLACK)
         screen.blit(text, (target[0], target[1]))
# Main game loop
running = True
while running:
   for event in pygame.event.get():
      if event.type == pygame.QUIT:
         running = False
         screen.fill(WHITE)
         update()
         draw_radar_sweep()
         draw_radar_targets()
      pygame.display.update()
      clock.tick(FPS)
# Quit the game
pygame.quit()
Salin selepas log masuk
Cipta animasi imbasan radar menggunakan Pygame dalam Python

Kita boleh melihat output program dan memerhati animasi permainan.

Kesimpulan

Dalam dokumen ini, kami meneroka cara mencipta animasi imbasan radar menggunakan Pygame dalam Python. Kami mempelajari tentang komponen animasi imbasan radar dan melihat butiran pelaksanaan menggunakan coretan kod dan contoh praktikal. Pygame menyediakan API yang mesra pengguna untuk pembangunan permainan dan merupakan pilihan terbaik untuk mencipta permainan video 2D dan animasi. Dengan pengetahuan yang diperoleh daripada dokumen ini, anda kini seharusnya boleh mencipta animasi imbasan radar anda sendiri menggunakan Pygame.

Atas ialah kandungan terperinci Cipta animasi imbasan radar menggunakan Pygame dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan