• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Poruszanie się obiektu pygame

Object Storage Arubacloud
0 głosów
1,497 wizyt
pytanie zadane 2 października 2018 w Python przez niezalogowany
Witam napisałem taki kod

https://wklejaj.pl/HzAd9W1tIwXX

kod składa się z dwóch plików kod główny i player ale wpisałem to w jeden link aby lepiej się czytało ;)

Program ma na celu narysowanie kwadratu oraz poruszanie nim , ale niestety tak się nie dzieje chciałbym aby ktoś powiedział mi gdzie popełniłem błąd

2 odpowiedzi

0 głosów
odpowiedź 2 października 2018 przez profesorek96 Szeryf (91,420 p.)
Nieche być chamis ale zerknij na pierwsze 3 o ile się nie myle filmy z tej seri one rozwiązują twój problem:

https://www.youtube.com/watch?v=tnq0whNwhZE&t=251s
komentarz 3 października 2018 przez niezalogowany
mógłbyś po prostu wyjaśnić jaki błąd popełniłem?
0 głosów
odpowiedź 4 października 2018 przez profesorek96 Szeryf (91,420 p.)

Poprawiłem twój kod. Myślę że twój błąd polegął na założeniu że w pygame jest klasyczny układ karteziański znany z matematyki czyli dokładnie na środku ekranu jest punkt 0,0. NIestety w pygame jak i wielu bibliotekach graficznych punkt 0,0 jest to lewy górny róg ekranu. Takie założenie niweluje ujemne wartości.

# kod glowny
# kod glowny
# kod glowny

import pygame, sys
from pygame.locals import *
#from Player import Sprite
from pygame.math import Vector2

class Sprite(object):

    def __init__(self):
        self.pos = Vector2(0,0)
        self.vel = Vector2(0,0)
        self.acc = Vector2(0,0)

    def force(self, force):
        self.acc += force

    def move(self):
        # inputs
        pressed = pygame.key.get_pressed()
        if pressed[pygame.K_w]:
            self.force(Vector2(0,1))
            self.pos += Vector2(0,-1)

        if pressed[pygame.K_s]:
            self.force(Vector2(0,-1))
            self.pos += Vector2(0,1)
        if pressed[pygame.K_a]:
            self.force(Vector2(1,0))
            self.pos += Vector2(-1,0)
        if pressed[pygame.K_d]:
            self.force(Vector2(-1,0))
            self.pos += Vector2(1,0)
        # physics
        self.vel = self.acc
        #self.pos += self.vel
        self.acc *= 0

    def draw(self,screen):
        rect = pygame.Rect((self.pos.x,self.pos.y,10,10))
        pygame.draw.rect(screen, (100,50,10), rect)



class Main(object):

    def __init__(self):
        # initialization
        pygame.init()
        self.screen = pygame.display.set_mode((1000, 700))
        self.time = pygame.time.Clock()
        self.delta = 0.0
        self.player = Sprite()

        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    sys.exit(0)

            self.delta += self.time.tick() / 1000
            while self.delta > 1 / 2.0:
                self.sprite_move()
                self.delta -= 1 / 2.0

            self.screen.fill((0, 0, 0))
            self.sprite_move()
            self.sprite_draw()
            pygame.display.flip()

    def sprite_move(self):
        self.player.move()

    def sprite_draw(self):
        self.player.draw(self.screen)


if __name__ == "__main__":
    Main()

 

komentarz 4 października 2018 przez niezalogowany

Dziękuje bardzo smiley właśnie o to mi chodziło abyś podał poprawny kod i abym zobaczył jak to się robi poprawnie  wink  

komentarz 4 października 2018 przez profesorek96 Szeryf (91,420 p.)
Proszę bardzo :) Tak notabene z czego się uczysz pygame ?
komentarz 4 października 2018 przez niezalogowany
Tak szczerze mówiąc nie mam pomysłu skąd się uczyć jest bardzo mało książek o samym pygame na razie znalazłem tylko jedną (Making games with pygame&python) oraz słyszałem o tym kolesiu Gynvael Coldwind
komentarz 4 października 2018 przez profesorek96 Szeryf (91,420 p.)
Ja się uczyłem z tego poradnika co ci wysłałem. Analizuj sobie ten kod:

https://python101.readthedocs.io/pl/py3/_downloads/pong_str.pdf

https://github.com/koduj-z-klasa/python101-py2/blob/master/games/pong.py

Polecam również samą dokumentacje pygame:

https://www.pygame.org/docs/

Co do wymienionej przez ciebie książki to wydaje mi się że jest dość słaba. Co do Gynvael Coldwind  jeśli możesz podeślij film w którym robił coś w pygame.
komentarz 4 października 2018 przez niezalogowany
o Gynvael Coldwind tylko słyszałem że robi jakieś konkursy z pythona i później analizuje kod i mówi co mogło by być lepiej napisane. Co do dokumentacji to same przeczytanie dokumentacji mi nic nie da wole czytać książki i robić małe projekty .

Znalazłem jeszcze jedną książkę która wydaje mi się lepsza ;)

http://index-of.es/Python/Beginning.Game.Development.with.Python.and.Pygame.From.Novice.to.Professional.Will.McGugan.2007.pdf
komentarz 4 października 2018 przez profesorek96 Szeryf (91,420 p.)
Dzięki za infor. O tej ksiażce słyszzałem jednak nie zaglądłem do środka.

Podobne pytania

0 głosów
0 odpowiedzi 57 wizyt
pytanie zadane 4 sierpnia 2023 w Python przez Kubas23 Użytkownik (630 p.)
+1 głos
1 odpowiedź 272 wizyt
pytanie zadane 20 czerwca 2023 w Python przez Bondrusiek Maniak (61,370 p.)
0 głosów
0 odpowiedzi 280 wizyt
pytanie zadane 29 stycznia 2023 w Python przez Kubas23 Użytkownik (630 p.)

92,550 zapytań

141,392 odpowiedzi

319,520 komentarzy

61,935 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...