Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι
  • Σελίδα:
  • 1
  • 2

ΘΕΜΑ: Επιλογή αντικειμένου και ομαλή κίνηση pygame

Επιλογή αντικειμένου και ομαλή κίνηση pygame 7 Χρόνια 9 Μήνες πριν #3758

  • cps
  • Το Άβαταρ του/της cps
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 56
Καλημέρα,
Έχω πέντε αντικείμενα (εικόνες) στο pygame τα οποία θέλω κάθε αντικείμενο που επιλέγω να μπορώ να το μετακινώ.
Αν βάλω μόνο ένα αντικείμενο τότε μπορώ να το μετακινώ, στο σημείο που πατάω το ποντίκι σε αυτό το σημείο πηγαίνει και το αντικείμενο. Όμως στην περίπτωση που υπάρχουν πέντε αντικείμενα, πρέπει να επιλέξω ποιο αντικείμενο θα κινηθεί, και αυτό δεν μπορώ να το κάνω.
Επίσης αν έχω ένα αντικείμενο στο (0,0) και πατήσω το ποντίκι στο (20,30) τότε το αντικείμενο μεταφέρεται αμέσως στο (20,30) με ποιο τρόπο θα μπορούσα να το κάνω να μεταβιβάζεται από το (0,0) στο (20,30) βλέποντας να εκτελεί τη διαδρομή.
Ευχαριστώ εκ των προτέρων.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Επιλογή αντικειμένου και ομαλή κίνηση pygame 7 Χρόνια 9 Μήνες πριν #3764

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
Καλησπέρα.

Ο σωστός τρόπος για να κάνεις αντικείμενα για ένα παιχνίδι είναι με αντικειμενοστραφή
προγραμματισμό. Θα πρέπει να ξέρεις κλάσεις (κ.ο.κ) για να μπορέσεις να το κάνεις αυτό.

Στα 2d games οι κλάσεις που υλοποιούν αντικείμενα παιχνιδιού ονομάζονται sprites. Το pygame
έχει δική του υλοποιήσει για Sprites αλλά εγώ θα σε δείξω πως γίνονται για να έχεις καλύτερο
έλεγχο σε αυτό που θες να κάνεις.

Πρώτα σκεφτόμαστε τη πρέπει να έχει ένα αντικείμενο παιχνιδιού.

1) Πρέπει να έχει μια εικόνα που αντιπροσωπεύει το αντικείμενο μέσα στο παιχνίδι.
2) Πρέπει να έχει κάποιες συντεταγμένες (x,y) που αντιπροσωπεύουν την θέση του μέσα στον κόσμο.
3) Θα πρέπει να έχει κάποιο όνομα (tag) για να μπορούμε να το ξεχωρίζουμε από άλλα αντικείμενα
μέσω κώδικα.



Επίσης θα πρέπει να υλοποιήσουμε και μία λειτουργικότητα που θα το ζωγραφίζει στην οθόνη
του υπολογιστεί χρησιμοποιώντας το blit του pygame και βέβαια μπορούμε να υλοποιήσουμε
και ότι άλλες μεθόδους θέλουμε. Πχ μία μπορεί να είναι η κίνηση με το click του ποντικιού
που προσπαθείς να κάνεις και εσύ.


Πάμε να δούμε πως γίνεται αυτό στην πράξη. Να ξέρεις, μην αντιγράψεις τον κώδικα αλλά προσπάθησε με αυτά που σε είπα να καταλάβεις την λογική και να τον υλοποιήσεις μόνος σου.
class Sprite:
 
    #Κατασκευαστείς της κλάσης.
    def __init__(self, image):
 
        self.image = image #Εικόνα του αντικειμένου.
        self.tag   = ""    #Tag name του αντικειμένου.
        self.pos   = (0,0) #Αρχική θέσει στον κόσμο.
 
        self.width = image.get_width() #Πλάτος του αντικειμένου.
        self.height= image.get_height()#Ύψος του αντικειμένου.
 
 
    #Μέθοδος που ζωγραφίζει την εικόνα του αντικειμένου
    #στην θέση self.pos του κόσμου.
    def render(self, screen):
        '''Ζωγραφίζει την εικόνα στο screen surface.'''
        screen.blit(self.image, self.pos)
 
 
 
    #Αντικατάσταση της παλιάς εικόνας με μια άλλη.
    #Αυτήν είναι μια επιπλέον μέθοδος. Μπορείς να
    #κάνεις ότι θέλεις εσύ είσαι ο προγραμματιστής :p 
    def set_image(self, new_image):
 
        self.image = new_image #Αποθήκευση νέας εικόνας.
 
        self.width = new_image.get_width()  #Δημιουργία νέου πλάτους.
        self.height= new_image.get_height() #Δημιουργία νέου ύψους.
 

