الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

اظهار صورة عند الضغط على زر معين في البايثون والpygame؟

بدأه البندري في 19 أكتوبر 2011 · 5 رد · 1,057 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لسلام عليكم..

أثناء تطبيقي لأحد الأمثلة يطلب مني أن أظهر صورة عند نقطة معينة وذلك عند الضغط على حرف الـS مثلاً

واظهارها عند نقطة أخرى عند الضغط على حرف الـD مثلاً..

المشكلة لدي هو أن الصورة تظهر ولاتختفي بعد ذلك، مع أنني أضفت أمر ملئ الشاشة بلون الخلفية عند بداية كل while loop

ولم أفلح!

ثم حاولت بعد ذلك رسم مستطيل بنفس أبعاد الصورة بنفس موضع الصورة الأخرى (ليتم مسحها) وأيضاً لم تنجح الطريقة،

هل من نصائح؟

وجزاكم الله خيراً..

import sys,pygame
from pygame.locals import *

pygame.init()

w=pygame.display.set_mode((468,360))
run=1


b="ball.gif"
# loading the image
ball=pygame.image.load(b).convert_alpha()

# a function to return the surface size
size=ball.get_size()

# assigning False to the buttons state before hitting them
# and later you will see that once I press them their state
# will be TRue
s_state=False
d_state=False

while run:
    w.fill((0,0,0))

    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            pygame.quit()
            sys.exit()

        if event.type==KEYDOWN:
            if event.key==K_s: #the 's' button
                s_state=True
                #print event.key

            elif event.key==K_d: # the 'd' button
                d_state=True
                #print event.key

    if s_state:
        #pygame.draw.rect(w,(0,0,0),Rect(size,(35,40)))
        w.blit(ball,(0,0))

    if d_state:
        #pygame.draw.rect(w,(0,0,0),Rect(size,(0,0)))
        w.blit(ball,(100,100))

    pygame.display.flip()

..كفاني فخراً أنني مسلمة..

***

1156596065.gif

#2

لاحظت بأن الكود يحتاج إلى تعديل (لأنني حاولت اختصاره حتى تكون المشكلة واضحة للقراء)..

فقط أحتاج تعديل الكومنتس..

..كفاني فخراً أنني مسلمة..

***

1156596065.gif

#3

هل من مساعدة؟

تم تعديل هذه المشاركة بواسطة البندري في 27 أكتوبر 2011 في 05:48

..كفاني فخراً أنني مسلمة..

***

1156596065.gif

#4

تفضل

import sys
import pygame
from pygame.locals import *

def write(msg="pygame is cool"):
    myfont = pygame.font.SysFont("Arial", 16)
    mytext = myfont.render(msg, True, (250,250,200))
    mytext = mytext.convert_alpha()
    return mytext

pygame.init()
screen=pygame.display.set_mode((468,360))
b="ball.gif"

ball=pygame.image.load(b).convert_alpha()

background = pygame.Surface((screen.get_width(), screen.get_height()))

run = 1
while run:

    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            pygame.quit()
            sys.exit()

        if event.type==KEYDOWN:
            if event.key==K_s: #the 's' button
                screen.blit(ball,(0,0))
            if event.key==K_d: # the 'd' button
                screen.blit(background,(0,0))
        screen.blit(write("Press S to Show and D to Remove :/ "),(5,200))
        pygame.display.flip()

other ESTJ thing

اقتباس
Help Me To Help You

0xBAD00DAD.png

#5

الأخ ihope:

جزاكم الله خيراً على تعاونك..

ولكن ربما لم أظهر الغرض من البرنامج بشكل واضح، حيث أنني كنت أريد أن تظهر الصورة عند الضغط على حرف الـs عند احداثي معين،

وعند الضغط على حرف الـd تظهر الصورة عند احداثي آخر، وتختفي الصورة التي ظهرت عند الضغط على حرف الـs، والعكس..

ولكني استفدت من التعديل الذي قمت به، فأضفت أمر ملئ الشاشة قبل حرف الs وقبل حرف الـd حتى تظهر أو تختفي الصورة بحسب الشرط..

مع ذلك ظلت لدي مشكلة استطعت حلها، وأيضاً تساؤل:

المشكلة:

ماذا إذا أردت أن تختفي الصورة فقط، وليس كل الشاشة لوجود كائنات أخرى أحتاج إلى إظهارها دائماً بعد تحقيق الشرط مثلاً..

لحل ذلك، جعلت المتغير (background) يرجع لي أبعاد الصورة وليس الـscreen

وأضفت الأمر بملئ منطقة الصورة بلون الخلفية عند تحقيق شرط الضغط على الs والd

(أرفقت التعديل)

التساؤل:

لماذا لم تعمل فكرة أن يرجع لي الbutton state، أحد القيمتين True or False

ثم يقوم برسم الصورة بناء على القيمة المرجعة؟؟

بارك الله فيكم..

import sys
import pygame
from pygame.locals import *

def write(msg="pygame is cool"):
    myfont = pygame.font.SysFont("Arial", 14)
    mytext = myfont.render(msg, False, (250,250,200))
    mytext = mytext.convert_alpha()
    return mytext

pygame.init()
screen=pygame.display.set_mode((468,360))
b="images.jpg"

ball=pygame.image.load(b).convert_alpha()

background = pygame.Surface((ball.get_width(), ball.get_height()))

run = 1
while run:

    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            pygame.quit()
            sys.exit()

        if event.type==KEYDOWN:
            if event.key==K_s: #the 's' button
                screen.blit(background,(250,200))
                screen.blit(ball,(0,0))
            if event.key==K_d: # the 'd' button               
                screen.blit(background,(0,0))
                pygame.draw.rect(screen,(255,0,0),(380,60,50,50))
                screen.blit(ball,(250,200))
        screen.blit(write("Press s to show it in the top-left corner and d to show it in another coordinate :/ "),(5,200))
        pygame.display.flip()

..كفاني فخراً أنني مسلمة..

***

1156596065.gif

#6

أنتظر اجاباتكم..

..كفاني فخراً أنني مسلمة..

***

1156596065.gif

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…