pygame
स्क्रीन पर ड्राइंग
खोज…
एक छोटे से एनीमेशन के साथ स्क्रीन पर आकृतियाँ, पाठ और चित्र बनाना
यह कार्यक्रम प्रदर्शन पर कुछ आकृतियों को आकर्षित करेगा, "हैलो वर्ल्ड!" स्क्रीन के बीच में और एक छवि को खिड़की के हर कोने में जाने दें। आप अपनी इच्छित प्रत्येक छवि का उपयोग कर सकते हैं, लेकिन आपको अपने प्रोग्राम के रूप में उसी डायरेक्टरी में छवि फ़ाइल को रखना होगा।
संपूर्ण कोड:
import pygame, sys
from pygame.locals import *
pygame.init()
FPS = 30 #frames per second setting
fpsClock = pygame.time.Clock()
#set up the window
screen = pygame.display.set_mode((400, 300), 0, 32)
pygame.display.set_caption('animation')
#set up the colors
white = (255, 255, 255)
black = ( 0, 0, 0)
green = (0, 255, 0)
blue = (0, 0, 180)
red = (255, 0, 0)
image = pygame.image.load('image.png')
imagex = 360
imagey = 260
direction = 'left'
# text setting
font_obj = pygame.font.Font('freesansbold.ttf', 32)
text_surface_obj = font_obj.render('Hello World!', True, GREEN, BLUE)
text_rect_obj = text_surface_obj.get_rect()
text_rectObj.center = (200, 150)
while True: # the main game loop
screen.fill(WHITE)
# draw a green polygon onto the surface
pygame.draw.polygon(screen, green, ((146, 0), (291, 106), (236, 277), (56, 277), (0, 106)))
# draw some blue lines onto the surface
pygame.draw.line(screen, blue, (60, 60), (120, 60), 4)
pygame.draw.line(screen, blue, (120, 60), (60, 120))
pygame.draw.line(screen, blue, (60, 120), (120, 120), 4)
# draw a blue circle onto the surface
pygame.draw.circle(screen, blue, (300, 50), 20, 0)
# draw a red ellipse onto the surface
pygame.draw.ellipse(screen, red, (100, 150, 40,80), 1)
# draw a red rectangle onto the surface
pygame.draw.rect(screen,red, (200, 150, 100, 50))
# draw the text onto the surface
screen.blit(text_surface_obj, text_rect_obj)
#the animation of the image
if direction == 'right':
imagex += 5
if imagex == 360:
direction = 'down'
elif direction == 'down':
imagey += 5
if imagey == 260:
direction = 'left'
elif direction == 'left':
imagex -= 5
if imagex == 20:
direction = 'up'
elif direction == 'up':
imagey -= 5
if imagey == 20:
direction = 'right'
screen.blit(image, (imagex, imagey))
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
fpsClock.tick(FPS)
सफेद पृष्ठभूमि आरेखण:
screen.fill(white)
बहुभुज खींचना:
इस फ़ंक्शन में आप प्रदर्शन सतह, रंग और बहुभुज के हर कोने की स्थिति को परिभाषित करते हैं, आप उस घड़ी की दिशा में और वामावर्त कर सकते हैं।
pygame.draw.polygon(screen, green, ((146, 0), (291, 106), (236, 277), (56, 277), (0, 106)))
रेखाएँ खींचना:
यहां आप प्रदर्शन सतह, रंग, पहला और अंतिम बिंदु और रेखा की चौड़ाई को परिभाषित करते हैं।
pygame.draw.line(screen, blue, (60, 60), (120, 60), 4)
pygame.draw.line(screen, blue, (120, 60), (60, 120))
pygame.draw.line(screen, blue, (60, 120), (120, 120), 4)
वृत्त खींचना:
इस फ़ंक्शन में आप डिस्प्ले सतह, रंग, स्थिति, त्रिज्या और सर्कल की चौड़ाई को परिभाषित करते हैं (0 एक सादा सर्कल देता है)।
pygame.draw.circle(screen, blue, (300, 50), 20, 0)
दीर्घवृत्त खींचना:
इस फ़ंक्शन में आप डिस्प्ले सतह, रंग, स्थिति, क्षैतिज आकार, ऊर्ध्वाधर आकार और दीर्घवृत्त की चौड़ाई को परिभाषित करते हैं
pygame.draw.ellipse(screen, red, (100, 150, 40,80), 1)
आयत बनाना:
इस फ़ंक्शन में आप प्रदर्शन सतह, रंग, स्थिति और आयत के ऊर्ध्वाधर और क्षैतिज आकार को परिभाषित करते हैं।
pygame.draw.rect(screen,red, (200, 150, 100, 50))
पाठ को परिभाषित करना:
पहले आप अपने पाठ के प्रकार और आकार को परिभाषित करते हैं, मैं एक मूल फ़ॉन्ट का उपयोग करता हूं जो आपको pygame के साथ मिलता है।
font_obj = pygame.font.Font('freesansbold.ttf', 32)
फिर आप वास्तविक पाठ को परिभाषित करते हैं, यदि आप इसे बोल्ड चाहते हैं या नहीं (ट्रू / फाल्स), पाठ का रंग और, यदि आप अपने पाठ को चिह्नित करना चाहते हैं, तो अंकन का रंग।
text_surface_obj = font_obj.render('Hello World!', True, green, blue)
यदि आप अपने पाठ को चिह्नित करना चाहते हैं या अपने पाठ के केंद्र को परिभाषित करना चाहते हैं, तो आपको pygame को इस फ़ंक्शन के साथ बताना होगा:
text_rect_obj = text_surface_obj.get_rect()
और उसके बाद, आप इस फ़ंक्शन के साथ अपने पाठ के केंद्र को परिभाषित कर सकते हैं:
text_rect_obj.center = (200, 150)
पाठ खींचना:
यदि आपने अपना पाठ चिह्नित किया है या केंद्र को परिभाषित किया है, तो आपको पाठ को इस तरह से आकर्षित करना होगा:
screen.blit(text_surface_obj, text_rectObj)
अन्यथा आप अपना पाठ आकर्षित करते हैं, लेकिन आपको स्थिति को परिभाषित करने की आवश्यकता है, इसलिए आप ऐसा करते हैं:
DISPLAYSURF.blit(textSurfaceObj, (100,50))
छवि को परिभाषित करना:
यहां आप उस छवि को परिभाषित करते हैं जिसका आप उपयोग करना चाहते हैं, प्रारंभ स्थिति (x और y निर्देशांक), और छवि की दिशा।
image = pygame.image.load('image.png')
imagex = 360
imagey = 260
direction = 'left'
छवि को एनिमेट करना:
यहां आप छवि की दिशा की जांच करते हैं, अगर यह एक कोने तक पहुंच गया है, यदि ऐसा है तो दिशा बदल दें, यदि नहीं, तो इसे उसी दिशा में 5 पिक्सेल स्थानांतरित करें और छवि को फिर से खींचें। कोड के इस भाग के साथ हम यही करते हैं:
if direction == 'right':
imagex += 5
if imagex == 360:
direction = 'down'
elif direction == 'down':
imagey += 5
if imagey == 260:
direction = 'left'
elif direction == 'left':
imagex -= 5
if imagex == 20:
direction = 'up'
elif direction == 'up':
imagey -= 5
if imagey == 20:
direction = 'right'
screen.blit(image, (imagex, imagey))
नोट: मेरी छवि 20 से 20 पिक्सेल है, मैंने इस्तेमाल किया if imagex == 360
और if imagey == 260:
क्योंकि तब मेरी छवि किनारे से 20 पिक्सेल है, यदि आपकी छवि का आकार अलग है, तो आपको संख्याएँ बदलनी होंगी ।
कार्यक्रम छोड़ने पर जाँच:
यहाँ हम जाँचते हैं कि आपने अपने प्रोग्राम की विंडो बंद की या नहीं।
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
डिस्प्ले अपडेट करना:
यहाँ आप pygame को डिस्प्ले को अपडेट करने के लिए कहते हैं ताकि आपके द्वारा खींची गई हर चीज स्क्रीन पर दिखाई दे।
pygame.display.update()
फ्रेम को प्रति सेकंड परिभाषित करना:
यहाँ आप pygame को पर्याप्त सोने के लिए कहते हैं ताकि प्रति सेकंड फ्रेम का सम्मान हो।
fpsClock.tick(FPS)