Και τώρα δες πως χρησιμοποιώ αυτήν την κλάση που μόλις υλοποίησα για να φτιάξω ένα αντικείμενο
το οποίο κινείτε όλο προς τα δεξιά και δεν σταματάει ποτέ.

import pygame, sys
from pygame.locals import *
from sprite import Sprite
 
 
#Αρχικοποίηση του pygame.
pygame.init()
screen = pygame.display.set_mode( (400,400) )
pygame.display.set_caption("Test")
 
#Φόρτωση εικόνας.
image = pygame.image.load("ball.png").convert()
 
#Δημιουργία αντικειμένου sprite.
player = Sprite(image)
 
 
 
#---------------Main Loop---------------#
while True:
 
 
    #Background άσπρο χρώμα.
    screen.fill( (255,255,255) )
 
 
    #-----------Events System-----------#
    for event in pygame.event.get():
 
        #έξοδος πατώντας το κουμπί x.
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
    #-----------Events System-----------#
 
 
    #Render player.
    player.render(screen)
 
 
 
    #---Player Animation---#
 
    #(x,y) συντεταγμένες του παίχτη.
    x,y = player.pos
 
 
    #Αυξάνω το x κατά 50 * (1/1000) pixels.
    #Άμα βάλεις σκέτο 50 δεν θα προλάβεις να δεις καν
    #την κίνηση επειδή η θέση του παίχτη θα αλλάζει πολύ
    #γρήγορα.
    x += 50 * (1/1000)
 
    #Kάνω update το position του παίχτη.
    player.pos = (x,y)
 
    #---Player Animation---#
 
 
    #Flip the display.
    pygame.display.flip()
 
#---------------Main Loop---------------#
 


Τώρα πάμε να δούμε πως μπορούμε να υλοποιήσουμε μια μέθοδο μέσα στην κλάση sprite έτσι ώστε
όταν κάνουμε click το αντικείμενό μας να πηγαίνει προς την κατεύθυνση που "κλικάραμε"

Για να δώσουμε την αίσθηση της κίνησης πρέπει να αλλάζουμε την θέση του αντικειμένου μας
συνέχεια και ομαλά. Πως όμως θα ξέρουμε αν πρέπει να αυξάνουμε ή να μειώνουμε το x ή το y
έτσι ώστε τελικά να φτάσουμε στο σημείο που "κλικάραμε"; Θα πρέπει να ελέγχουμε εάν το
x ή το y του αντικειμένου μας είναι μικρότερο ή μεγαλύτερο από το τις συντεταγμένες του
σημείου που "κλικάραμε" και να τα αυξομειώνουμε ανάλογα μέχρι να γίνουν ίσα.


Ας δούμε πως το κάνουμε σε κώδικα:
Αυτήν την μέθοδο απλός την προσθέτεις στην κλάση sprite.
    def mouse_move(self, clicked_pos, speed):
 
        mousex, mousey = clicked_pos
        x     , y      = self.pos
 
 
        #Εάν οι συντεταγμένες του αντικειμένου μου δεν είναι
        #ίσες με του σημείο που "κλίκαρα" τότε συνέχισε να κινείς
        #το αντικείμενό μου.
        if x != mousex and y != mousey:
 
            #Πρέπει να αυξήσω το x.
            if x < mousex:
                x += speed * (1/1000)
 
            #Πρέπει να μειώσω το x.
            elif x > mousex:
                x -= speed * (1/1000)
 
 
            #Πρέπει να αυξήσω το y.
            if y < mousey:
                y += speed * (1/1000)
 
            #Πρέπει να μειώσω το y.
            elif y > mousey:
                y -= speed * (1/1000)
 
 
            #Κάνω update στην θέση του αντικειμένου μου.
            self.pos = (x, y)

Και τώρα δες ένα παράδειγμα που τα χρησιμοποιώ όλα αυτά για να κάνω μια εικόνα να
ακολουθεί το ποντίκι.
import pygame, sys
from pygame.locals import *
from sprite import Sprite
 
 
#Αρχικοποίηση του pygame.
pygame.init()
screen = pygame.display.set_mode( (400,400) )
pygame.display.set_caption("Test")
 
#Φόρτωση εικόνας.
image = pygame.image.load("ball.png").convert()
 
#Δημιουργία αντικειμένου sprite.
player = Sprite(image)
 
 
 
#---------------Main Loop---------------#
while True:
 
 
    #Background άσπρο χρώμα.
    screen.fill( (255,255,255) )
 
 
    #-----------Events System-----------#
    for event in pygame.event.get():
 
        #έξοδος πατώντας το κουμπί x.
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
    #-----------Events System-----------#
 
 
    #Render player.
    player.render(screen)
 
 
 
    #---Player Animation---#
 
    #(x,y) συντεταγμένες του ποντικιού.
    x,y = pygame.mouse.get_pos()
 
    #Κίνησε τον παίχτη όπου βρίσκεται ο κέρσορας του ποντικιού.
    player.mouse_move( (x,y), 50 )
 
    #---Player Animation---#
 
 
    #Flip the display.
    pygame.display.flip()
 
#---------------Main Loop---------------#

Κατέβασε επίσης αυτό το παράδειγμα από εδώ για να το
τρέξεις να δεις πως λειτουργεί.

Στην γραμμή
image = pygame.image.load("ball.png").convert()
αντικατέστησε
το string "ball.png" με το path μιας δικής σου εικόνας.


Πάντως για να καταλάβεις όλα αυτά που σε είπα πρέπει να ξέρεις αντικειμενοστραφή προγραμματισμό
διαφορετικά θα τα βρεις σκούρα τα πράματα.
Τελευταία διόρθωση: 7 Χρόνια 9 Μήνες πριν από babaliaris1.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": cps

Επιλογή αντικειμένου και ομαλή κίνηση pygame 7 Χρόνια 9 Μήνες πριν #3767

  • cps
  • Το Άβαταρ του/της cps
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 56
Η εξήγηση ήταν πολύ αναλυτική και ευχαριστώ πολύ.
Με την pygame ασχολούμαι πρώτη φορά και η αλήθεια είναι ότι με τις κλάσεις ίσα που αρχίζω και καταλαβαίνω τον τρόπο λειτουργίας. Αυτό που γνωρίζω είναι ότι η κλάση δίνει ιδιότητες σε ένα αντικείμενο. Η ερώτησή μου είναι στην περίπτωση που έχω πέντε ή έξι αντικείμενα τα οποία έχουν ίδιες ιδιότητες, αλλά έχουν μία διαφορά π.χ. η αρχική τους θέση στην οθόνη είναι διαφορετική, μπορώ να τα ορίσω σε μία κλάση, ή πρέπει να φτιάξω διαφορετικες κλάσεις για κάθε αντικείμενο.
Για παράδειγμα αυτό που έγραψες
self.pos   = (0,0) #Αρχική θέσει στον κόσμο.
στην περίπτωση των πέντε αντικειμένων τι πρέπει να κάνω;
Μόλις ξεκινάει το παιχνίδι θέλω η αρχική θέση των αντικειμένων να είναι διαφορετική.(και να μετακινείται όπως είπα, το καθένα, αφού πρώτα επιλεχθεί)
Επίσης θέλω να ρωτήσω η συμπεριφορά ενός παιχνιδιού με pygame είναι διαφορετική σε wondows και διαφορετική σε linux, γιατί κατέβασα το παράδειγμα που μου είπες, αλλά μου εμφανίζει μία μπάλα σε άσπρη οθόνη η οποία όμως δεν κινείται.
Εγώ χρησιμοποιώ Linux Mint
Τελευταία διόρθωση: 7 Χρόνια 9 Μήνες πριν από cps.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Επιλογή αντικειμένου και ομαλή κίνηση pygame 7 Χρόνια 9 Μήνες πριν #3768

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
cps έγραψε:
Η εξήγηση ήταν πολύ αναλυτική και ευχαριστώ πολύ.
Με την pygame ασχολούμαι πρώτη φορά και η αλήθεια είναι ότι με τις κλάσεις ίσα που αρχίζω και καταλαβαίνω τον τρόπο λειτουργίας. Αυτό που γνωρίζω είναι ότι η κλάση δίνει ιδιότητες σε ένα αντικείμενο. Η ερώτησή μου είναι στην περίπτωση που έχω πέντε ή έξι αντικείμενα τα οποία έχουν ίδιες ιδιότητες, αλλά έχουν μία διαφορά π.χ. η αρχική τους θέση στην οθόνη είναι διαφορετική, μπορώ να τα ορίσω σε μία κλάση, ή πρέπει να φτιάξω διαφορετικες κλάσεις για κάθε αντικείμενο.
Για παράδειγμα αυτό που έγραψες
self.pos   = (0,0) #Αρχική θέσει στον κόσμο.
στην περίπτωση των πέντε αντικειμένων τι πρέπει να κάνω;
Μόλις ξεκινάει το παιχνίδι θέλω η αρχική θέση των αντικειμένων να είναι διαφορετική.(και να μετακινείται όπως είπα, το καθένα, αφού πρώτα επιλεχθεί)

