Jump to content

  • Log In with Google      Sign In   
  • Create Account


Strange dotted line following my "player".


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
3 replies to this topic

#1 Crazylegs830   Members   -  Reputation: 226

Like
1Likes
Like

Posted 13 November 2013 - 02:07 PM

Hello there is a strange dotted line following the "player" I made. By player I mean the thing you control. Thanks here is my code:

you="C:\\Users\\user\\Desktop\\Python Programs\\Snake\\textures\\you.bmp"

import pygame, sys, random
from pygame.locals import *

pygame.init()

screen=pygame.display.set_mode((1600,1120),0,32)
mouse_c=pygame.image.load(you).convert_alpha()

#Variables for shapes

BLUE=(0,64,128)
WHITE=(255,255,255)
pos1=(0,0)
pos2=(0,1130)
pos3=(1600,0)
pos4=(1600,1130)
randpos1=random.randint(0, 1120)
randpos2=random.randint(0, 1600)
radius=(5)

#Variables for shapes

x,y=770,560
movex, movey=0,0

#Controls

while True:

for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type==KEYDOWN:
if event.key==K_LEFT:
movex=-4
elif event.key==K_RIGHT:
movex=+4
elif event.key==K_UP:
movey=-4
elif event.key==K_DOWN:
movey=+4
if event.type==KEYUP:
if event.key==K_LEFT:
movex=0
elif event.key==K_RIGHT:
movex=0
elif event.key==K_UP:
movey=0
elif event.key==K_DOWN:
movey=0
#Controls

screen.lock()
pygame.draw.circle(screen, WHITE, (random.randint(0, 1600), random.randint(0, 1600)), radius)
screen.unlock()

x+=movex
y+=movey

#Collision
if y < 0:
y = 0
elif y > 1080:
y = 1080
if x < 0:
x = 0
elif x > 1550:
x = 1550
#Collision
#Dots



screen.blit(mouse_c,(x,y))
pygame.display.update()

Sponsor:

#2 Eck   Members   -  Reputation: 2129

Like
5Likes
Like

Posted 13 November 2013 - 02:19 PM

Does the dotted line look like an outline of your player? If so, it might be that you're just always drawing over the top of your previously rendered frame. I don't see where you're clearing the screen, but I'm also not familiar with pygame so it might not be necessary.

 

As a debug exercise, try changing the texture of you.bmp to a completely full red square. If it acts like a square paint brush in paint, then you'll need to clear the screen.

 

If that's not your problem, can you post a screenshot?

 

- Eck



#3 PragmaOnce   Members   -  Reputation: 722

Like
5Likes
Like

Posted 13 November 2013 - 02:54 PM

Hi there.

 

7d6347288739276.jpg

 

Are you talking about the fact that the player isn't buffered correctly. I used a pink square as my "you sprite". This line you are talking about is probably what Eck has mentioned.

Now I am not familiar with python/pygame (remember I downloaded it last time to help you tongue.png ) but..

 

I'd say you call this after updating display:

pygame.display.flip()

 

Also, put your code in code blocks next time to it's easier for other people to help you. Just click on the < > button that appears in the editor menu and paste your code in there, selecting the generic code option.

 

EDIT: That didn't work, i'll check what other functions are available ^^

Found the problem : You need to fill the screen with a color after you draw to it to "reset" it basically. So right after you do your display.update, add this:

 screen.fill(pygame.Color(0, 0, 0, 255))

This just fills the room with black. 


Edited by PragmaOnce, 13 November 2013 - 03:04 PM.


#4 Crazylegs830   Members   -  Reputation: 226

Like
0Likes
Like

Posted 13 November 2013 - 04:11 PM

Hi there.

 

7d6347288739276.jpg

 

Are you talking about the fact that the player isn't buffered correctly. I used a pink square as my "you sprite". This line you are talking about is probably what Eck has mentioned.

Now I am not familiar with python/pygame (remember I downloaded it last time to help you tongue.png ) but..

 

I'd say you call this after updating display:

pygame.display.flip()

 

Also, put your code in code blocks next time to it's easier for other people to help you. Just click on the < > button that appears in the editor menu and paste your code in there, selecting the generic code option.

 

EDIT: That didn't work, i'll check what other functions are available ^^

Found the problem : You need to fill the screen with a color after you draw to it to "reset" it basically. So right after you do your display.update, add this:

 screen.fill(pygame.Color(0, 0, 0, 255))

This just fills the room with black. 

Thanks you and Eck have been incredibly helpful.






Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS