영상 보면서 옆에다 똑같이 타이핑은 해봤는데. 보면서 드는 생각이 원리를 모르고 베껴 쳤다간 백날쳐도 이해 못하겠네. 역시 프로그래머들은 다른 세상 사람들이군. 이라는 거에요. 좋은 강의 감사해요. 하지만 여기 댓글들 보니 대부분 원리 이해 없이 타이핑해서 오타 가지고 헤매고 있는거 같고. 저도 그래요. 뭘 먼저 하고 이걸 다시 보는게 좋을까요?. 하.. 이걸 진짜 외워서 하다니. 님은 정말 천재같은 사람이군요
아래의 코드를 그대로 짰는데 expected an indedted block 오류가 뜹니다..ㅠㅠ class Feed (object): 이후에 뒤에 빨간 박스 오류뜨네요..ㅠㅠ class Feed(object): def __init__(self): self.position = (0,0) self.color = black self.create() def create(self): self.position = (random.randint(0, grid_width-1) * grid_size, random.randint(0,grid_height-1)*grid_size) def draw(self, surface): draw_object(surface, self.color, self.position)
혼자 실용적인 프로그램을 만들려면 어떤 방법으로 공부해야 할까요?? 이런 프로그램을 만들려면 뱀도 구현해야 하고 먹이를 먹으면 길이가 길어지는 것도 구현해야 하는데, 이런 기능이 필요할 것이다 라는걸 초보자 입장에서 떠올리가 쉽지가 않아서요.. Leetcode같은데서 혼자 알고리즘 문제 풀어보기는 하는데, 거기서 이런걸 배울 수 는 없는거 같고, 파이썬 모듈도 워낙 다양해서 이런 기능을 구현하기 위해 모듈의 어떤 기능을 써야겠다라고 떠올리는것도 어려운것 같아서 쉽지가 않네요..^^;; 좋은 동영상 감사드립니다!!
check_eat(python, feed) NameError: name 'check_eat' is not defined 라고떠요 def check_eat(python, feed): if python.poitions[0] == feed.position: python.eat() feed.create() 라고쳤는대..
for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() 이걸로 창닫기 하려고하는데 X를 누르면 응답없음으로 뜨고 한번에 닫히지않아요,,,ㅜㅜㅜ 닫히지도 않고 다시 run해보려고해도 콘솔탭을 다시 시작하지않으면 창이 뜨지도 않습니다.... 다른 파일들은 정상적으로 실행이 됩니다.. for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.exit() sys.exit() 이렇게 하면 AttributeError: module 'pygame' has no attribute 'exit' 이런 오류가 뜹니다.. '나의 첫 파이썬' 책에서 우주선게임을 따라한건데 저런 오류가 생겨요 책에서 제공하는 홈페이지에서 아예 완성된 파일을 받았는데도 같이 오류가생깁니다 아나콘다3 spyder 사용중인데 무슨 오류인지 도통 알수가없어요ㅜㅜ pygame은 잘 설치되어있어요 제발 도와주세요,,,,, 대학생을 구해주세요,,,
class Fead(object): def __init__(self): self.position = (0, 0) self_color = ORANGE self.create() def create(self): self.positions = (random.randint(0, GRID_WIDTH - 1) * GRID_SIZE, random.randint(0, GRID_HEIGHT - 1) def draw(self, surface): draw_object(surface, self.color, self.position) 이랬는데 샐행이 안되면서 3번째 def에서 오류나요ㅠㅠ 어떻게 해야 할까요?def만 표시되어 있어서 def를 복붙,다시쓰기 몇 번이나 했는데 그래도 오류가 떠요ㅠㅠ
완성했어요! 그런데 코드들 중에 이해를 못 한 게 많아서 그냥 배껴 쓴 것도 많은데 이렇게 코딩을 해도 실력이 늘까요? 그리고 9:15 여기서 UP = (0, -1) 이면 y 축 좌표가 감소해서 아래로 가고, DOWN = (0, 1) 이면 y 축 좌표가 증가해서 위로 가지 않나요?
Traceback (most recent call last): File "C:\Users\Mssren\AppData\Local\Programs\Python\Python37\지렁이 게임.py", line 25, in class Python(object): File "C:\Users\Mssren\AppData\Local\Programs\Python\Python37\지렁이 게임.py", line 59, in Python class Feed(object): File "C:\Users\Mssren\AppData\Local\Programs\Python\Python37\지렁이 게임.py", line 89, in Feed python = Python() NameError: name 'Python' is not defined 이렇게 뜨는데 어떻게 하죠??
Traceback (most recent call last): File "C:\Users\김범준\Documents\파이썬으로 공부한 것들\pygame.py", line 1, in import pygame File "C:\Users\김범준\Documents\파이썬으로 공부한 것들\pygame.py", line 6, in from pygame.locals import * ModuleNotFoundError: No module named 'pygame.locals'; 'pygame' is not a package 실행할려고하니 이렇게 나오는데 여기서 부터 어떻게 하죠?
jupyter를 평소에 이용해서 jupyter에다가 해보았는데 pygame이 응답없음이 계속 뜨는데 왜 이러는지 알 수 있을까요..? 그리고 27분 대까지 입력하고 실행을 해보니 'Python' object has no attribute 'position' 이런 문구가 뜨는데 이유가 뭔지 모르겠습니다.. 여전히 pygame은 실행이 안되고...
Traceback (most recent call last): File "C:\2020\1_leesooan\드디어 파이게임 설치됨!!.py", line 13, in window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGTH), 0, 32) NameError: name 'WINDOW_WIDTH' is not defined
아래와 같이 feed쪽에 오류 나는데 무슨 의미인가요? PS C:\HelloCoding> python Python_Game.py pygame 1.9.6 Hello from the pygame community. www.pygame.org/contribute.html Traceback (most recent call last): File "Python_Game.py", line 91, in feed = Feed() File "Python_Game.py", line 64, in __init__ self.create() AttributeError: 'Feed' object has no attribute 'create'
저 디코봇을 만드려다 ModuleNotFoundError: No module named 'discord'떠서 2일동안 해보다가 게임을 만들자 해서 pip install pygame을 쳐도 왜 ModuleNotFoundError: No module named 'discord'라고 뜨는데 왜그럴까요 별짓을 다해보고 카톡채팅방,디코서버,구글링,지식인 등 다해봐도 해결이 안되서 너무 답답합니다 코딩을 해보니 흥미가 느껴져 열심히 해보려 했는데 여기서 막히니 답답하고 코딩을 포기하고 싶지않은데 포기하려니 너무 아깝습니다 혹시 방법이 있을까요?
pygame 1.9.6 Hello from the pygame community. www.pygame.org/contribute.html Traceback (most recent call last): File "C:/Users/hi/Desktop/Pygame.py", line 85, in python = Python() File "C:/Users/hi/Desktop/Pygame.py", line 27, in __init__ self.create() AttributeError: 'Python' object has no attribute 'create' 이거 무슨 오류인가요
벽에 닿으면 죽게 하는 것은 이 코드 사용하면 됩니다 if int(cur[0] + (x * GRID_SIZE)) >= WINDOW_WIDTH or int(cur[0] + (x * GRID_SIZE)) = WINDOW_HEIGHT or int(cur[1] + (y * GRID_SIZE))
안녕하세요.. 거의 처음부분인 6:50 까지 따라서 하다가 오류가 발생하여 문의 드립니다. 코드는 아래까지 작성하였고 툴은 VS code를 사용 중입니다. (PyCharm과 기본 Python 3.8도 설치되어 있습니다.) 오류 메세지는 다음과 같습니다. Module 'pygame' has no 'init' member pylint(no-member) pygame은 vs code의 terminal에서 pip install pygame 으로 인스톨 하였고 아래의 경로에 해당폴더들(pygame, pygame-2.0.0.dist-info)이 있습니다. C:\Users\yespl\AppData\Local\Programs\Python\Python38\Lib\site-packages VS code에서 pygame을 불러올때 별도로 환경설정을 해 주어야 하는 부분이 있는지요? 참고로 Python 3.8에서 실행해보면 정상적으로 잘 되며, VS code에서 실행시 위의 오류와 함께 검은 창이 잠시 떴다가 사라집니다. import pygame import sys import time import random from pygame.locals import * WINDOW_WIDTH = 800 WINDOW_HEIGHT = 600 WHITE = (255, 255, 255) if __name__ == '__main__': pygame.init() window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT), 0, 32) pygame.display.set_caption('Python Game') surface = pygame.Surface(window.get_size()) surface = surface.convert() surface.fill(WHITE) clock = pygame.time.Clock() pygame.key.set_repeat(1, 40) window.blit(surface, (0, 0)) VS code에서 자동오류 탐지는 6번째 줄의 "from" 과 14번째 줄의 "pygame"에 오류가 있다고 밑줄이 그어져 있습니다. VS code에서 별도의 환경설정을 해 주어야 하는것인지,,, 설치된 pygame 폴더들 (pygame, pygame-2.0.0.dist-info)을 VS code 쪽으로 옮겨야 하는 것인지... 어떤 부분이 문제인지 확인 부탁 드려도 될까요? 감사합니다.
Traceback (most recent call last): File "C:/Users/black/OneDrive/바탕 화면/python.py", line 15, in window = pygame.display.set.mode((WINDOW_WIDTH,WINDOW_HEIGHT), 0,32) AttributeError: module 'pygame.display' has no attribute 'set' 이렇게 발생하고 실행화면이 발생되지 않는데 이유가 무엇인지 궁금합니다..
@@suanlab 일단 어째 저째 해서 작성을 했는데요.. C:/Users/black/PycharmProjects/pygame1.py:74: DeprecationWarning: an integer is required (got type float). Implicit conversion to integers using __int__ is deprecated, and may be removed in a future version of Python. r = pygame.Rect((pos[0], pos[1]), (GRID_SIZE, GRID_SIZE)) Traceback (most recent call last): File "C:/Users/black/PycharmProjects/pygame1.py", line 127, in feed.draw(surface) File "C:/Users/black/PycharmProjects/pygame1.py", line 71, in draw draw_object(surface, self.color, self.position) File "C:/Users/black/PycharmProjects/pygame1.py", line 74, in draw_object r = pygame.Rect((pos[0], pos[1]), (GRID_SIZE, GRID_SIZE)) TypeError: 'int' object is not subscriptable 이렇게 에러가 발생하는데요.. 뭐가 문제가 되는걸까요.
완성했어요. 오류 없이 잘 작동돼요. 그런데 오타 친 부분도 없는데 Warning (from warnings module): File "C:\Users\bitna\OneDrive\바탕 화면\유령의 집\Python Game.py", line 76 r = pygame.Rect((pos[0], pos[1]), (GRIDSIZE, GRIDSIZE)) DeprecationWarning: an integer is required (got type float). Implicit conversion to integers using __int__ is deprecated, and may be removed in a future version of Python. 이렇게 오류가 뜨네요. 왜 그런 걸까요?
Traceback (most recent call last): File "C:/전산언어학습/PBL 프로젝트/Ex01.py", line 100, in pygame.key_set_repeat(1,40) AttributeError: module 'pygame' has no attribute 'key_set_repeat'이렇게 뜨는데 뭐가 잘못된 걸까요? ㅜㅠ
저도 아랫분이랑 같은 오류가 나는데요 ㅠㅠ 뭐가 문제인지 모르겠네요... Traceback (most recent call last): File "C:\Users\Z54M\Desktop\파이썬 연습\pygame-1.py", line 120, in python.move() File "C:\Users\Z54M\Desktop\파이썬 연습\pygame-1.py", line 43, in move cur = self.positions[0] AttributeError: 'Python' object has no attribute 'positions' ... def move(self): cur = self.positions[0] x, y = self.direction new = (((cur[0] + (x * GRID_SIZE)) % WINDOW_WIDTH), (cur[1] + (y * GRID_SIZE)) % WINDOW_HEIGHT) if new in self.positions[2:]: self.create() else: self.positions.insert(0, new) if len(self.positions) > self.length: self.positions.pop() 꼭 좀 알려주시면 감사하겠습니다 ㅠ
import pygame import sys import time import random from pygame.locals import * WINDOW_WIDTH = 800 WINDOW_HEIGTH = 600 WHITE = (255, 255, 255) if __name__ == '__main__': pygame.init() window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGTH),0, 32) pygame.display.set_caption('Python Game') surface = pygame.Surface(window.get_size()) surface = surface.convert() surface.fill(WHITE) clock = pygame.time.Clock() pygame.key.set_repeat(1,40) window.blit(surface, (0, 0)) 이렇게 똑같이 따라했는데 밑에 글씨처럼나와요 Traceback (most recent call last): File "C:/Python38/pygame.py", line 1, in import pygame File "C:/Python38\pygame.py", line 6, in from pygame.locals import * ModuleNotFoundError: No module named 'pygame.locals'; 'pygame' is not a package >>>
Traceback (most recent call last): File "D:\민주호\지렁이키우기.py", line 88, in feed = Feed() File "D:\민주호\지렁이키우기.py", line 61, in __init__ self.color = ORANGE NameError: name 'ORANGE' is not defined >>> 왜 이게 뜰까요?
Warning (from warnings module): File "D:\코딩\파이썬게임1.py", line 71 r = pygame.Rect((pos[0], pos[1]), (GRID_SIZE, GRID_SIZE)) DeprecationWarning: an integer is required (got type float). Implicit conversion to integers using __int__ is deprecated, and may be removed in a future version of Python. 똑같이 했는데도 이런오류가 나요. 또 뱀이 화면 오른쪽 끝까지 안가요 ㅠㅠ
해당 warning은 GRID_SIZE가 실수형이라서 나는겁니다. 계산 부분에서 int()함수로 감싸주셔서 형변환을 해보세요. 그리고 뱀이 오른쪽 끝까지 안가는건, WINDOW 크기에 따라 이동을 제한했는데, 그걸 잘못하신거 같아요. 예를 들어 move 쪽 함수에서 WINDOW_HEIGHT와 WINDOW_WIDTH를 바꿔쓰시거나 한것 아닐까요?
실행은 잘 되는데 이러고 자꾸 뭐가 떠요.. File "C:\Users\user\Desktop\python.py", line 74 r = pygame.Rect((pos[0], pos[1]), (GRID_SIZE, GRID_SIZE)) DeprecationWarning: an integer is required (got type float). Implicit conversion to integers using __int__ is deprecated, and may be removed in a future version of Python.
File "D:\pythongame.py", line 111, in python.control(UP) File "D:\pythongame.py", line 37, in control if (xy[0] * -1, xy[1] * -1) == self.direction: TypeError: 'float' object is not subscriptable 위방향키를 누르면 이렇게되요,.,
File "C:\Users\Administrator\Desktop\파이썬게임.py", line 124, in show_info(python.length, speed, surface) File "C:\Users\Administrator\Desktop\파이썬게임.py", line 83, in show_info font = pygame.font.font(None, 34) AttributeError: module 'pygame.font' has no attribute 'font' 또 뭐가 잘못된 걸까요?
처음 기본 설정까지만 했는데 File "C:/Users/Luke Kim/Desktop/python/game.py", line 1, in import pygame ModuleNotFoundError: No module named 'pygame' 이렇게 뜨는군요.... 어떻게 된걸까요?
댓글에 있을까 하여 찾다가 못 찾아서 여쭤 볼게 있습니다 ㅠㅠ 게임 구동 잘 되고 재밌게 잘 배웠습니다 좋은 코드 감사합니다 그런데 x y 좌표 보던 중에 궁금증이 생겨서 문의 드립니다 . x y 좌표로 UP 이면 (0, 1)로 알고 있었는데 구현 코드 보니 (0, -1)이라 궁금증이 생겨서.. 어떤 원리 인지 궁금합니다.. 물론 구동은 제대로 되어 더 궁금증이 생깁니다.. 제가 이거 짜고나서 아 반대로 움직이는 건가 했는데 제대로 움직여서 ... 구글링 실력이 미흡해서 한 시간 찾다가 포기 했습니다.. 답변 기다리겠습니다!!
안녕하세요 차근차근 따라하려고 하는데 시작부터 막히네요 python 설치 후 CMD에서 "pip install pygame"치니까 Exception: Traceback (most recent call last): File "c:\program files (x86)\python36-32\lib\site-packages\pip\basecommand.py", line 215, in main status = self.run(options, args) File "c:\program files (x86)\python36-32\lib\site-packages\pip\commands\install.py", line 342, in run prefix=options.prefix_path, File "c:\program files (x86)\python36-32\lib\site-packages\pip eq eq_set.py", line 784, in install **kwargs File "c:\program files (x86)\python36-32\lib\site-packages\pip eq eq_install.py", line 851, in install self.move_wheel_files(self.source_dir, root=root, prefix=prefix) File "c:\program files (x86)\python36-32\lib\site-packages\pip eq eq_install.py", line 1064, in move_wheel_files isolated=self.isolated, File "c:\program files (x86)\python36-32\lib\site-packages\pip\wheel.py", line 345, in move_wheel_files clobber(source, lib_dir, True) File "c:\program files (x86)\python36-32\lib\site-packages\pip\wheel.py", line 316, in clobber ensure_dir(destdir) File "c:\program files (x86)\python36-32\lib\site-packages\pip\utils\__init__.py", line 83, in ensure_dir os.makedirs(path) File "c:\program files (x86)\python36-32\lib\os.py", line 220, in makedirs mkdir(name, mode) PermissionError: [WinError 5] 액세스가 거부되었습니다: 'c:\\program files (x86)\\python36-32\\Lib\\site-packages\\pygame' You are using pip version 9.0.3, however version 20.0.2 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' command. 이라는 메세지가 뜹니다. 동영상처럼 설치되었다는 메세지가 뜨질 않네요 내용이 길면 메일로 알려주시셔도 감사하겠습니다. jjaeho99@gmail.com
Traceback (most recent call last): File "C:/Users/neo62/Desktop/파이썬게임.py", line 122, in check_eat(python, feed) NameError: name 'check_eat' is not defined 이 오류가 계속 뜹니다. class feed(): 에서 잘 정의해놨는데 왜 이런 오류가 뜰까요? 혹시 파이썬3.8.2라서 그럴까요?
한글 자막이 추가되었습니다. 자막과 함께 편하게 보실 수 있습니다. ^^
감사합니다.
넵 감사합니다 ^^
def control(self, xy):
if (xy[0] * -1, xy[1] == self.direction:
빨간줄 부분에 괄호가 닫히지 않았네요.
@@suanlab import pygame
import sys
import time
import random
from pygame.locals import *
WINDOW_WIDTH = 800
WINDOW_HEIGHT = 600
GRIDSIZE = 20
GRID_WIDTH = WINDOW_WIDTH / GRIDSIZE
GRID_HEIGHT = WINDOW_HEIGHT / GRIDSIZE
WHITE = (255, 255, 255)
GREEN = (0, 50, 0)
ORANGE = (250, 150, 0)
GRAY = (100, 100, 100)
UP = (0, -1)
DOWN = (0, 1)
LEFT = (-1, 0)
RIGHT = (1, 0)
FPS = 10
class Python(object):
def __init__(self):
self.create()
self.color = GREEN
def create(self):
self.length = 2
self.positions = [((WINDOW_WIDTH / 2), (WINDOW_HEIGHT / 2))]
self.direction = random.choice([UP, DOWN, LEFT, RIGHT])
def control(self, xy):
if (xy[0] * -1, xy[1] * -1) == self.direction:
return
else:
self.direction = xy
def move(self):
cur = self.positions[0]
x, y = self.direction
new = ((cur[0] + (x * GRIDSIZE)) % WINDOW_WIDTH), (cur[1] + (y * GRIDSIZE) % WINDOW_HEIGHT)
if new in self.positions[2:]:
self.create()
else:
self.positions.insert(0, new)
if len(self.positions) > self.length:
self.positions.pop()
def eat(self):
self.lenght += 1
def draw(self, surface):
for p in self.positions:
draw_object(surface, self.color, p)
class Feed(object):
def __init__(self):
self.positions = (0,0)
self.color = ORANGE
self.create()
def create(self):
self.position = (random.randint(0, GRID_WIDTH - 1) * GRIDSIZE, random.randint(0, GRID_HEIGHT -1) * GRIDSIZE)
def draw(self, surface):
draw_object(surface, self.color, self.position)
def draw_object(surface, color, pos):
r = pygame.Rect((pos[0], pos[1]), (GRIDSIZE, GRIDSIZE))
pygame.draw.rect(surface, color, r)
def check_eat(python, feed):
if python.positions[0] == feed.position:
python.eat()
feed.create()
def show_info(length, speed, surface):
font = pygame.font.Font(None, 34)
text = font.render("Length: "+" Speed:" + str(round(speed, 2)), 1, GRAY)
pos = text.get_rect()
pos.centerx = 150
surface.blit(text, pos)
if __name__ == '__main__':
python = Python()
feed = Feed()
pygame.init()
window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT), 0, 32)
pygame.display.set_caption('snake_game')
surface = pygame.Surface(window.get_size())
surface = surface.convert()
surface.fill(WHITE)
clock = pygame.time.Clock()
pygame.key.set_repeat(1, 40)
window.blit(surface, (0, 0))
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
elif event.type == KEYDOWN:
if event.key == K_UP:
python.control(UP)
elif event.key == K_DOWN:
python.control(DOWN)
elif event.key == K_LEFT:
python.control(LEFT)
elif event.key == K_RIGHT:
python.control(RIGHT)
surface.fill(WHITE)
python.move()
speed = FPS + (python.length)/2
show_info(python.length, speed, surface)
python.draw(surface)
feed.draw(surface)
window.blit(surface, (0, 0))
pygame.display.flip()
pygame.display.update()
clock.tick(speed)
이거 실행하면 검은 창만떠요
영상 보면서 옆에다 똑같이 타이핑은 해봤는데. 보면서 드는 생각이 원리를 모르고 베껴 쳤다간 백날쳐도 이해 못하겠네. 역시 프로그래머들은 다른 세상 사람들이군. 이라는 거에요. 좋은 강의 감사해요. 하지만 여기 댓글들 보니 대부분 원리 이해 없이 타이핑해서 오타 가지고 헤매고 있는거 같고. 저도 그래요. 뭘 먼저 하고 이걸 다시 보는게 좋을까요?. 하.. 이걸 진짜 외워서 하다니. 님은 정말 천재같은 사람이군요
그래서 쉽게 이해할 수 있도록 책을 쓰고 있습니다. ^^
에러는 안나타는데 화면이 검은색으로 아무것도 안보여요
아무래도 코드 상에서 게임 화면을 표시하는 부분 자체가 제대로 안된것 같아요.
12:51
import pygame
import sys
import time
import random
from pygame.locals import *
WINDOW_WIDTH = 800
WINDOW_HEIGTH = 600
GRID_SIZE = 20
GRID_WIDTH = WIDOW_WIDTH / GRID_SIZE
GRID_HEIGHT = WINDOW_HEIGTH / GRID_SIZE
WHITE = (255, 255, 255)
GREEN = (0, 50, 0)
UP = (0, -1)
DOWN = (0, 1)
LEFT = (-1, 0)
RIGHT = (1, 0)
class python(object):
def __init__(self):
self.create()
self.color = GREEN
def create(self):
self.length = 2
self.positions = [((WINDOW_WIDTH / 2), (WINDOW_HEIGHT / 2))]
self.direction = random.choice([UP, DOWN, LEFT, RIGHT])
def control(self, xy):
if (xy[0] * -1,) == selfdirection:
return
else:
self.direction = xy
def move(self):
cur = self.postions[0]
x, y = self.direction
new = ((cur[0] + (X *
if __name__ == '__main__':
pygame.init()
window = pygame.display.set_mode(WINDOW_WIDTH, WINDPW_HEIGTH), 0, 32)
pygame.display.set_caption('Python Game')
surface + pygame.surface(window.get_size())
surface = surface.convert()
surface.fill(WHITE)
clock = pygame.time.Clock()
pygame.key_set_repeat(1, 40)
window.blit(surface, (0, 0))import pygame
import sys
import time
import random
from pygame.locals import *
WINDOW_WIDTH = 800
WINDOW_HEIGTH = 600
GRID_SIZE = 20
GRID_WIDTH = WIDOW_WIDTH / GRID_SIZE
GRID_HEIGHT = WINDOW_HEIGTH / GRID_SIZE
WHITE = (255, 255, 255)
GREEN = (0, 50, 0)
UP = (0, -1)
DOWN = (0, 1)
LEFT = (-1, 0)
RIGHT = (1, 0)
class python(object):
def __init__(self):
self.create()
self.color = GREEN
def create(self):
self.length = 2
self.positions = [((WINDOW_WIDTH / 2), (WINDOW_HEIGHT / 2))]
self.direction = random.choice([UP, DOWN, LEFT, RIGHT])
def control(self, xy):
if (xy[0] * -1,) == selfdirection:
return
else:
self.direction = xy
def move(self):
cur = self.postions[0]
x, y = self.direction
new = ((cur[0] + (X *
if __name__ == '__main__':
pygame.init()
window = pygame.display.set_mode(WINDOW_WIDTH, WINDPW_HEIGTH), 0, 32)
pygame.display.set_caption('Python Game')
surface + pygame.surface(window.get_size())
surface = surface.convert()
surface.fill(WHITE)
clock = pygame.time.Clock()
pygame.key_set_repeat(1, 40)
window.blit(surface, (0, 0))
new = ((cur[0] + (X *
class Feed(object):
def __init__(self):
self.position = (0, 0)
self.color = ORANGE
self.create()
여기서 class Feed(object):뒤에 자꾸 오타가 났다고 되네요
오류메세지는expected an indented block 입니다.
이건 들여쓰기 간격이 안맞아서 나는 오류입니다.
Tab이나 space로 들여쓰기 간격을 동일하게 맞춰주세요. ^^
감사합니다
되게 빨리 답해주시네요^^
if __name__ == '__main__' : #메인 코드
pygame.init()
key_set_repeat(1, 40)이 아니라 key.set_repeat(1, 40) 입니다.
No module named pygame 이렇게 뜨는데 어떡하죠
pip install pygame 하셨나요?
작동은 되는데 지렁이가 안움직입니다. 도와주세요
지렁이가 안움직이다니 move() 메서드 한번 보시겠어요?
@@suanlab def move(self):
cur = self.positions[0]
x, y = self.direction
new = (((cur[0] + (x * GRID_SIZE)) % WINDOW_WIDTH), (cur[1] + (y * GRID_SIZE)) % WINDOW_HEIGHT)
if new in self.positions[2:]:
self.create()
else:
self.positions.insert(0, new)
if len(self.positions) > self.length:
self.positions.pop()
이거 말하시는 건가요? class Python(object): 밑에 있는겁니다
if new in self.positions[2:]: 이 부분에서 계속 invalid syntax가 뜨네요 ㅜㅜ positions도 class 안에 정의했어요
positions가 어떻게 정의되어 있나요?
AttributeError: 'Python' object has no attribute 'drection'
어떻게 해야하나요
direction 입니다.
TypeError: 'module' object is not callable 이라 뜨는데 어떻게 해야해요?ㅠㅠ
module을 호출하시면 안됩니다.
module 'pygame' has no attribute 'dispaly 이거 왜그런지 아시나요?
dispaly가 아니라 display 입니다.
@@suanlab 감사합니다
ModuleNotFoundError: No module named 'pygame
이라고 자꾸 첫줄부터 import pygame이 자꾸 막혀요
key up과 key down을 눌렀는데도 지렁이가 위 아래로 안가고 멈춰요 어떻게 고쳐야될까요
KEY_UP과 KEY_DOWN 부분 코드 좀 보여주실래요?
@@suanlab elif event.type == KEYDOWN:
if event.key == K_UP:
python.control(UP)
elif event.key == K_DOWN:
python.control(DOWN)
@@suanlab 제대로 작성한것 같은데 안되네요..
@@코드봇 음... 일단 4칸 띄어쓰기가 안돼있네요. 4칸 띄어쓰기을 제대로 했는데도 그런다면 아마 이 코드와 관련된 다른 코드가 잘못된 것 같아요.
NameError: name 'randint' is not defined이라고 떠요 어떻게해요?
ㅋㅋㅋ
random,randint라고 썼어요 random.randint인데
근데 화면 이 검은 색이에요 요류도없고
어떻게 하져
게임 실행이 제대로 안된 것 같아요. __main__ 안에서 제대로 함수가 실행이 되었나요?
'pip'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
배치 파일이 아닙니다.
파이게임 설치하려고 하는데 저렇게 뜨네요 ..
파이썬 처음 설치할때 환경 변수에 등록이 안된 것 같습니다.
아래의 코드를 그대로 짰는데 expected an indedted block 오류가 뜹니다..ㅠㅠ class Feed (object): 이후에 뒤에 빨간 박스 오류뜨네요..ㅠㅠ
class Feed(object):
def __init__(self):
self.position = (0,0)
self.color = black
self.create()
def create(self):
self.position = (random.randint(0, grid_width-1) * grid_size, random.randint(0,grid_height-1)*grid_size)
def draw(self, surface):
draw_object(surface, self.color, self.position)
class Feed(object): 라인 전에 어떻게 되어 있나요?
@@suanlab 라인 전에 오류가 있었네요!! 감사합니다!!
Traceback (most recent call last):
File "C:\Users\my\Desktop\snake.py", line 121, in
python.move()
AttributeError: 'Python' object has no attribute 'move'
형님 저렇게 뜨고 검은 화면밖에 뜨지 않습니다 살려주십사와요
class Python 안에 move() 메소드를 정의하신거 맞나요?
def draw_object(surface, color, pos):
r = pygame.Rect((pos[0], pos[1]), (GRID_SIZE, GRID_SIZE))
pygame.draw.rect(surface, color, r)
이부분
File "C:\Users\admin\Desktop\Python\d.py", line 73, in draw_object
pygame.Rect((pos[0], pos[1]),(GRID_SIZE, GRID_SIZE))
TypeError: 'float' object is not subscriptable
이렇게 뜨는데 뭐가 문제일까요 도대체 모르겠네요..
Rect 에 넣는 각 변수가 올바른지 한번 보셔야할것 같아요.
def control(self, xy):
if (xy[0] * -1, xy[1] * -1 == self.direction:
return
여기서 잘못됐다고 하는데 뭐가 잘못됐는지 모르겠어요
괄호가 잘못된 것 같습니다.
elif event.type == KETDOWN:
부분에서
AttributeError: module 'pygame' has no
attribute 'KETDOWN' 라고 뜨는데 오류 수정 어떻게 하나요?
KETDOWN이 아니라 KEYDOWN 입니다.
@@suanlab 감사합니다 덕분에 잘 완성했어요!
완성 축하해요 ^^
혼자 실용적인 프로그램을 만들려면 어떤 방법으로 공부해야 할까요?? 이런 프로그램을 만들려면 뱀도 구현해야 하고 먹이를 먹으면 길이가 길어지는 것도 구현해야 하는데, 이런 기능이 필요할 것이다 라는걸 초보자 입장에서 떠올리가 쉽지가 않아서요.. Leetcode같은데서 혼자 알고리즘 문제 풀어보기는 하는데, 거기서 이런걸 배울 수 는 없는거 같고, 파이썬 모듈도 워낙 다양해서 이런 기능을 구현하기 위해 모듈의 어떤 기능을 써야겠다라고 떠올리는것도 어려운것 같아서 쉽지가 않네요..^^;; 좋은 동영상 감사드립니다!!
다양한 코드들을 따라하다보면 실력이 조금씩 늘어나실꺼예요. ^^
@@suanlab 일단 여러개 따라해보고 분석해 보는게 중요하군요 팁 감사합니다!
check_eat(python, feed)
NameError: name 'check_eat' is not defined
라고떠요
def check_eat(python, feed):
if python.poitions[0] == feed.position:
python.eat()
feed.create()
라고쳤는대..
혹시 check_eat 함수가 클래스 안에 들어가 있는것 아니가요?
@@suanlab 들어가면 안되요??
@@suanlab 소스파일보내드릴게요.
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
이걸로 창닫기 하려고하는데 X를 누르면 응답없음으로 뜨고 한번에 닫히지않아요,,,ㅜㅜㅜ
닫히지도 않고 다시 run해보려고해도 콘솔탭을 다시 시작하지않으면 창이 뜨지도 않습니다....
다른 파일들은 정상적으로 실행이 됩니다..
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.exit()
sys.exit()
이렇게 하면 AttributeError: module 'pygame' has no attribute 'exit' 이런 오류가 뜹니다..
'나의 첫 파이썬' 책에서 우주선게임을 따라한건데 저런 오류가 생겨요
책에서 제공하는 홈페이지에서 아예 완성된 파일을 받았는데도 같이 오류가생깁니다
아나콘다3 spyder 사용중인데 무슨 오류인지 도통 알수가없어요ㅜㅜ
pygame은 잘 설치되어있어요
제발 도와주세요,,,,,
대학생을 구해주세요,,,
pygame.exit()이 아니라 pygame.quit() 입니다.
class Fead(object):
def __init__(self):
self.position = (0, 0)
self_color = ORANGE
self.create()
def create(self):
self.positions = (random.randint(0, GRID_WIDTH - 1) * GRID_SIZE, random.randint(0, GRID_HEIGHT - 1)
def draw(self, surface):
draw_object(surface, self.color, self.position)
이랬는데 샐행이 안되면서 3번째 def에서 오류나요ㅠㅠ 어떻게 해야 할까요?def만 표시되어 있어서 def를 복붙,다시쓰기 몇 번이나 했는데 그래도 오류가 떠요ㅠㅠ
두번째 def에 정의한 부분에 괄호가 안닫혔네요.
처음에 셀이랑 검은 화면을 실수로 지웠는데 그 다음부터는 셀은 나오는데 빨간 글은 안나오고 검은 화면도 안나와요 어떻게하죠…
아? 어디 부분인가요?
완성했어요!
그런데 코드들 중에 이해를 못 한 게 많아서 그냥 배껴 쓴 것도 많은데 이렇게 코딩을 해도 실력이 늘까요?
그리고 9:15 여기서 UP = (0, -1) 이면 y 축 좌표가 감소해서 아래로 가고, DOWN = (0, 1) 이면 y 축 좌표가 증가해서 위로 가지 않나요?
저도 완성했는데 뭔가 배껴서 쓴 느낌이 들어서 '이래도 실력이늘까?' 하고 걱정되요.
클론 코딩을 통해 자주 코딩을 접하시면 실력이 늘꺼예요.
언어도 부모의 말을 따라하는것부터 배우잖아요. ^^
0,0 좌표가 중앙인 데카르트 좌표계가 기준이라고 생각하시면, 이해가 편하실꺼예요. 자신의 현재 좌표위치가 (0, 0)이고, y값 기준으로 위로는 음수, 아래는 양수를 가집니다.
@@suanlab 그렇군요.
pip install pygame를 명령 프롬프트에 입력을 했더니 오류가 뜹니다.
오류메시지가 어떻게 되나요??
@@suanlab error comnand crrored out with exit status 1:
나머지는 너무 길어서 못 쓰겟내요
참고로 저 이름 이수안 입니다
21:20
def move에서 if new in self.position[2:]:의 줄에서 콜론이 오류에요.... 똑같이 몇번이고 다시 했는데...
저도 그랬는데 바로 윗 줄에 괄호 숫자가 틀렸어요!!
Traceback (most recent call last):
File "C:\Users\Mssren\AppData\Local\Programs\Python\Python37\지렁이 게임.py", line 25, in
class Python(object):
File "C:\Users\Mssren\AppData\Local\Programs\Python\Python37\지렁이 게임.py", line 59, in Python
class Feed(object):
File "C:\Users\Mssren\AppData\Local\Programs\Python\Python37\지렁이 게임.py", line 89, in Feed
python = Python()
NameError: name 'Python' is not defined
이렇게 뜨는데 어떻게 하죠??
class Python 정의가 잘 안된거 같아요. 혹시 전체 코드 한번 보여주실래요?
ua-cam.com/video/PoJUmSk8JWs/v-deo.html 이 영상에 모든것의 전체코드가 다 있습니다.
안녕하세요. 혹시
NameError: name 'pos' is not defined. Did you mean: 'pow'?
이오류는 어떻게 고치면 될까요?ㅠㅠ
pos가 정의 안된 것 같아요. 혹시 오타 나신거 아닐까요?
Traceback (most recent call last):
File "C:\Users\김범준\Documents\파이썬으로 공부한 것들\pygame.py", line 1, in
import pygame
File "C:\Users\김범준\Documents\파이썬으로 공부한 것들\pygame.py", line 6, in
from pygame.locals import *
ModuleNotFoundError: No module named 'pygame.locals'; 'pygame' is not a package
실행할려고하니 이렇게 나오는데 여기서 부터 어떻게 하죠?
혹시 pip install pygame 명령어를 통해서 패키지를 설치 하셨나요?
@@suanlab 했는데 No name 'locals' in module 'pygame' 라고 하면서 인식을 못하는것 같아요
창닫기를 누르면 응답없음이 뜨네요 노트북으로 사용중입니다. 게임은 정상적으로 돌아가구요.
게임 종료 이벤트 부분에 문제가 있나봐요.
입력 이벤트 처리 부분에 오타가 있는지 확인해보시겠어요?
저는 6:19에서 창이 떠야하는대 안뜹니다
잉? 창이 안뜨나요? 코드가 어떻게 되나요?
교수님 혹시 파이게임으로 RTS 같은건 구현해 볼 수 없을까요??ㅎㅎ
당연히 가능하죠 ^^
jupyter를 평소에 이용해서 jupyter에다가 해보았는데 pygame이 응답없음이 계속 뜨는데 왜 이러는지 알 수 있을까요..?
그리고 27분 대까지 입력하고 실행을 해보니 'Python' object has no attribute 'position' 이런 문구가 뜨는데 이유가 뭔지 모르겠습니다.. 여전히 pygame은 실행이 안되고...
헛! Pygame은 jupyter에서 아마 안될꺼예요...
오류 자체는 class Python안에 self.position이 정의되지 않은것 같아요
Traceback (most recent call last):
File "C:\2020\1_leesooan\드디어 파이게임 설치됨!!.py", line 13, in
window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGTH), 0, 32)
NameError: name 'WINDOW_WIDTH' is not defined
코드 윗부분에 전역변수 선언시 오타가 있었나봐요.
WINDOW_WIDTH 오타 확인해주세요
감사합니다
line 119, in
check_eat(python, feed)
NameError: name 'check_eat' is not defined
이런 오류가 뜹니다 어떻게 해야하나요?
지금 check_eat 함수는 클래스 안이 아니라 밖에 있어야합니다. 들여쓰기를 하셔서 외부에서 못찾는거 같아요. 혹은 오타?
@@suanlab 바깥에다가도 입력했거든요 그래도 안되서요
파이썬 게임을 만들고 싶어서 선생님 강의를 보고있는데 정말 유익했습니다!!
(혹시 먹이 10개를 먹으면 게임 종료가 되는 코드도 알려주실 수 있나요...? 알려주심 감사하겠습니다!!)
아! 먹이 먹으면 점수와 몸 길이가 증가하는데, 그걸 이용해서 일정 점수 이상이면 게임 종료시키시면 됩니다.
아래와 같이 feed쪽에 오류 나는데 무슨 의미인가요?
PS C:\HelloCoding> python Python_Game.py
pygame 1.9.6
Hello from the pygame community. www.pygame.org/contribute.html
Traceback (most recent call last):
File "Python_Game.py", line 91, in
feed = Feed()
File "Python_Game.py", line 64, in __init__
self.create()
AttributeError: 'Feed' object has no attribute 'create'
class Feed 안에 create 메서드 안만드신거 같아요.
저 디코봇을 만드려다 ModuleNotFoundError: No module named 'discord'떠서 2일동안 해보다가 게임을 만들자 해서 pip install pygame을 쳐도 왜 ModuleNotFoundError: No module named 'discord'라고 뜨는데 왜그럴까요 별짓을 다해보고 카톡채팅방,디코서버,구글링,지식인 등 다해봐도 해결이 안되서 너무 답답합니다 코딩을 해보니 흥미가 느껴져 열심히 해보려 했는데 여기서 막히니 답답하고 코딩을 포기하고 싶지않은데 포기하려니 너무 아깝습니다 혹시 방법이 있을까요?
지금 Pycharm 같은 IDE에서 하고계시죠? 프로젝트가 그전 코드로 연결되어있나봐요.
@@suanlab 파이참을하다 삭제하고 파이썬 비쥬얼스튜디오를 통해 하고있었습니다
답변이 되게 빠르시네요😀
네네 ^^
surface = surface.convert()
NameError : name ‘surface’ is not defined 라고 계속 검정창만 떠요.....
surface = pygame.Surface(window.get_size())
surface = surface.convert()
위에 surface 변수를 잘 정의 해주셔야 해요.
코드에 오류없이 실행창이 뜨는데 지렁이가 화면에 나타나지 않아요ㅠㅠ 도와주세요ㅠㅠ
게임실행은 정상적으로 된거죠? 지렁이만 안뜬거면 create 메서드 부분을 한번 살펴보세요.
@@suanlab
self.length = 2
self.positions = [((WINDOW_WIDTH / 2), (WINDOW_HEIGTH / 2))]
self.direction = random.choice([UP, DOWN, LEFT, RIGHT])
이쪽 부분이가요?? 이부분이면 틀린건 없어보이는데...
위 코드는 이동하는 부분이고, 화면에 그려주는 부분 코드가 어찌될까요? 반복문 계속 도는 부분이요 ^^
import pygame
import sys
import time
import random
from pygame.locals import *
WINDOW_WIDTH = 800
WINDOW_HEIGTH = 600
GRID_SIZE = 20
GRID_WIDTH = WINDOW_WIDTH / GRID_SIZE
GRID_HEIGHT = WINDOW_HEIGTH / GRID_SIZE
WHITE = (255, 255, 255)
GREEN = (0, 50, 0)
ORANGE = (250, 150, 0)
GRAY = (100, 100, 100)
UP = (0, 1)
DOWN = (0, 1)
LEFT = (1, 0)
RIGHT = (1, 0)
FPS = 10
class Python(object):
def __init__(self):
self.create()
self.color = GREEN
def create(self):
self.length = 2
self.positions = [((WINDOW_WIDTH / 2), (WIDOW_HEIGHT / 2))]
self.direction = random.choice([UP, DOWN, LEFT, RIGHT])
def control(self, xy):
if (xy[0] * -1, xy[1] * -1) == self.direction:
return
else:
self.direction = xy
def move(self):
cur = self.positions[0]
x, y = self.direchtion
new = (((cur[0] + (x * GRID_SIZE)) % WIDOW_WIDTH), (cur[1] + (y * GRID_SIZE)) % WINDOW_HELGTH)
if new in self.positions[2:]:
self.create()
else:
self.positions.pop()
def eat(self):
self.length += 1
def draw(self, surface):
for p in self.positions:
draw_object(surface, self.color, p)
class Feed(object):
def __init__(self):
self.position = (0, 0)
self.color = ORANGE
self.create()
def create(self):
self.position = (random.randint(0, GRID_WIDTH - 1) * GRID_SIZE, random.randint(0, GRID_HEIGHT - 1) * GRID_SIZE)
def draw(self, surface):
draw_object(surface, self.color, self.position)
def draw_object(surface, color, pos):
r = pygame.Rect((pos[0], pos[1]), (GRID_SIZE, GRID_SIZE))
pygame.draw.rect(surface, color, r)
def check_eat(python, feed):
if python.positions[0] == feed.position:
python.eat()
feed.create()
def show_info(length, speed, surface):
font = pygame.font.Font(None, 34)
text = font.render("Length: " + str(length) + " Speed: " + str(round(speed, 2)), 1, GRAY)
if _name_ == '__main__':
python = Python()
feed = Feed()
pygame.init()
window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGTH), 0, 32)
pygame.display.set_caption('Python Gmae')
surface = pygame.Surface(window.get_size())
surface = surface.convert()
surface.fill(WHITE)
clock = pygame.time.Clock()
pygame.key.set_repeat(1, 40)
window.blit(surface, (0, 0))
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
elif event.type == KEYDOWN:
if event.key == K_UP:
python.control(UP)
elif event.key == K_DOWN:
python.control(DOWN)
elif event.key == K_LEFT:
python.control(LEFT)
elif event.key == K_RIGHT:
python.control(RIGHT)
surface.fill(WHITE)
python.move()
check_eat(python, feed)
speed = (FPS + python.legth) / 2
show_info(python.length, speed, surface)
python.draw(surface)
feed.draw(suface)
window.blit(surface, (0, 0))
pygame.display.flip()
pygame.display.update()
clock.tick(speed)
어떤 문제가 있나요?
그리고================ RESTART: C:/Users/VIP/Documents/안뇽안뇽/245.py ================
Traceback (most recent call last):
File "C:/Users/VIP/Documents/안뇽안뇽/245.py", line 1, in
import pygame
ModuleNotFoundError: No module named 'pygame'
>>>
어떻게 해결해요?
cmd 코맨드 창에서 pip install pygame을 하셔야해요 ^^
방향키가 안 움직이는데 혹시 문제점을 찾아주실 수 있나요...?
if __name__ == '__main__':
python = Python()
feed = Feed()
pygame.init()
window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT), 0, 32)
pygame.display.set_caption('Python Game')
surface = pygame.Surface(window.get_size())
surface = surface.convert()
surface.fill(WHITE)
clock = pygame.time.Clock()
pygame.key.set_repeat(1, 40)
window.blit(surface, (0,0))
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
elif event.type == KEYDOWN:
if event.key == K_UP:
python.control(UP)
elif event.key == K_DOWN:
python.control(DOWN)
elif event.key == K_LEFT:
python.control(LEFT)
elif event.key == K_RIGHT:
python.control(RIGHT)
surface.fill(WHITE)
python.move()
check_eat(python, feed)
speed = (FPS + python.length)/2
show_info(python.length, speed, surface)
python.draw(surface)
feed.draw(surface)
window.blit(surface, (0,0))
pygame.display.flip()
pygame.display.update()
clock.tick(speed)
Class Python에 있는 control 메서드에 문제가 있는것 같아요
@@suanlab 감사합니다 해결 되었어요~
해결되었군요 ^^
raceback (most recent call last):
File "C:/FBI/bbb.py", line 104, in
elif event.key == KEYDOWN:
AttributeError: 'Event' object has no attribute 'key' 뭐가 문제인건가요
event를 get으로 가져오는 부분을 어떻게 하셨어요?
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit() 이부분 말씀하시는거 맞나요?
Traceback (most recent call last):
File "C:/Users/RTL25/AppData/Local/Programs/Python/Python37/python game.py", line 116, in
python.move()
AttributeError: 'python' object has no attribute 'move'
>>>
python.move가 문제라는 것인가요?
이거 뭐라고 고쳐야 실행이 되나요??
class Python 안에 def move를 정의해주셨나요??
저 자꾸 파이게임의 모듈이 없데요
pip install pygame으로 설치하셨나요?
@@suanlab 됐어요 감사합니다
따라하고 있는데 지렁이가 방향키를 눌러도 움직이질 않아요 ㅠ.ㅠ 해결방법이 없을까요?
움직임 관련 코드입니다
(Python 클래스 중):
def create(self):
self.length = 2
self.positions = [((WINDOW_WIDTH / 2), (WINDOW_HEIGHT / 2))]
self.direction = random.choice([UP,DOWN,LEFT,RIGHT])
(while 문 중):
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
elif event.type == KEYDOWN:
if event.key == K_UP:
python.control(UP)
elif event.key == K_DOWN:
python.control(DOWN)
elif event.key == K_LEFT:
python.control(LEFT)
elif event.key == K_RIGHT:
python.control(RIGHT)
surface.fill(white)
python.move()
check_eat(python, feed)
speed = (FPS + python.length) / 2
python.draw(surface)
feed.draw(surface)
window.blit(surface, (0, 0))
pygame.display.flip()
pygame.display.update()
clock.tick(speed)
26:27 에 왼쪽에 저런 빨간 글씨 막 안뜨고 중간에 에러 버튼 떠요..;;
에러 메시지는 어떻게 되나요?
@@suanlab invalid syntax
pygame 1.9.6
Hello from the pygame community. www.pygame.org/contribute.html
Traceback (most recent call last):
File "C:/Users/hi/Desktop/Pygame.py", line 85, in
python = Python()
File "C:/Users/hi/Desktop/Pygame.py", line 27, in __init__
self.create()
AttributeError: 'Python' object has no attribute 'create'
이거 무슨 오류인가요
class Python 안에 def create 메소드가 정의되어있나요??
게임을 실행하는데 먹이는 보이고 지렁이가 보이지 않아요ㅠㅠ
지렁이가 사라졌다니! 어디로 보내신거예요? ㅋㅋ
Python 클래스에서 create() 메소드에 보시면 self.position이 있는데 그 위치를 한번 확인해주시겠어요? 윈도우 화면 내에 위치하고 있는지
@@suanlab 여러번 봤는데 잘 모르겠네요 ㅠㅠ
처음부터 보이지 않는다는건 class Python 안에 create() 메소드 안에 보시면 self.positions가 있어요. 그 위치가 화면 중앙으로 초기값이 지정되어 있는데, 이 부분이 잘못되어 있을 수 있답니다.
@@suanlab 드디어 고쳤네요ㅠㅠ 감사합니다 진짜ㅠㅠ self.positions에 문제가 있었네요ㅠㅠ
벽에 닿으면 죽게 하는 것은 이 코드 사용하면 됩니다
if int(cur[0] + (x * GRID_SIZE)) >= WINDOW_WIDTH or int(cur[0] + (x * GRID_SIZE)) = WINDOW_HEIGHT or int(cur[1] + (y * GRID_SIZE))
벽에 닿으면 죽게 만드셨군요 ^^
@@suanlab 네 ㅎㅎ
@@황영준-e9p 어디에 추가해야 하나요?
처음으로 저장할때 저장하고 F5눌렀는데 에러가 났다고 뜨네요 ㅜㅜ 어떡해야 할까요??
surface = surface.convert() 요 부분에서 s가 뭐 어떻게 된다고 나와요 ㅜㅜ
오류메시지를 다 보여주실 수 있을까요?
안녕하세요.. 거의 처음부분인 6:50 까지 따라서 하다가 오류가 발생하여 문의 드립니다.
코드는 아래까지 작성하였고 툴은 VS code를 사용 중입니다. (PyCharm과 기본 Python 3.8도 설치되어 있습니다.)
오류 메세지는 다음과 같습니다.
Module 'pygame' has no 'init' member pylint(no-member)
pygame은 vs code의 terminal에서 pip install pygame 으로 인스톨 하였고 아래의 경로에 해당폴더들(pygame, pygame-2.0.0.dist-info)이 있습니다.
C:\Users\yespl\AppData\Local\Programs\Python\Python38\Lib\site-packages
VS code에서 pygame을 불러올때 별도로 환경설정을 해 주어야 하는 부분이 있는지요?
참고로 Python 3.8에서 실행해보면 정상적으로 잘 되며, VS code에서 실행시 위의 오류와 함께 검은 창이 잠시 떴다가 사라집니다.
import pygame
import sys
import time
import random
from pygame.locals import *
WINDOW_WIDTH = 800
WINDOW_HEIGHT = 600
WHITE = (255, 255, 255)
if __name__ == '__main__':
pygame.init()
window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT), 0, 32)
pygame.display.set_caption('Python Game')
surface = pygame.Surface(window.get_size())
surface = surface.convert()
surface.fill(WHITE)
clock = pygame.time.Clock()
pygame.key.set_repeat(1, 40)
window.blit(surface, (0, 0))
VS code에서 자동오류 탐지는 6번째 줄의 "from" 과 14번째 줄의 "pygame"에 오류가 있다고 밑줄이 그어져 있습니다.
VS code에서 별도의 환경설정을 해 주어야 하는것인지,,, 설치된 pygame 폴더들 (pygame, pygame-2.0.0.dist-info)을 VS code 쪽으로 옮겨야 하는 것인지...
어떤 부분이 문제인지 확인 부탁 드려도 될까요?
감사합니다.
VS 에서 사용되는 가상환경에 pygame을 설치해야 할것 같아요.
@@suanlab 해결 되었습니다. 답변 감사 드립니다.!
게임 실행후 방향키 누르면 게임이 멈추고 File "D:/python/python game.py", line 107, in
python.control(RIGHT)
라고 뜹니다 어떻게 해야할까요
그리고 또 오타 났을때 복사 해서 검색하는 것은 어떻게 해야하나용????
오른쪽 버튼이 잘 정의되어 있나요? RIGHT 변수
설치는 됐는데 실행이 안됨
파이썬 설치하신거죠? 실행이 어떻게 안되시나요?
@@suanlab 아녜요 ㅎㅎ
제가 잘못 했네요 ㅎㅎ
def move(self):
cur = self.positions[0]
x, y = self.direction
new= (((cur[0]+(x * GRID_SIZE)) % WINDOW_WIDTH , (cur[1] +(y * GRID_SIZE)) % WINDOW_HEIGHT))
if new in self.positions[2:]:
self.create()
else:
self.positions.insert(0, new)
if len(self.positions) > self.length:
self.positions.pop()
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Traceback (most recent call last):
File "C:/Users/ehdbs/AppData/Local/Programs/Python/Python37-32/Python Game.py", line 113, in
python.move()
File "C:/Users/ehdbs/AppData/Local/Programs/Python/Python37-32/Python Game.py", line 45, in move
new= (((cur[0]+(x * GRID_SIZE)) % WINDOW_WIDTH , (cur[1] +(y * GRID_SIZE)) % WINDOW_HEIGHT))
TypeError: 'float' object is not subscriptable
정말 죄송합니다... 한 번만 봐주시면 감사하겠습니다!!
뭐가 문제인지 잘 모르겠습니다.
new 괄호가 좀 이상하네요. ^^
Traceback (most recent call last):
File "C:/Users/black/OneDrive/바탕 화면/python.py", line 15, in
window = pygame.display.set.mode((WINDOW_WIDTH,WINDOW_HEIGHT), 0,32)
AttributeError: module 'pygame.display' has no attribute 'set'
이렇게 발생하고 실행화면이 발생되지 않는데 이유가 무엇인지 궁금합니다..
set_mode 아닌가요?
@@suanlab 일단 어째 저째 해서 작성을 했는데요..
C:/Users/black/PycharmProjects/pygame1.py:74: DeprecationWarning: an integer is required (got type float). Implicit conversion to integers using __int__ is deprecated, and may be removed in a future version of Python.
r = pygame.Rect((pos[0], pos[1]), (GRID_SIZE, GRID_SIZE))
Traceback (most recent call last):
File "C:/Users/black/PycharmProjects/pygame1.py", line 127, in
feed.draw(surface)
File "C:/Users/black/PycharmProjects/pygame1.py", line 71, in draw
draw_object(surface, self.color, self.position)
File "C:/Users/black/PycharmProjects/pygame1.py", line 74, in draw_object
r = pygame.Rect((pos[0], pos[1]), (GRID_SIZE, GRID_SIZE))
TypeError: 'int' object is not subscriptable
이렇게 에러가 발생하는데요..
뭐가 문제가 되는걸까요.
아니 겁나빠르고 초보자들이 알기 너무 어렵게 설명 해요.
초보용으로는 좀 어렵나요?
완성했어요. 오류 없이 잘 작동돼요. 그런데 오타 친 부분도 없는데
Warning (from warnings module):
File "C:\Users\bitna\OneDrive\바탕 화면\유령의 집\Python Game.py", line 76
r = pygame.Rect((pos[0], pos[1]), (GRIDSIZE, GRIDSIZE))
DeprecationWarning: an integer is required (got type float). Implicit conversion to integers using __int__ is deprecated, and may be removed in a future version of Python.
이렇게 오류가 뜨네요. 왜 그런 걸까요?
이건 오류는 아니고 형변환때문에 발생한 warning 입니다.
GRIDSIZE가 실수형이라서 int(GRIDSIZE)로 정수형 변환이 필요합니다. ^^
@@suanlab 그렇군요. 감사합니다.
지렁이가 게임 시작하면 아래로 가고 위 방향키를 눌러도 위로 가지를 않네요 그리고 왼쪽을 바라보고 있는 상황에서 오른쪽키를 누르면 오른쪽으로 안가요 반대로 못가는 상황인데 무슨 오류죠 ? ㅠㅠㅠ
아 해결 했는데 게임 실행했을때 왼쪽위에 speed length 가 안뜨네요
텍스트로 speed length 보여주는 함수른 작성하는 부분이 영상 뒷부분에 있는데... 따라하셨나요??
========== RESTART: C:\Users\tople\OneDrive\바탕 화면\Python Game\Python Game.py ==========
pygame 1.9.6
Hello from the pygame community. www.pygame.org/contribute.html
Traceback (most recent call last):
File "C:\Users\tople\OneDrive\바탕 화면\Python Game\Python Game.py", line 121, in
show_info(python.length, speed, surface)
File "C:\Users\tople\OneDrive\바탕 화면\Python Game\Python Game.py", line 82, in show_info
text = font.render("Length: " + str(length) + " Speed: " + str(round((speed, 2)), 1, GRAY))
TypeError: type tuple doesn't define __round__ method
에러 나면서 화면이 않나옵니다. info 부분만 주석하면 정상 실행되는데 info부분만 추가하면 계속 에러나요.
전체 코드 입니다.
import pygame
import sys
import time
import random
from pygame.locals import *
WINDOW_WIDTH = 800
WINDOW_HEIGTH = 600
GRID_SIZE = 20
GRID_WIDTH = WINDOW_WIDTH / GRID_SIZE
GRID_HEIGTH = WINDOW_HEIGTH / GRID_SIZE
WHITE = (255, 255, 255) # 배경색
GREEN = (0, 50, 0) # python 색
ORANGE = (250, 150, 0) # feed 색
UP = (0, -1)
DOWN = (0, 1)
LEFT = (-1, 0)
RIGHT = (1, 0)
FPS = 10
class Python(object):
def __init__(self):
self.create()
self.color = GREEN
def create(self):
self.length = 2
self.positions = [((WINDOW_WIDTH / 2), (WINDOW_HEIGTH / 2))]
self.direction = random.choice([UP, DOWN, LEFT, RIGHT])
def control(self, xy):
if (xy[0] * 1, xy[1] * 1) == self.direction:
return
else:
self.direction = xy
def move(self):
cur = self.positions[0]
x, y = self.direction
new = (((cur[0] + (x * GRID_SIZE)) % WINDOW_WIDTH), (cur[1] + (y * GRID_SIZE)) % WINDOW_HEIGTH)
if new in self.positions[2:]:
self.create()
else:
self.positions.insert(0, new)
if len(self.positions) > self.length:
self.positions.pop()
def eat(self):
self.length += 1
def draw(self, surface):
for p in self.positions:
draw_object(surface, self.color, p)
class Feed(object):
def __init__(self):
self.position = (0, 0)
self.color = ORANGE
self.create()
def create(self):
self.position = (random.randint(0, GRID_WIDTH - 1) * GRID_SIZE, random.randint(0, GRID_HEIGTH - 1) * GRID_SIZE)
def draw(self, surface):
draw_object(surface, self.color, self.position)
def draw_object(surface, color, pos):
r = pygame.Rect((pos[0], pos[1]), (GRID_SIZE, GRID_SIZE))
pygame.draw.rect(surface, color, r)
def check_eat(python, feed):
if python.positions[0] == feed.position:
python.eat()
feed.create()
def show_info(length, speed, surface):
font = pygame.font.Font(None, 34)
text = font.render("Length: " + str(length) + " Speed: " + str(round((speed, 2)), 1, GRAY))
pos = text.get_rect()
pos.centerx = 150
surface.blit(text, pos)
if __name__ == '__main__':
python = Python()
feed = Feed()
pygame.init()
window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGTH), 0, 32)
pygame.display.set_caption('Python Game')
surface = pygame.Surface(window.get_size())
surface = surface.convert()
surface.fill(WHITE)
clock = pygame.time.Clock()
pygame.key.set_repeat(1, 40)
window.blit(surface, (0,0))
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
elif event.type == KEYDOWN:
if event.key == K_UP:
python.control(UP)
elif event.key == K_DOWN:
python.control(DOWN)
elif event.key == K_LEFT:
python.control(LEFT)
elif event.key == K_RIGHT:
python.control(RIGHT)
surface.fill(WHITE)
python.move()
check_eat(python,feed)
speed = (FPS + python.length)/2
show_info(python.length, speed, surface)
python.draw(surface)
feed.draw(surface)
window.blit(surface, (0,0))
pygame.display.flip()
pygame.display.update()
clock.tick(speed)
round 함수 안에 괄호가 두개로 되어서 오류가 났네요. ^^
@@suanlab ======= RESTART: C:\Users\tople\OneDrive\바탕 화면\Python Game\Python Game.py ======
pygame 1.9.6
Hello from the pygame community. www.pygame.org/contribute.html
Traceback (most recent call last):
File "C:\Users\tople\OneDrive\바탕 화면\Python Game\Python Game.py", line 121, in
show_info(python.length, speed, surface)
File "C:\Users\tople\OneDrive\바탕 화면\Python Game\Python Game.py", line 82, in show_info
text = font.render("Length: " + str(length) + " Speed: " + str(round(speed, 2)), 1, GRAY)
NameError: name 'GRAY' is not defined
동영상에서도 이렇게 나오는데
text = font.render("Length: " + str(length) + " Speed: " + str(round(speed, 2)), 1, GRAY)
이부분을 어떻게 수정해야 되나요? 지금상태에선 실행하면 검은화면만 나옵니다.
코드 상단에 GRAY 전연변수를 정의하셔야 합니다.
Traceback (most recent call last):
File "C:/전산언어학습/PBL 프로젝트/Ex01.py", line 100, in
pygame.key_set_repeat(1,40)
AttributeError: module 'pygame' has no attribute 'key_set_repeat'이렇게 뜨는데 뭐가 잘못된 걸까요? ㅜㅠ
pygame.key.set_repeat으로 해주셔야 해요. ^^
계속 검토했는데 위로 가려고 누르면
TypeError: 'float' object is not subscriptable
자꾸 이게 떠요ㅠ
키보드 입력시 좌표값에 따라 이동하는데 move 부분에 코드를 확인해주세요.
저도 아랫분이랑 같은 오류가 나는데요 ㅠㅠ 뭐가 문제인지 모르겠네요...
Traceback (most recent call last):
File "C:\Users\Z54M\Desktop\파이썬 연습\pygame-1.py", line 120, in
python.move()
File "C:\Users\Z54M\Desktop\파이썬 연습\pygame-1.py", line 43, in move
cur = self.positions[0]
AttributeError: 'Python' object has no attribute 'positions'
...
def move(self):
cur = self.positions[0]
x, y = self.direction
new = (((cur[0] + (x * GRID_SIZE)) % WINDOW_WIDTH), (cur[1] + (y * GRID_SIZE)) % WINDOW_HEIGHT)
if new in self.positions[2:]:
self.create()
else:
self.positions.insert(0, new)
if len(self.positions) > self.length:
self.positions.pop()
꼭 좀 알려주시면 감사하겠습니다 ㅠ
Python 객체 안에 속성으로 positions을 잘 정의하셨죠?
@@suanlab 네... 그런것 같은데요. 아무리 영상이랑 비교해봐도 뭐가 잘못되었는지 잘 모르겠습니다...
버전이 20. 뭐였던거 같은데 그게 오류가 나는데에 영향이 있을까요?
원하신다면 전문을 적어드리겠습니다.
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
elif event.type == KEYDOWN:
if event.key == K_UP:
python.control(UP)
elif event.type == K_DOWN:
python.control(DOWN)
elif event.type == K_LEFT:
python.control(UP)
elif event.type == K_RIGHT:
python.control ((RIGHT)
surface.fill(WHITE)
python.move()
check_eat(python, feed)
speed = (FPS + python.length) / 2
python.draw(surface)
feed.draw(surface)
window.blit(surface, (0, 0))
pygame.display.flip()
pygame.display.update()
clock.tick(speed)
여기에서
surface.fill(WHITE)
에서 s가 잘못 됬다고 합니다.
어떻게 해야 하나요???
빠른 답변 부탁드립니다.
surface.fill(WHITE) 위에 python.control((RIGHT) 부분에 괄호가 잘못되서 나는 오류입니다. RIGHT 전에 괄호가 두개네요; 하나 지워주셔야해요 ^^
줄 83, pygame.init() 할때 unindent does not match any other insentation level 이라 뜨는데 해결방법 알려주세요
이건 들여쓰기를 잘못하셔서 나는 오류입니다.
import pygame
import sys
import time
import random
from pygame.locals import *
WINDOW_WIDTH = 800
WINDOW_HEIGTH = 600
WHITE = (255, 255, 255)
if __name__ == '__main__':
pygame.init()
window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGTH),0, 32)
pygame.display.set_caption('Python Game')
surface = pygame.Surface(window.get_size())
surface = surface.convert()
surface.fill(WHITE)
clock = pygame.time.Clock()
pygame.key.set_repeat(1,40)
window.blit(surface, (0, 0))
이렇게 똑같이 따라했는데
밑에 글씨처럼나와요
Traceback (most recent call last):
File "C:/Python38/pygame.py", line 1, in
import pygame
File "C:/Python38\pygame.py", line 6, in
from pygame.locals import *
ModuleNotFoundError: No module named 'pygame.locals'; 'pygame' is not a package
>>>
강의 초반부에 pygame 설치하는 부분이 있습니다. pip install pygame 명령어를 통해서 패키지를 설치해주셔야 합니다.
16년도에 저희 학교에서 DB 강의하신분을 유튜브에서 뵙네요 ㅋㅋㅋ 감사합니다
안녕하세요. 인하대 졸업생 이시군요? ㅋㅋ
@@suanlab 아직 3학년입니다ㅠ ㅎㅎ 교수님 수업 들었을 때는 군대도 가기 전이라.. 하하 이렇게 랜선으로도 지식 전달 받을 수 있어서 기쁩니다. 감사힙니다 ^^ 구독과 좋아요로 보답하겠습니다 ㅋㅋㅋㅋ
인하대에 자주 있으니 오프라인으로도 봐요 ^^
저렇게 하면 계속 런할때 pygame 1.9.6
Hello from the pygame community. www.pygame.org/contribute.html 이렇게 뜨고 실행이 안되는데 어떻게 해야되나요
아무것도 실행되지 않는건, 게임 실행 코드로 이어지지 않는거 같아요.
그럼 어떡해야 할까요? 계속 귀찮게 해서 죄송합니다 최대한 빨리 답변 주시길 바랄게요
코드도 안보고 왜 안되는지 제가 예측을 해야 하는군요. ㅋㅋㅋ
지금 예상되는건 if __name__ == '__main__': 부분을 잘 정의하신지 의심되네요.
전 파이썬으로 직접하고 았는데요. 왜 창은 뜨는데 하야색 그건 안나오죠?
창은 뜨는데 하얀색 배경이 없나요?
혹시 배경색 칠해주는걸 해주셨나요?
Traceback (most recent call last):
File "D:\민주호\지렁이키우기.py", line 88, in
feed = Feed()
File "D:\민주호\지렁이키우기.py", line 61, in __init__
self.color = ORANGE
NameError: name 'ORANGE' is not defined
>>> 왜 이게 뜰까요?
코드 앞 부분에 ORANGE 전역변수 선언 안하셨어요?
Warning (from warnings module):
File "D:\코딩\파이썬게임1.py", line 71
r = pygame.Rect((pos[0], pos[1]), (GRID_SIZE, GRID_SIZE))
DeprecationWarning: an integer is required (got type float). Implicit conversion to integers using __int__ is deprecated, and may be removed in a future version of Python.
똑같이 했는데도 이런오류가 나요. 또 뱀이 화면 오른쪽 끝까지 안가요 ㅠㅠ
해당 warning은 GRID_SIZE가 실수형이라서 나는겁니다. 계산 부분에서 int()함수로 감싸주셔서 형변환을 해보세요.
그리고 뱀이 오른쪽 끝까지 안가는건, WINDOW 크기에 따라 이동을 제한했는데, 그걸 잘못하신거 같아요. 예를 들어 move 쪽 함수에서 WINDOW_HEIGHT와 WINDOW_WIDTH를 바꿔쓰시거나 한것 아닐까요?
마지막에 while Ture: 할때 앞에 w가 빨개져서 안되는데 어떻게 하져?
Ture가 아니라 True 입니다. ^^
@@suanlab그래도 안되고 whlie 할떄 w가 빨게지면서invalid syntax 이라고 떠요
그렇다면 while 문이 실행되기 전에 코드가 문제가 있어서 그렇게 뜨는겁니다.
while문 위의 코드를 어떻게 하셨어요?
만들고 실행도 되는데 먹이가 안뜨고 ㅠ
움직이지도 않아여 도와주십쇼
먹이도 안뜨고, 움직이지도 않는다면!
게임 반복 구분인 while 안에 코드가 문제가 있는거 같아요.
line 62, in __init__
self.color = ORANGE
NameError: name 'ORANGE' is not defined
line 89, in
feed = Feed()
이렇게 오류가 나오는데 어떻게 해결해야 하나요?
ORANGE 변수가 선언되지 않았네요.
오타일수 있습니다.
@@suanlab 답장이 늦어서 죄송합니다.^^ ! 아직 초보라 잘 모르는데, 영상 보며 배우고 있습니다. 감사합니다.~~
실행은 잘 되는데 이러고 자꾸 뭐가 떠요..
File "C:\Users\user\Desktop\python.py", line 74
r = pygame.Rect((pos[0], pos[1]), (GRID_SIZE, GRID_SIZE))
DeprecationWarning: an integer is required (got type float). Implicit conversion to integers using __int__ is deprecated, and may be removed in a future version of Python.
GRID_SIZE가 정수가 아니라 실수값이라 warning이 뜹니다. int() 로 형변환을 해주세요.
파일은 어떻게쓰는지..
파일 쓰기요?
Ctrl + S로 파일 저장이 됩니다.
안녕하세요 혹시 여기서 살아남은 시간을 게임오버시에 출력하려면 어떻게 해야할까요 ?
datetime 모듈을 사용하시면 됩니다.
게임 오버때 측정한 시간 - 게임 시작때 측정한 시간
@@suanlab 감사합니다 ㅠㅠ!
File "D:\pythongame.py", line 111, in
python.control(UP)
File "D:\pythongame.py", line 37, in control
if (xy[0] * -1, xy[1] * -1) == self.direction:
TypeError: 'float' object is not subscriptable
위방향키를 누르면 이렇게되요,.,
단순한 타입 오류네요. ^^
근처 코드를 다 한번 봐야겠네용
@@suanlab 수십번을 봤는데... 빨리찾는법없나요??
UP값 정의된 부분 한번 봐보셔용
강의 감사드립니다. 지렁이 몸통이 움직이지 않는 것은 왜일까요?
while True 부분은 다 따라한 것 같은데...
어렵습니다.
move() 메소드 부분을 한번 살펴보실래요?
File "C:\Users\Administrator\Desktop\파이썬게임.py", line 124, in
show_info(python.length, speed, surface)
File "C:\Users\Administrator\Desktop\파이썬게임.py", line 83, in show_info
font = pygame.font.font(None, 34)
AttributeError: module 'pygame.font' has no attribute 'font'
또 뭐가 잘못된 걸까요?
pygame.font.Font로 해주셔야 해요. ^^
저는 pygame 버전이 1.9.6 인것 같은데, 6:32 부분에서 저장후 Run이 계속 제대로 안되서 알아보니. pygame.key_set_repeat(1,40) 를 pygame.key.set_repeat(1,40)로 바꾸니 되네요.
어떻게 하셨나요? 자세히 알려주심 감사하겠습니다
@@태웅윤-q2t 아... 별다른건 없습니다. 그냥 key_set 부분을 key.set으로 고치니 되었어요^^
if __name__ == '__main__':
python = Python()
feed = Feed()
이렇게 첬더니unindent does not match any outer indentation level 이라고 떠여
파이썬은 탭으로 간격을 딱 맞추어서 띄어주셔야해요. ^^
그 IDLE에 pygame 1.96 이라 나오며 커뮤니티 사이트 뜨고 새파일로 따라쳤는데 게임 실행창은 왜 안나올까요? python idle에는 나오는데 파이썬 실행창이 따로 뜨지 않는건 파이썬 문제인가요?
아! F5키로 실행을 누르신거죠?
@@suanlab 네
게임 실행 함수를 호출하지 못한거 같은데...
코드 앞에 간격이 영상과 일치한지 봐주실래요?
처음 기본 설정까지만 했는데
File "C:/Users/Luke Kim/Desktop/python/game.py", line 1, in
import pygame
ModuleNotFoundError: No module named 'pygame'
이렇게 뜨는군요.... 어떻게 된걸까요?
Pygame 모듈을 설치해주셔야해요. ^^
pip install pygame
어떻게 설치하죠?ㅠㅠ
@@주말만세 command prompt 커맨드창 열고 pip install pygame 해주시면 됩니다. ^^
안녕하세요
다름이 아니라 창이 실행되자마자 닫혀서요.. 아직 window.blit(surface, (0, 0))까지 한 상태에요..
아직 어떻게 할 지 명령해주지 않아서 그런건가요?
네, pygame 종료되면서 꺼지나보네요. ^^
@@suanlab 감사합니다^^
제가 만들면서 색깔이랑 객체이름을좀바꾸고 했거든요??근데 아무리 수정해봐도 계속 이문구가뜨네요
Traceback (most recent call last):
File "C:\Users\ijs25\OneDrive\바탕 화면\python.py", line 115, in
snake.move()#뱀이움직임
AttributeError: 'Snake' object has no attribute 'move'이렇게 계속 에러가 나네요
밑에는 코드입니다.
import pygame #라이브러리로딩
import sys #종료하기위함
import time #게임이므로시간이있어야됨
import random #랜덤으로위치하기위함
from pygame.locals import *#시작
WINDOW_WIDTH = 800 #창크기설정
WINDOW_HEIGTH = 600 #창크기설정
GRID_SIZE = 20 #뱀의크기를지정
GRID_WIDTH = WINDOW_WIDTH / GRID_SIZE #뱀의크기를지정
GRID_HEIGTH = WINDOW_HEIGTH / GRID_SIZE #뱀의크기를지정
BLACK = (0, 0, 0) #검은색지정
WHITE = (255, 255, 255)
GRAY = (80, 80, 80)
UP = (0, -1) #위로이동할수있게함(죄표로보면됨)
DOWN = (0, 1) #아래로이동할수있게함
LEFT = (-1, 0) #왼쪽으로이동할수있게함
RIGHT = (1, 0) #오른쪽으로이동할수있게함
FPS = 15
class Snake(object): #뱀을생성
def __init__(self):
self.create() #뱀을생성
self.color = WHITE#뱀색깔 흰색 지정
def create(self):
self.length = 3 #게임시작초기뱀길이 3지정
self.positions = [((WINDOW_WIDTH / 2), (WINDOW_HEIGTH / 2))] #뱀정가운데위치
self.direction = random.choice([UP, DOWN, LEFT, RIGHT]) #뱀머리부분생성될때랜덤으로생성
def control(self, xy): #뱀조종
if (xy[0] * -1, xy[1] * -1) == self.direction: #반대방향조작금지시키기
return
else: #그외에는허용
self.direction = xy
def move(self):
cur = self.positions[0]#뱀의머리부분
x, y = self.direction#x,y의좌표
#뱀의뒷부분그려주기위함과 창을넘어가면반대쪽으로나오게만듬
new = (((cur[0] + (x * GRID_SIZE)) % WINDOW_WIDTH), (cur[1] + (y * GRID_SIZE)) % WINDOW_HEIGTH)
if new in self.positions[2:]:#뒷부분이뱀의위치좌표에포함되면죽기때문에다시시작하게함
self.create()
else:
self.positions.insert(0, new)#뱀의좌표에뒷부분포함
if len(self.positions) > self.length:#뱀의길이가자신의길이보다늘어나면
self.positions.pop()#뒤쪽을끊어서움직일수있게함(부드러워짐)
def eat(self):
self.length += 1 #뱀이먹이를먹으면 길이 1증가
def draw(self, surface):
for p in self.positions:#뱀그림그리기
draw_object(surface, self.color, p)#색깔표현
class Feed(object):#먹이생성
def __init__(self): #초기화시켜줌
self.position = (0, 0)#위치정해줌
self.color = GRAY#먹이색깔회색으로설정
self.create()#먹이생성
def create(self):
self,position = (random.randint(0, GRID_WIDTH - 1) * GRID_SIZE, random.randint(0, GRID_HEIGTH - 1) * GRID_SIZE)
#게임화면의먹이랜덤생성
def draw(self, surface):#먹이그려줌
draw_object(surface, self.color, self.position)#먹이호출
def draw_object(surface, color, pos):#뱀만아니라사과를그리기위해함수설정
r = pygame.Rect((pos[0], pos[1]), (GRID_SIZE, GRID_SIZE))#사각형모양설정
pygame.draw.rect(surface, color, r)#사각형모양설정
def check_eat(snake, feed):#뱀이먹이를먹었을때확인
if snake.positions[0] == feed.positions:#머리부분이먹이에위치해있으면
snake.eat()#뱀이먹는다
feed.creat()#먹이다시생성
def show_info(length, speed, surface):#보여줄정보 설정
font = pygame.font.Font(None, 30)#폰트와글씨체설
text = font.render("Length: " + str(length) + " speed: " + str(round(speed, 2)), 1, GRAY)#텍스트에표시될내용과 색깔정하기
pos = text.get_rect() #텍스트위치지정
pos.centerx = 150
surface.blit(text, pos)
if __name__== '__main__': #메인함수역할
snake = Snake()#뱀이라는객체생성
pygame.init()#파이게임초기화 그래야게임실행가능
window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGTH), 0, 32)#파이게임을돌릴창
pygame.display.set_caption('Snake game')
surface = pygame.Surface(window.get_size())#창사이즈 써페이스에넣어줌
surface = surface.convert() #공간을 전환시키는용도
surface.fill(BLACK) #공간을 검은색으로 채움
clock = pygame.time.Clock() #게임의 시간생성
pygame.key.set_repeat(1, 40)
window.blit(surface, (0, 0)) #화면구성
while True:
for event in pygame.event.get():#키보드조작전에끝내는걸로끄면게임종료
if event.type == QUIT:
pygame.quit()
sys.exit()
elif event.type == KEYDOWN:#뱀조종하기위해넣어놓음
if event.key == K_UP:
snake.control(UP)#뱀조종하기위해넣어놓음
elif event.key == K_DOWN:
snake.control(DOWN)#뱀조종하기위해넣어놓음
elif event.key == K_LEFT:
snake.control(LEFT)#뱀조종하기위해넣어놓음
elif event.key == K_RIGHT:
snake.control(RIGHT)#뱀조종하기위해넣어놓음
surface.fill(BLACK) #화면검은색으로 생성
snake.move()#뱀이움직임
check_eat(snake, feed)#먹이먹었는지확인
speed = (FPS + snake.length) / 2 #먹이를먹으면속도증가
show_info(python.length, speed, surface)#정보표시
snake.draw(surface)#뱀그림
feed.draw(surface)#먹이그림
window,blit(surface, (0, 0))
pygame.display.flip()
pygame.display.update()
clock.tick(speed)
Snake 안에 def 된 메소드들은 간격에 따라 어디에 속하는지 정해지는데... 지금 move와 다른 메소드들이 너무 간격이 벌어져서 내부 메소드가 되어버렸어요...
@@suanlab 그럼 Class밑에 def랑간격을 똑같이 해줘야되나요?
@@suanlab 제가 파이썬배우기시작해서잘몰라서요ㅜㅜ
@@suanlab 하다보니까 해결 됬습니다!! 감사합니다!
네 맞습니다. ^^
해결하셨군요 ^^
저 오류는 안뜨는데 실행 시키면 안 움직이고 렌덤으로 위치바뀌는것만 무한 실행되요ㅠㅠ 뭐가 문제죠?? 코드를 다니깐 계속 삭제 되서 이렇게 답니다 ㅠㅠㅠㅠ
메일 답장 했습니다. ^^
@@suanlab 앗 감사합니닷!!!!!!!!
댓글에 있을까 하여 찾다가 못 찾아서 여쭤 볼게 있습니다 ㅠㅠ 게임 구동 잘 되고 재밌게 잘 배웠습니다 좋은 코드 감사합니다 그런데 x y 좌표 보던 중에 궁금증이 생겨서 문의 드립니다 . x y 좌표로 UP 이면 (0, 1)로 알고 있었는데 구현 코드 보니 (0, -1)이라 궁금증이 생겨서.. 어떤 원리 인지 궁금합니다.. 물론 구동은 제대로 되어 더 궁금증이 생깁니다.. 제가 이거 짜고나서 아 반대로 움직이는 건가 했는데 제대로 움직여서 ... 구글링 실력이 미흡해서 한 시간 찾다가 포기 했습니다.. 답변 기다리겠습니다!!
LEFT가 -1,0 인것은 이해가 되는데 UP이 0,-1인 이유가 이해가 잘 안됩니다. y좌표가 -1이면 보통 그래프에서 아래이지 않나요? ㅠㅠ
컴퓨터에서 는 x축과 y축은 우리가 수학에서 쓰는 것이 아니라 T 자 모양이라서 y축이 + 되면 밑으로 갑니다
_________________________
ㅣ
ㅣ
ㅣ
ㅣ
@@김동건-u3s 질문드리고 나서 다른코딩들보면서 그런가보다 하고있었는데 명쾌히 답변주셔서 너무 감사드립니다
안녕하세요 3시간 동안 따라해서 수정하고 해서 만들었는데 막상 들어가보니 python이 feed에 데여도 feed위치가 바뀌지 않고 그대로 입니다 혹시 이유를 알수있을까요....?
먹이를 먹어도 위치가 그대로 인거죠? 그럼 Feed 생성하는 부분의 코드가 랜덤하게 잘안되어있나봐요.
@@suanlab 앗 혹시 나중에 코드를 보내면 봐주실수있나요...?
안녕하세요 차근차근 따라하려고 하는데 시작부터 막히네요
python 설치 후 CMD에서 "pip install pygame"치니까
Exception:
Traceback (most recent call last):
File "c:\program files (x86)\python36-32\lib\site-packages\pip\basecommand.py", line 215, in main
status = self.run(options, args)
File "c:\program files (x86)\python36-32\lib\site-packages\pip\commands\install.py", line 342, in run
prefix=options.prefix_path,
File "c:\program files (x86)\python36-32\lib\site-packages\pip
eq
eq_set.py", line 784, in install
**kwargs
File "c:\program files (x86)\python36-32\lib\site-packages\pip
eq
eq_install.py", line 851, in install
self.move_wheel_files(self.source_dir, root=root, prefix=prefix)
File "c:\program files (x86)\python36-32\lib\site-packages\pip
eq
eq_install.py", line 1064, in move_wheel_files
isolated=self.isolated,
File "c:\program files (x86)\python36-32\lib\site-packages\pip\wheel.py", line 345, in move_wheel_files
clobber(source, lib_dir, True)
File "c:\program files (x86)\python36-32\lib\site-packages\pip\wheel.py", line 316, in clobber
ensure_dir(destdir)
File "c:\program files (x86)\python36-32\lib\site-packages\pip\utils\__init__.py", line 83, in ensure_dir
os.makedirs(path)
File "c:\program files (x86)\python36-32\lib\os.py", line 220, in makedirs
mkdir(name, mode)
PermissionError: [WinError 5] 액세스가 거부되었습니다: 'c:\\program files (x86)\\python36-32\\Lib\\site-packages\\pygame'
You are using pip version 9.0.3, however version 20.0.2 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.
이라는 메세지가 뜹니다. 동영상처럼 설치되었다는 메세지가 뜨질 않네요
내용이 길면 메일로 알려주시셔도 감사하겠습니다.
jjaeho99@gmail.com
관리자 권한이 없어서 폴더 생성이 안되는것처럼 보이네요.
지렁이가 왼쪽 오른쪽으로 가려면 대각선으로 가고 위 아래는 아예 먹히지 않습니다.
while True:
이쪽은 오타가 없는거 같은데 왜이러는걸까요
혹시 move 메서드 내에서 사용되는 방향 정의를 한 부분에 오타가 있는거 같아요.
Traceback (most recent call last):
File "C:/Users/neo62/Desktop/파이썬게임.py", line 122, in
check_eat(python, feed)
NameError: name 'check_eat' is not defined
이 오류가 계속 뜹니다. class feed(): 에서 잘 정의해놨는데 왜 이런 오류가 뜰까요? 혹시 파이썬3.8.2라서 그럴까요?
버전 문제는 아닌데, class Feed 정의 부분을 보여주실래요?
class Feed(object):
def __init__(self):
self.position = (0, 0)
self.color = ORANGE
self.create()
def create(self):
self.position = (random.randint(0, GRID_WIDTH - 1) * GRIDSIZE, random.randint(0, GRID_HEIGHT - 1) * GRIDSIZE)
def draw(self, surface):
draw_object(surface, self.color, self.position)
def draw_object(surface, color, pos):
r = pygame.Rect((pos[0], pos[1]), (GRIDSIZE, GRIDSIZE))
pygame.draw.rect(surface, color, r)
def check_eat(python, feed):
if python.positions[0] == feed.position:
python.eat()
feed.create()
def show_info(length, speed, surface):
font = pygame.font.font(None, 34)
text = font.render('Length:' + str(length) + ' Speed: ' + str(round(speed, 2)), 1, GRAY)
pos = text.get_rect()
pos.centerx = 150
surface.blit(text, pos)
@@suanlab
레이싱게임도 에러메시지 올렸는데 그것도 봐주세요.. 제발.. 하고싶어요.
답글해주셔서 감사합니다.
draw_object(), check_eat(), show_info() 함수는 Feed 클래스에 속한 메소드가 아니예요. 밖으로 빼주셔야 해요 ^^;
Traceback (most recent call last):
File "Untitled", line 1
import pygame
ImportError: No module named pygame 이렇게 떠요 ㅠㅠ
pip install pygame 하셔서 라이브러리를 설치해주셔야합니다.