Ακριβώς αυτό πετυχαίνεις με τις κλάσεις. Πχ για να δημιουργήσεις 5 διαφορετικά αντικείμενα
με την κλάση sprite κάνεις το εξής:
object1 = Sprite(image1)
object2 = Sprite(image2)
object3 = Sprite(image3)
object4 = Sprite(image4)
object5 = Sprite(image5)

Κάθε αντικείμενο (object1 , object2, object3, object4, object5) έχει δικό του pos, δικό του
image, δικό του tag δικό του width και δικό του height.

Δηλαδή αν κάνεις object1.pos = (5,10) θα αλλάξεις μόνο την μεταβλητή pos του συγκεκριμένου
αντικειμένου και όχι των υπολοίπων.

Γενικά μια κλάση σκέψου την σαν ένα ενιαίο πρόγραμμα από το οποίο μπορείς να φτιάξεις αντίγραφα
με διαφορετικά δεδομένα κάθε φορά. Έτσι κάθε αντίγραφο έχει τις δικές του μεταβλητές και
σου παρέχει δικά του δεδομένα.

Τώρα για να μπορείς να επιλέγεις ποιο αντικείμενο θέλεις να μετακινήσεις αυτό είναι άλλο
παπαευαγγέλιο :p Κατάλαβε μία πως λειτουργούν τα αντικείμενα μιας κλάσεις και μετά ξανά
ρωτάμε να σε πως πως να το κάνεις αυτό.

Γενικά καλό είναι να διαβάσεις αντικειμενοστραφή προγραμματισμό για να το καταλάβεις σωστά.
Είναι πολύ σημαντικό εάν θέλεις να ασχοληθείς με την δημιουργία βιντεοπαιχνιδιών.
Τελευταία διόρθωση: 7 Χρόνια 9 Μήνες πριν από babaliaris1.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Επιλογή αντικειμένου και ομαλή κίνηση pygame 7 Χρόνια 9 Μήνες πριν #3769

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
cps έγραψε:
Επίσης θέλω να ρωτήσω η συμπεριφορά ενός παιχνιδιού με pygame είναι διαφορετική σε wondows και διαφορετική σε linux, γιατί κατέβασα το παράδειγμα που μου είπες, αλλά μου εμφανίζει μία μπάλα σε άσπρη οθόνη η οποία όμως δεν κινείται.
Εγώ χρησιμοποιώ Linux Mint

Όχι η python έχει σχεδιαστή να τρέχει ανεξάρτητα το λειτουργικό σύστημα.

Η οθόνη είναι άσπρη επειδή κάνω fill άσπρο χρώμα.
Η εικόνα που αντιπροσωπεύει το αντικείμενο θα έπρεπε να πηγαίνει προς τον κέρσορα του ποντικιού.


Θα πρέπει να βλέπεις κάτι τέτοιο:
H μπάλα ακολουθεί τον κέρσορα του ποντικιού.
Τώρα δεν μου έρχεται στο μυαλό τη μπορεί να μην δουλεύει σωστά σε εσένα.

Τελευταία διόρθωση: 7 Χρόνια 9 Μήνες πριν από babaliaris1.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": cps

Επιλογή αντικειμένου και ομαλή κίνηση pygame 7 Χρόνια 9 Μήνες πριν #3771

  • cps
  • Το Άβαταρ του/της cps
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 56
Ευχαριστώ για τη βοήθεια.
Εγώ είχα φτιάξει αυτό
# -*- coding: utf-8 -*-
import pygame, sys,os
from pygame.locals import*
 
# screen size
screen=pygame.display.set_mode((800,600))
pygame.display.set_caption('ποδόσφαιρο')
 
#background
bg=pygame.image.load('images/1.png')
 
#αντικείμενο
img1a=pygame.image.load('images/1a.png')
 
moviesImg1a = img1a.get_rect().inflate(25, 25)
 
startImg1a = (80,10)
 
#Συνάρτηση εξόδου από το παιχνίδι
def input(events): 
    if event.type == QUIT:
    	exit()
    elif event.type == KEYDOWN:
    	if event.key == K_ESCAPE:
    		exit()
 
while True:
        screen.blit(bg, (0,0))
 
        screen.blit(img1a, startImg1a)
 
        pygame.display.flip()
        pygame.display.update()
 
        event = pygame.event.poll()
        input(pygame.event.get())
        if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
            mouse_loc = "mouse click at (%d, %d)" % event.pos
            pygame.display.set_caption(mouse_loc)
            mouse_pos = list(event.pos)
            startImg1a = moviesImg1a.move(mouse_pos)
Δεν είχα χρησιμοποιήσει κλάσεις και φανταζόμουν ότι στη συνέχεια θα είχα προβλήματα, ότι κάτι δε θα μου έβγαινε σωστά. Όταν θα έβαζα και άλλα αντικείμενα.
Θα το ξανακάνω όπως μου είπες χρησιμοποιώντας κλάσεις. Και όταν το κατααφέρω σε ξαναρωτάω.
Πάντως ευχαριστώ πολύ για τη βήθεια.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Επιλογή αντικειμένου και ομαλή κίνηση pygame 7 Χρόνια 9 Μήνες πριν #3772

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
cps έγραψε:
 
#Συνάρτηση εξόδου από το παιχνίδι
def input(events): 
    if event.type == QUIT:
    	exit()
    elif event.type == KEYDOWN:
    	if event.key == K_ESCAPE:
    		exit()

Παρατήρησες ότι αυτό δεν δουλεύει;
Ο λόγος είναι ότι έχεις δώσει στην συνάρτησή σου όνομα το οποίο είναι
ήδη δεσμευμένο από την python. Το input υπάρχει στην python και χρησιμοποιείτε
για την εισαγωγή δεδομένων από το πληκτρολόγιο και δεν μπορείς να το χρησιμοποιήσεις
ούτε ως όνομα μεταβλητής ούτε κλάσης ούτε συνάρτησης.
Τελευταία διόρθωση: 7 Χρόνια 9 Μήνες πριν από babaliaris1.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Επιλογή αντικειμένου και ομαλή κίνηση pygame 7 Χρόνια 9 Μήνες πριν #3773

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
Τώρα για να κάνεις click able μετακίνηση αντικειμένου μπορώ να σου δώσω την ιδέα, αλλά βέβαια
χρειάζεται αντικειμενοστραφής προγραμματισμός.

Πρέπει να κάνεις μία κλάση η οποία θα έχει μια μεταβλητή τύπου λίστας που θα κρατάει όλα
τα αντικείμενά Sprite που έχεις στο παιχνίδι, και μια επιπλέον μεταβλητή που θα κρατάει
το τελευταίο αντικείμενο που "κλίκαρες". Την κλάση μπορείς να την ονομάσεις Scene.

Στον κεντρικό κώδικα (εκεί δηλαδή που έχεις τα events και το main loop) θα φτιάξεις
όσα αντικείμενα sprite θέλεις. Στην συνέχεια θα φτιάξεις και ένα αντικείμενο (Μόνο ένα)
τύπου Scene και θα προσθέσεις σε αυτό όλα σου τα Sprites.

Στην συνέχεια μέσα στην κλάση Scene θα πρέπει να έχεις μία μέθοδο που να κάνει την εξής δουλειά.

Όταν "κλικάρεις" ένα αντικείμενο , με κάποιον μαγικό τρόπο η μέθοδος σου θα σου επιστρέφει
το αντικείμενο sprite που "κλίκαρες" και στην συνέχεια με ένα άλλο click (πχ δεξί κλικ) θα
μπορείς να μετακινείς μόνο το επιλεγμένο.
Τελευταία διόρθωση: 7 Χρόνια 9 Μήνες πριν από babaliaris1.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Επιλογή αντικειμένου και ομαλή κίνηση pygame 7 Χρόνια 9 Μήνες πριν #3774

  • cps
  • Το Άβαταρ του/της cps
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 56
Η συνάρτηση εξόδου, δεν ξέρω αν είναι λάθος, αλλά όταν πατώ esc το παιχνίδι κλείνει κανονικά και μάλιστα στο τερματικό δε μου βγάζει κανένα λάθος. Και γι αυτό νόμιζα ότι ήταν σωστή.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Επιλογή αντικειμένου και ομαλή κίνηση pygame 7 Χρόνια 9 Μήνες πριν #3775

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
cps έγραψε:
Η συνάρτηση εξόδου, δεν ξέρω αν είναι λάθος, αλλά όταν πατώ esc το παιχνίδι κλείνει κανονικά και μάλιστα στο τερματικό δε μου βγάζει κανένα λάθος. Και γι αυτό νόμιζα ότι ήταν σωστή.

Ναι δεν πετούσε σφάλμα αλλά είναι λάθος.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Επιλογή αντικειμένου και ομαλή κίνηση pygame 7 Χρόνια 9 Μήνες πριν #3776

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
Κατέβασε να μελετήσεις αυτό το παράδειγμα
που έκανα.

Δες τον κώδικα μου και προσπάθησε να καταλάβεις τη κάνω. Έχω βάλει πολύ καλά comments
και τον σχεδίασα όσο πιο ιεραρχικά μπορούσα για να είναι κατανοητός.

Πρώτα τρέξε το παιχνίδι κλικάροντας το Select And Move.py αρχείο για να δεις τη κάνει.

Με το αριστερό κλικ επιλέγεις μία από τις 3 μπάλες και μετά κρατώντας το δεξί κλικ η μπάλα πηγαίνει προς το ποντίκι.

Θα πρέπει να βλέπεις κάτι τέτοιο:

Τελευταία διόρθωση: 7 Χρόνια 9 Μήνες πριν από babaliaris1.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Επιλογή αντικειμένου και ομαλή κίνηση pygame 7 Χρόνια 9 Μήνες πριν #3777

  • cps
  • Το Άβαταρ του/της cps
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 56
Εκτός από το pygame και την python2 πρέπει να εγκαταστήσω και κάτι άλλο. Το παιχνίδι ανοίγει κανονικά, αλλά δεν τρέχει. (Εμφανίζεται η οθόνη μαύρη και πάνω τρεις μπάλες, αλλά το ποντίκι δεν αποκρίνεται) Στο τερματικό δε μου βγάζει κανένα λάθος.
Το δοκίμασα σε Linux mint σε ubuntu και σε windows 7 σε ένα laptop και σε έναν επιτραπέζιο υπολογιστή. Το αποτέλεσμα όμως ήταν το ίδιο
Τελευταία διόρθωση: 7 Χρόνια 9 Μήνες πριν από cps.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Επιλογή αντικειμένου και ομαλή κίνηση pygame 7 Χρόνια 9 Μήνες πριν #3778

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
cps έγραψε:
Εκτός από το pygame και την python2 πρέπει να εγκαταστήσω και κάτι άλλο. Το παιχνίδι ανοίγει κανονικά, αλλά δεν τρέχει. (Εμφανίζεται η οθόνη μαύρη και πάνω τρεις μπάλες, αλλά το ποντίκι δεν αποκρίνεται) Στο τερματικό δε μου βγάζει κανένα λάθος.
Το δοκίμασα σε Linux mint σε ubuntu και σε windows 7 σε ένα laptop και σε έναν επιτραπέζιο υπολογιστή. Το αποτέλεσμα όμως ήταν το ίδιο

Α έχεις python 2; Εγώ το τρέχω σε python3.4 άρα για αυτό δεν δουλεύει.
Απ'ότι γνωρίζω οι κλάσεις άλλαξαν πολύ στην python 3 από python 2 γιατί
αν δεν κάνω λάθος κάποτε που πήγα να προγραμματίσω κλάσεις σε python 2
είχα προβλήματα.

Πάντος σε ενθαρρύνω να χρησιμοποιείς python 3. Όντως η 2.7 είναι stable version
αλλά απ'ότι λέει και ο developer της python να μην διστάζουμε να την χρησιμοποιούμε
γιατί είναι ποιο απλή και λειτουργεί μια χαρά.

Επίσης να ξέρεις ότι υπάρχει pygame version για python μέχρι και 3.4 άρα δεν υπάρχει
πρόβλημα.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Επιλογή αντικειμένου και ομαλή κίνηση pygame 7 Χρόνια 9 Μήνες πριν #3779

  • cps
  • Το Άβαταρ του/της cps
  • Αποσυνδεμένος
  • pyt___
  • Δημοσιεύσεις: 56
Στον υπολογιστή μου υπάρχουν και οι δύο εκδόσεις και η python2 και η Python3. την python2 δεν τη χρησιμοποιώ προτιμώ την python3, αλλά στο linux εγκαθιστά την pygame η οποία λειτουργεί μόνο με Python2, έψαξα να τη βρω για Python3, αλλά δεν ξέρω ποια έκδοση pygame αντιστοιχεί στην Python2. Μπορείς να μου στείλεις ένα Link.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Επιλογή αντικειμένου και ομαλή κίνηση pygame 7 Χρόνια 9 Μήνες πριν #3780

  • babaliaris1
  • Το Άβαταρ του/της babaliaris1
  • Αποσυνδεμένος
  • python
  • Δημοσιεύσεις: 445
  • Ληφθείσες Ευχαριστίες 75
cps έγραψε:
Μπορείς να μου στείλεις ένα Link.

Εδώ λέει πως να κάνεις εγκατάσταση pygame 2 ή pygame 3 σε κάθε διαθέσιμο λειτουργικό (Εκεί που λέει Compilation διαλέγεις ποιο λειτουργό θέλεις). Πρέπει να έχεις βασικές γνώσεις linux και terminal.


Για ubuntu:
#install dependencies
sudo apt-get install mercurial python3-dev python3-numpy python3-opengl \
    libav-tools libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsmpeg-dev \
    libsdl1.2-dev libportmidi-dev libswscale-dev libavformat-dev libavcodec-dev \
    libtiff5-dev libx11-6 libx11-dev fluid-soundfont-gm timgm6mb-soundfont \
    xfonts-base xfonts-100dpi xfonts-75dpi xfonts-cyrillic fontconfig fonts-freefont-ttf
 
# Grab source
hg clone https://bitbucket.org/pygame/pygame
 
# Finally build and install
cd pygame
python3 setup.py build
sudo python3 setup.py install
 
# Run some tests
python3 -m pygame.tests
python3 -m pygame.examples/aacircle
python3 -m pygame.examples/aliens
python3 -m pygame.examples/freetype_misc
python3 -m pygame.examples/glcube
python3 -m pygame.examples/sound
python3 -m pygame.examples/stars
Τελευταία διόρθωση: 7 Χρόνια 9 Μήνες πριν από babaliaris1.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": cps
  • Σελίδα:
  • 1
  • 2
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.590 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου