파이썬 게임 만들기 Creating a Python Game with pygame (한글자막)

Поділитися
Вставка
  • Опубліковано 22 січ 2025

КОМЕНТАРІ • 644

  • @suanlab
    @suanlab  6 років тому +12

    한글 자막이 추가되었습니다. 자막과 함께 편하게 보실 수 있습니다. ^^

  • @lukespearson8173
    @lukespearson8173 3 роки тому +1

    감사합니다.

    • @suanlab
      @suanlab  3 роки тому

      넵 감사합니다 ^^

  • @이윤정-e9x5u
    @이윤정-e9x5u 4 роки тому +1

    def control(self, xy):
    if (xy[0] * -1, xy[1] == self.direction:

    • @suanlab
      @suanlab  4 роки тому

      빨간줄 부분에 괄호가 닫히지 않았네요.

    • @이윤정-e9x5u
      @이윤정-e9x5u 4 роки тому

      @@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)
      이거 실행하면 검은 창만떠요

  • @junghoonan2389
    @junghoonan2389 4 роки тому +2

    영상 보면서 옆에다 똑같이 타이핑은 해봤는데. 보면서 드는 생각이 원리를 모르고 베껴 쳤다간 백날쳐도 이해 못하겠네. 역시 프로그래머들은 다른 세상 사람들이군. 이라는 거에요. 좋은 강의 감사해요. 하지만 여기 댓글들 보니 대부분 원리 이해 없이 타이핑해서 오타 가지고 헤매고 있는거 같고. 저도 그래요. 뭘 먼저 하고 이걸 다시 보는게 좋을까요?. 하.. 이걸 진짜 외워서 하다니. 님은 정말 천재같은 사람이군요

    • @suanlab
      @suanlab  4 роки тому +1

      그래서 쉽게 이해할 수 있도록 책을 쓰고 있습니다. ^^

  • @line35788
    @line35788 3 роки тому +1

    에러는 안나타는데 화면이 검은색으로 아무것도 안보여요

    • @suanlab
      @suanlab  3 роки тому

      아무래도 코드 상에서 게임 화면을 표시하는 부분 자체가 제대로 안된것 같아요.

  • @정리한글을이야기
    @정리한글을이야기 3 роки тому +1

    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))

  • @suplanksang9547
    @suplanksang9547 4 роки тому +1

    class Feed(object):
    def __init__(self):
    self.position = (0, 0)
    self.color = ORANGE
    self.create()
    여기서 class Feed(object):뒤에 자꾸 오타가 났다고 되네요

    • @suplanksang9547
      @suplanksang9547 4 роки тому +1

      오류메세지는expected an indented block 입니다.

    • @suanlab
      @suanlab  4 роки тому

      이건 들여쓰기 간격이 안맞아서 나는 오류입니다.
      Tab이나 space로 들여쓰기 간격을 동일하게 맞춰주세요. ^^

    • @suplanksang9547
      @suplanksang9547 4 роки тому +1

      감사합니다

    • @suplanksang9547
      @suplanksang9547 4 роки тому +1

      되게 빨리 답해주시네요^^

  • @이정수-w7x6y
    @이정수-w7x6y 4 роки тому +1

    if __name__ == '__main__' : #메인 코드
    pygame.init()

    • @suanlab
      @suanlab  4 роки тому

      key_set_repeat(1, 40)이 아니라 key.set_repeat(1, 40) 입니다.

  • @최부-z4w
    @최부-z4w 3 роки тому +1

    No module named pygame 이렇게 뜨는데 어떡하죠

    • @suanlab
      @suanlab  3 роки тому

      pip install pygame 하셨나요?

  • @williampark75
    @williampark75 3 роки тому +1

    작동은 되는데 지렁이가 안움직입니다. 도와주세요

    • @suanlab
      @suanlab  3 роки тому

      지렁이가 안움직이다니 move() 메서드 한번 보시겠어요?

    • @williampark75
      @williampark75 2 роки тому

      @@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): 밑에 있는겁니다

  • @김민혁-n6s
    @김민혁-n6s 3 роки тому +1

    if new in self.positions[2:]: 이 부분에서 계속 invalid syntax가 뜨네요 ㅜㅜ positions도 class 안에 정의했어요

    • @suanlab
      @suanlab  3 роки тому

      positions가 어떻게 정의되어 있나요?

  • @해야지-h3m
    @해야지-h3m 3 роки тому +1

    AttributeError: 'Python' object has no attribute 'drection'

  • @전주영-b9s
    @전주영-b9s 3 роки тому +1

    TypeError: 'module' object is not callable 이라 뜨는데 어떻게 해야해요?ㅠㅠ

    • @suanlab
      @suanlab  3 роки тому

      module을 호출하시면 안됩니다.

  • @극물-b8j
    @극물-b8j 3 роки тому +1

    module 'pygame' has no attribute 'dispaly 이거 왜그런지 아시나요?

    • @suanlab
      @suanlab  3 роки тому

      dispaly가 아니라 display 입니다.

    • @극물-b8j
      @극물-b8j 3 роки тому

      @@suanlab 감사합니다

  • @black-ox5kg
    @black-ox5kg Рік тому

    ModuleNotFoundError: No module named 'pygame
    이라고 자꾸 첫줄부터 import pygame이 자꾸 막혀요

  • @코드봇
    @코드봇 4 роки тому +1

    key up과 key down을 눌렀는데도 지렁이가 위 아래로 안가고 멈춰요 어떻게 고쳐야될까요

    • @suanlab
      @suanlab  4 роки тому

      KEY_UP과 KEY_DOWN 부분 코드 좀 보여주실래요?

    • @코드봇
      @코드봇 4 роки тому

      @@suanlab elif event.type == KEYDOWN:
      if event.key == K_UP:
      python.control(UP)
      elif event.key == K_DOWN:
      python.control(DOWN)

    • @코드봇
      @코드봇 4 роки тому

      @@suanlab 제대로 작성한것 같은데 안되네요..

    • @아르케어학원-히브리
      @아르케어학원-히브리 4 роки тому

      @@코드봇 음... 일단 4칸 띄어쓰기가 안돼있네요. 4칸 띄어쓰기을 제대로 했는데도 그런다면 아마 이 코드와 관련된 다른 코드가 잘못된 것 같아요.

  • @제이크-s6z
    @제이크-s6z 3 роки тому +1

    NameError: name 'randint' is not defined이라고 떠요 어떻게해요?

    • @제이크-s6z
      @제이크-s6z 3 роки тому +1

      ㅋㅋㅋ

    • @제이크-s6z
      @제이크-s6z 3 роки тому +1

      random,randint라고 썼어요 random.randint인데

    • @제이크-s6z
      @제이크-s6z 3 роки тому +1

      근데 화면 이 검은 색이에요 요류도없고

    • @제이크-s6z
      @제이크-s6z 3 роки тому +1

      어떻게 하져

    • @suanlab
      @suanlab  3 роки тому

      게임 실행이 제대로 안된 것 같아요. __main__ 안에서 제대로 함수가 실행이 되었나요?

  • @Omggggg12
    @Omggggg12 3 роки тому +1

    'pip'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
    배치 파일이 아닙니다.
    파이게임 설치하려고 하는데 저렇게 뜨네요 ..

    • @suanlab
      @suanlab  3 роки тому

      파이썬 처음 설치할때 환경 변수에 등록이 안된 것 같습니다.

  • @dongmo8978
    @dongmo8978 4 роки тому +1

    아래의 코드를 그대로 짰는데 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)

    • @suanlab
      @suanlab  4 роки тому

      class Feed(object): 라인 전에 어떻게 되어 있나요?

    • @dongmo8978
      @dongmo8978 4 роки тому

      @@suanlab 라인 전에 오류가 있었네요!! 감사합니다!!

  • @김굽다불남
    @김굽다불남 3 роки тому +1

    Traceback (most recent call last):
    File "C:\Users\my\Desktop\snake.py", line 121, in
    python.move()
    AttributeError: 'Python' object has no attribute 'move'
    형님 저렇게 뜨고 검은 화면밖에 뜨지 않습니다 살려주십사와요

    • @suanlab
      @suanlab  3 роки тому

      class Python 안에 move() 메소드를 정의하신거 맞나요?

  • @창창-s2n
    @창창-s2n 5 років тому +1

    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
    이렇게 뜨는데 뭐가 문제일까요 도대체 모르겠네요..

    • @suanlab
      @suanlab  5 років тому

      Rect 에 넣는 각 변수가 올바른지 한번 보셔야할것 같아요.

  • @워터제네레이션
    @워터제네레이션 3 роки тому +1

    def control(self, xy):
    if (xy[0] * -1, xy[1] * -1 == self.direction:
    return
    여기서 잘못됐다고 하는데 뭐가 잘못됐는지 모르겠어요

    • @suanlab
      @suanlab  3 роки тому

      괄호가 잘못된 것 같습니다.

  • @Ma1chachoco1ate
    @Ma1chachoco1ate 4 роки тому +1

    elif event.type == KETDOWN:
    부분에서
    AttributeError: module 'pygame' has no
    attribute 'KETDOWN' 라고 뜨는데 오류 수정 어떻게 하나요?

    • @suanlab
      @suanlab  4 роки тому

      KETDOWN이 아니라 KEYDOWN 입니다.

    • @Ma1chachoco1ate
      @Ma1chachoco1ate 4 роки тому +1

      @@suanlab 감사합니다 덕분에 잘 완성했어요!

    • @suanlab
      @suanlab  4 роки тому

      완성 축하해요 ^^

  • @dsk9963
    @dsk9963 4 роки тому +1

    혼자 실용적인 프로그램을 만들려면 어떤 방법으로 공부해야 할까요?? 이런 프로그램을 만들려면 뱀도 구현해야 하고 먹이를 먹으면 길이가 길어지는 것도 구현해야 하는데, 이런 기능이 필요할 것이다 라는걸 초보자 입장에서 떠올리가 쉽지가 않아서요.. Leetcode같은데서 혼자 알고리즘 문제 풀어보기는 하는데, 거기서 이런걸 배울 수 는 없는거 같고, 파이썬 모듈도 워낙 다양해서 이런 기능을 구현하기 위해 모듈의 어떤 기능을 써야겠다라고 떠올리는것도 어려운것 같아서 쉽지가 않네요..^^;; 좋은 동영상 감사드립니다!!

    • @suanlab
      @suanlab  4 роки тому

      다양한 코드들을 따라하다보면 실력이 조금씩 늘어나실꺼예요. ^^

    • @dsk9963
      @dsk9963 4 роки тому +1

      @@suanlab 일단 여러개 따라해보고 분석해 보는게 중요하군요 팁 감사합니다!

  • @배성훈-f8l1c
    @배성훈-f8l1c 4 роки тому +1

    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()
    라고쳤는대..

    • @suanlab
      @suanlab  4 роки тому

      혹시 check_eat 함수가 클래스 안에 들어가 있는것 아니가요?

    • @배성훈-f8l1c
      @배성훈-f8l1c 4 роки тому

      @@suanlab 들어가면 안되요??

    • @배성훈-f8l1c
      @배성훈-f8l1c 4 роки тому

      @@suanlab 소스파일보내드릴게요.

  • @민이라고해-g3n
    @민이라고해-g3n 4 роки тому +1

    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은 잘 설치되어있어요
    제발 도와주세요,,,,,
    대학생을 구해주세요,,,

    • @suanlab
      @suanlab  4 роки тому

      pygame.exit()이 아니라 pygame.quit() 입니다.

  • @kevinhwang485
    @kevinhwang485 4 роки тому +1

    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를 복붙,다시쓰기 몇 번이나 했는데 그래도 오류가 떠요ㅠㅠ

    • @suanlab
      @suanlab  4 роки тому

      두번째 def에 정의한 부분에 괄호가 안닫혔네요.

  • @박제민-p8c
    @박제민-p8c 3 роки тому +1

    처음에 셀이랑 검은 화면을 실수로 지웠는데 그 다음부터는 셀은 나오는데 빨간 글은 안나오고 검은 화면도 안나와요 어떻게하죠…

    • @suanlab
      @suanlab  3 роки тому

      아? 어디 부분인가요?

  • @metabaduk
    @metabaduk 4 роки тому +1

    완성했어요!
    그런데 코드들 중에 이해를 못 한 게 많아서 그냥 배껴 쓴 것도 많은데 이렇게 코딩을 해도 실력이 늘까요?
    그리고 9:15 여기서 UP = (0, -1) 이면 y 축 좌표가 감소해서 아래로 가고, DOWN = (0, 1) 이면 y 축 좌표가 증가해서 위로 가지 않나요?

    • @아르케어학원-히브리
      @아르케어학원-히브리 4 роки тому +1

      저도 완성했는데 뭔가 배껴서 쓴 느낌이 들어서 '이래도 실력이늘까?' 하고 걱정되요.

    • @suanlab
      @suanlab  4 роки тому +1

      클론 코딩을 통해 자주 코딩을 접하시면 실력이 늘꺼예요.
      언어도 부모의 말을 따라하는것부터 배우잖아요. ^^

    • @suanlab
      @suanlab  4 роки тому +1

      0,0 좌표가 중앙인 데카르트 좌표계가 기준이라고 생각하시면, 이해가 편하실꺼예요. 자신의 현재 좌표위치가 (0, 0)이고, y값 기준으로 위로는 음수, 아래는 양수를 가집니다.

    • @metabaduk
      @metabaduk 4 роки тому

      @@suanlab 그렇군요.

  • @이뚜뚜뚜
    @이뚜뚜뚜 4 роки тому +1

    pip install pygame를 명령 프롬프트에 입력을 했더니 오류가 뜹니다.

    • @suanlab
      @suanlab  4 роки тому

      오류메시지가 어떻게 되나요??

    • @이뚜뚜뚜
      @이뚜뚜뚜 4 роки тому

      @@suanlab error comnand crrored out with exit status 1:

    • @이뚜뚜뚜
      @이뚜뚜뚜 4 роки тому

      나머지는 너무 길어서 못 쓰겟내요

    • @이뚜뚜뚜
      @이뚜뚜뚜 4 роки тому

      참고로 저 이름 이수안 입니다

  • @Akfxmffpzlrjakemslem
    @Akfxmffpzlrjakemslem 3 роки тому +1

    21:20

  • @kellylee451
    @kellylee451 3 роки тому +2

    def move에서 if new in self.position[2:]:의 줄에서 콜론이 오류에요.... 똑같이 몇번이고 다시 했는데...

    • @_house6662
      @_house6662 3 роки тому +1

      저도 그랬는데 바로 윗 줄에 괄호 숫자가 틀렸어요!!

  • @dfjklol
    @dfjklol 4 роки тому +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
    이렇게 뜨는데 어떻게 하죠??

    • @suanlab
      @suanlab  4 роки тому

      class Python 정의가 잘 안된거 같아요. 혹시 전체 코드 한번 보여주실래요?

    • @dfjklol
      @dfjklol 4 роки тому

      ua-cam.com/video/PoJUmSk8JWs/v-deo.html 이 영상에 모든것의 전체코드가 다 있습니다.

  • @gonnioo1502
    @gonnioo1502 3 роки тому +1

    안녕하세요. 혹시
    NameError: name 'pos' is not defined. Did you mean: 'pow'?
    이오류는 어떻게 고치면 될까요?ㅠㅠ

    • @suanlab
      @suanlab  3 роки тому

      pos가 정의 안된 것 같아요. 혹시 오타 나신거 아닐까요?

  • @프로젝트하로나
    @프로젝트하로나 4 роки тому +1

    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
    실행할려고하니 이렇게 나오는데 여기서 부터 어떻게 하죠?

    • @suanlab
      @suanlab  4 роки тому

      혹시 pip install pygame 명령어를 통해서 패키지를 설치 하셨나요?

    • @프로젝트하로나
      @프로젝트하로나 4 роки тому

      @@suanlab 했는데 No name 'locals' in module 'pygame' 라고 하면서 인식을 못하는것 같아요

  • @고영훈-t3l
    @고영훈-t3l 4 роки тому +1

    창닫기를 누르면 응답없음이 뜨네요 노트북으로 사용중입니다. 게임은 정상적으로 돌아가구요.

    • @suanlab
      @suanlab  4 роки тому

      게임 종료 이벤트 부분에 문제가 있나봐요.
      입력 이벤트 처리 부분에 오타가 있는지 확인해보시겠어요?

  • @jungleirv
    @jungleirv 4 роки тому +1

    저는 6:19에서 창이 떠야하는대 안뜹니다

    • @suanlab
      @suanlab  4 роки тому

      잉? 창이 안뜨나요? 코드가 어떻게 되나요?

  • @브실골브금실력은골드
    @브실골브금실력은골드 2 роки тому +1

    교수님 혹시 파이게임으로 RTS 같은건 구현해 볼 수 없을까요??ㅎㅎ

    • @suanlab
      @suanlab  2 роки тому

      당연히 가능하죠 ^^

  • @정대웅-y2p
    @정대웅-y2p 4 роки тому +1

    jupyter를 평소에 이용해서 jupyter에다가 해보았는데 pygame이 응답없음이 계속 뜨는데 왜 이러는지 알 수 있을까요..?
    그리고 27분 대까지 입력하고 실행을 해보니 'Python' object has no attribute 'position' 이런 문구가 뜨는데 이유가 뭔지 모르겠습니다.. 여전히 pygame은 실행이 안되고...

    • @suanlab
      @suanlab  4 роки тому

      헛! Pygame은 jupyter에서 아마 안될꺼예요...

    • @suanlab
      @suanlab  4 роки тому

      오류 자체는 class Python안에 self.position이 정의되지 않은것 같아요

  • @eey5202
    @eey5202 4 роки тому +2

    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

    • @suanlab
      @suanlab  4 роки тому

      코드 윗부분에 전역변수 선언시 오타가 있었나봐요.
      WINDOW_WIDTH 오타 확인해주세요

    • @eey5202
      @eey5202 4 роки тому +1

      감사합니다

  • @빅토르희
    @빅토르희 4 роки тому +1

    line 119, in
    check_eat(python, feed)
    NameError: name 'check_eat' is not defined
    이런 오류가 뜹니다 어떻게 해야하나요?

    • @suanlab
      @suanlab  4 роки тому +1

      지금 check_eat 함수는 클래스 안이 아니라 밖에 있어야합니다. 들여쓰기를 하셔서 외부에서 못찾는거 같아요. 혹은 오타?

    • @빅토르희
      @빅토르희 4 роки тому

      @@suanlab 바깥에다가도 입력했거든요 그래도 안되서요

  • @revierjh7074
    @revierjh7074 2 роки тому +1

    파이썬 게임을 만들고 싶어서 선생님 강의를 보고있는데 정말 유익했습니다!!
    (혹시 먹이 10개를 먹으면 게임 종료가 되는 코드도 알려주실 수 있나요...? 알려주심 감사하겠습니다!!)

    • @suanlab
      @suanlab  2 роки тому

      아! 먹이 먹으면 점수와 몸 길이가 증가하는데, 그걸 이용해서 일정 점수 이상이면 게임 종료시키시면 됩니다.

  • @healing486-music
    @healing486-music 4 роки тому +1

    아래와 같이 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'

    • @suanlab
      @suanlab  4 роки тому

      class Feed 안에 create 메서드 안만드신거 같아요.

  • @AabanQ
    @AabanQ 4 роки тому +1

    저 디코봇을 만드려다 ModuleNotFoundError: No module named 'discord'떠서 2일동안 해보다가 게임을 만들자 해서 pip install pygame을 쳐도 왜 ModuleNotFoundError: No module named 'discord'라고 뜨는데 왜그럴까요 별짓을 다해보고 카톡채팅방,디코서버,구글링,지식인 등 다해봐도 해결이 안되서 너무 답답합니다 코딩을 해보니 흥미가 느껴져 열심히 해보려 했는데 여기서 막히니 답답하고 코딩을 포기하고 싶지않은데 포기하려니 너무 아깝습니다 혹시 방법이 있을까요?

    • @suanlab
      @suanlab  4 роки тому +1

      지금 Pycharm 같은 IDE에서 하고계시죠? 프로젝트가 그전 코드로 연결되어있나봐요.

    • @AabanQ
      @AabanQ 4 роки тому +1

      @@suanlab 파이참을하다 삭제하고 파이썬 비쥬얼스튜디오를 통해 하고있었습니다
      답변이 되게 빠르시네요😀

    • @suanlab
      @suanlab  4 роки тому

      네네 ^^

  • @audgml5381
    @audgml5381 4 роки тому +1

    surface = surface.convert()
    NameError : name ‘surface’ is not defined 라고 계속 검정창만 떠요.....

    • @suanlab
      @suanlab  4 роки тому

      surface = pygame.Surface(window.get_size())
      surface = surface.convert()
      위에 surface 변수를 잘 정의 해주셔야 해요.

  • @김영인-l3b
    @김영인-l3b 4 роки тому +1

    코드에 오류없이 실행창이 뜨는데 지렁이가 화면에 나타나지 않아요ㅠㅠ 도와주세요ㅠㅠ

    • @suanlab
      @suanlab  4 роки тому

      게임실행은 정상적으로 된거죠? 지렁이만 안뜬거면 create 메서드 부분을 한번 살펴보세요.

    • @김영인-l3b
      @김영인-l3b 4 роки тому +1

      @@suanlab
      self.length = 2
      self.positions = [((WINDOW_WIDTH / 2), (WINDOW_HEIGTH / 2))]
      self.direction = random.choice([UP, DOWN, LEFT, RIGHT])
      이쪽 부분이가요?? 이부분이면 틀린건 없어보이는데...

    • @suanlab
      @suanlab  4 роки тому

      위 코드는 이동하는 부분이고, 화면에 그려주는 부분 코드가 어찌될까요? 반복문 계속 도는 부분이요 ^^

  • @정글의법칙-t4f
    @정글의법칙-t4f 5 років тому +1

    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'
    >>>
    어떻게 해결해요?

    • @suanlab
      @suanlab  5 років тому

      cmd 코맨드 창에서 pip install pygame을 하셔야해요 ^^

  • @Jjimins
    @Jjimins 4 роки тому +1

    방향키가 안 움직이는데 혹시 문제점을 찾아주실 수 있나요...?
    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)

    • @suanlab
      @suanlab  4 роки тому

      Class Python에 있는 control 메서드에 문제가 있는것 같아요

    • @Jjimins
      @Jjimins 4 роки тому +1

      @@suanlab 감사합니다 해결 되었어요~

    • @suanlab
      @suanlab  4 роки тому

      해결되었군요 ^^

  • @sol4rmy
    @sol4rmy 4 роки тому +1

    raceback (most recent call last):
    File "C:/FBI/bbb.py", line 104, in
    elif event.key == KEYDOWN:
    AttributeError: 'Event' object has no attribute 'key' 뭐가 문제인건가요

    • @suanlab
      @suanlab  4 роки тому

      event를 get으로 가져오는 부분을 어떻게 하셨어요?

    • @sol4rmy
      @sol4rmy 4 роки тому +1

      for event in pygame.event.get():
      if event.type == QUIT:
      pygame.quit()
      sys.exit() 이부분 말씀하시는거 맞나요?

  • @박민하-k8t
    @박민하-k8t 4 роки тому +2

    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가 문제라는 것인가요?
    이거 뭐라고 고쳐야 실행이 되나요??

    • @suanlab
      @suanlab  4 роки тому +1

      class Python 안에 def move를 정의해주셨나요??

  • @김재원-i5p3k
    @김재원-i5p3k 4 роки тому +1

    저 자꾸 파이게임의 모듈이 없데요

    • @suanlab
      @suanlab  4 роки тому

      pip install pygame으로 설치하셨나요?

    • @김재원-i5p3k
      @김재원-i5p3k 4 роки тому +1

      @@suanlab 됐어요 감사합니다

  • @user-star032
    @user-star032 2 роки тому

    따라하고 있는데 지렁이가 방향키를 눌러도 움직이질 않아요 ㅠ.ㅠ 해결방법이 없을까요?
    움직임 관련 코드입니다
    (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)

  • @lmvp6610
    @lmvp6610 4 роки тому +1

    26:27 에 왼쪽에 저런 빨간 글씨 막 안뜨고 중간에 에러 버튼 떠요..;;

    • @suanlab
      @suanlab  4 роки тому +1

      에러 메시지는 어떻게 되나요?

    • @lmvp6610
      @lmvp6610 4 роки тому

      @@suanlab invalid syntax

  • @김욱-c7c
    @김욱-c7c 4 роки тому +1

    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'
    이거 무슨 오류인가요

    • @suanlab
      @suanlab  4 роки тому

      class Python 안에 def create 메소드가 정의되어있나요??

  • @Mazzi0525
    @Mazzi0525 4 роки тому +1

    게임을 실행하는데 먹이는 보이고 지렁이가 보이지 않아요ㅠㅠ

    • @suanlab
      @suanlab  4 роки тому +1

      지렁이가 사라졌다니! 어디로 보내신거예요? ㅋㅋ
      Python 클래스에서 create() 메소드에 보시면 self.position이 있는데 그 위치를 한번 확인해주시겠어요? 윈도우 화면 내에 위치하고 있는지

    • @Mazzi0525
      @Mazzi0525 4 роки тому +1

      ​@@suanlab 여러번 봤는데 잘 모르겠네요 ㅠㅠ

    • @suanlab
      @suanlab  4 роки тому

      처음부터 보이지 않는다는건 class Python 안에 create() 메소드 안에 보시면 self.positions가 있어요. 그 위치가 화면 중앙으로 초기값이 지정되어 있는데, 이 부분이 잘못되어 있을 수 있답니다.

    • @Mazzi0525
      @Mazzi0525 4 роки тому +1

      @@suanlab 드디어 고쳤네요ㅠㅠ 감사합니다 진짜ㅠㅠ self.positions에 문제가 있었네요ㅠㅠ

  • @황영준-e9p
    @황영준-e9p 4 роки тому +1

    벽에 닿으면 죽게 하는 것은 이 코드 사용하면 됩니다
    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
      @suanlab  4 роки тому +1

      벽에 닿으면 죽게 만드셨군요 ^^

    • @황영준-e9p
      @황영준-e9p 4 роки тому +1

      @@suanlab 네 ㅎㅎ

    • @다영이-k6p
      @다영이-k6p 2 роки тому

      @@황영준-e9p 어디에 추가해야 하나요?

  • @Ban-a09
    @Ban-a09 3 роки тому +1

    처음으로 저장할때 저장하고 F5눌렀는데 에러가 났다고 뜨네요 ㅜㅜ 어떡해야 할까요??
    surface = surface.convert() 요 부분에서 s가 뭐 어떻게 된다고 나와요 ㅜㅜ

    • @suanlab
      @suanlab  3 роки тому

      오류메시지를 다 보여주실 수 있을까요?

  • @user-oe8wp8hl9b
    @user-oe8wp8hl9b 4 роки тому +1

    안녕하세요.. 거의 처음부분인 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 쪽으로 옮겨야 하는 것인지...
    어떤 부분이 문제인지 확인 부탁 드려도 될까요?
    감사합니다.

    • @suanlab
      @suanlab  4 роки тому

      VS 에서 사용되는 가상환경에 pygame을 설치해야 할것 같아요.

    • @user-oe8wp8hl9b
      @user-oe8wp8hl9b 4 роки тому

      @@suanlab 해결 되었습니다. 답변 감사 드립니다.!

  • @kkwanseok
    @kkwanseok 5 років тому +1

    게임 실행후 방향키 누르면 게임이 멈추고 File "D:/python/python game.py", line 107, in
    python.control(RIGHT)
    라고 뜹니다 어떻게 해야할까요

    • @kkwanseok
      @kkwanseok 5 років тому +1

      그리고 또 오타 났을때 복사 해서 검색하는 것은 어떻게 해야하나용????

    • @suanlab
      @suanlab  5 років тому

      오른쪽 버튼이 잘 정의되어 있나요? RIGHT 변수

  • @최지은-b4d
    @최지은-b4d 4 роки тому

    설치는 됐는데 실행이 안됨

    • @suanlab
      @suanlab  4 роки тому

      파이썬 설치하신거죠? 실행이 어떻게 안되시나요?

    • @최지은-b4d
      @최지은-b4d 4 роки тому

      @@suanlab 아녜요 ㅎㅎ
      제가 잘못 했네요 ㅎㅎ

  • @돌돌돌이-m6s
    @돌돌돌이-m6s 5 років тому +1

    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
    정말 죄송합니다... 한 번만 봐주시면 감사하겠습니다!!
    뭐가 문제인지 잘 모르겠습니다.

    • @suanlab
      @suanlab  5 років тому

      new 괄호가 좀 이상하네요. ^^

  • @조르방아르마니
    @조르방아르마니 5 років тому +1

    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
      @suanlab  5 років тому

      set_mode 아닌가요?

    • @조르방아르마니
      @조르방아르마니 5 років тому

      @@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
      이렇게 에러가 발생하는데요..
      뭐가 문제가 되는걸까요.

  • @정아허-p1g
    @정아허-p1g 3 роки тому +1

    아니 겁나빠르고 초보자들이 알기 너무 어렵게 설명 해요.

    • @suanlab
      @suanlab  3 роки тому

      초보용으로는 좀 어렵나요?

  • @arche3927
    @arche3927 4 роки тому +1

    완성했어요. 오류 없이 잘 작동돼요. 그런데 오타 친 부분도 없는데
    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.
    이렇게 오류가 뜨네요. 왜 그런 걸까요?

    • @suanlab
      @suanlab  4 роки тому +1

      이건 오류는 아니고 형변환때문에 발생한 warning 입니다.
      GRIDSIZE가 실수형이라서 int(GRIDSIZE)로 정수형 변환이 필요합니다. ^^

    • @arche3927
      @arche3927 4 роки тому

      @@suanlab 그렇군요. 감사합니다.

  • @ruby338-j3h
    @ruby338-j3h 4 роки тому +1

    지렁이가 게임 시작하면 아래로 가고 위 방향키를 눌러도 위로 가지를 않네요 그리고 왼쪽을 바라보고 있는 상황에서 오른쪽키를 누르면 오른쪽으로 안가요 반대로 못가는 상황인데 무슨 오류죠 ? ㅠㅠㅠ

    • @ruby338-j3h
      @ruby338-j3h 4 роки тому +1

      아 해결 했는데 게임 실행했을때 왼쪽위에 speed length 가 안뜨네요

    • @suanlab
      @suanlab  4 роки тому

      텍스트로 speed length 보여주는 함수른 작성하는 부분이 영상 뒷부분에 있는데... 따라하셨나요??

  • @ToMania318
    @ToMania318 4 роки тому +1

    ========== 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)

    • @suanlab
      @suanlab  4 роки тому

      round 함수 안에 괄호가 두개로 되어서 오류가 났네요. ^^

    • @ToMania318
      @ToMania318 4 роки тому +1

      @@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)
      이부분을 어떻게 수정해야 되나요? 지금상태에선 실행하면 검은화면만 나옵니다.

    • @suanlab
      @suanlab  4 роки тому

      코드 상단에 GRAY 전연변수를 정의하셔야 합니다.

  • @남김지훈-d4u
    @남김지훈-d4u 4 роки тому +1

    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'이렇게 뜨는데 뭐가 잘못된 걸까요? ㅜㅠ

    • @suanlab
      @suanlab  4 роки тому +1

      pygame.key.set_repeat으로 해주셔야 해요. ^^

  • @김예진-h5t
    @김예진-h5t 4 роки тому +1

    계속 검토했는데 위로 가려고 누르면
    TypeError: 'float' object is not subscriptable
    자꾸 이게 떠요ㅠ

    • @suanlab
      @suanlab  4 роки тому

      키보드 입력시 좌표값에 따라 이동하는데 move 부분에 코드를 확인해주세요.

  • @해미트리
    @해미트리 4 роки тому +1

    저도 아랫분이랑 같은 오류가 나는데요 ㅠㅠ 뭐가 문제인지 모르겠네요...
    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()
    꼭 좀 알려주시면 감사하겠습니다 ㅠ

    • @suanlab
      @suanlab  4 роки тому

      Python 객체 안에 속성으로 positions을 잘 정의하셨죠?

    • @해미트리
      @해미트리 4 роки тому

      @@suanlab 네... 그런것 같은데요. 아무리 영상이랑 비교해봐도 뭐가 잘못되었는지 잘 모르겠습니다...
      버전이 20. 뭐였던거 같은데 그게 오류가 나는데에 영향이 있을까요?
      원하신다면 전문을 적어드리겠습니다.

  • @배그스테이션
    @배그스테이션 4 роки тому +1

    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가 잘못 됬다고 합니다.
    어떻게 해야 하나요???
    빠른 답변 부탁드립니다.

    • @suanlab
      @suanlab  4 роки тому

      surface.fill(WHITE) 위에 python.control((RIGHT) 부분에 괄호가 잘못되서 나는 오류입니다. RIGHT 전에 괄호가 두개네요; 하나 지워주셔야해요 ^^

  • @readingtime321
    @readingtime321 3 роки тому +1

    줄 83, pygame.init() 할때 unindent does not match any other insentation level 이라 뜨는데 해결방법 알려주세요

    • @suanlab
      @suanlab  3 роки тому

      이건 들여쓰기를 잘못하셔서 나는 오류입니다.

  • @glchd
    @glchd 4 роки тому +1

    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
    >>>

    • @suanlab
      @suanlab  4 роки тому

      강의 초반부에 pygame 설치하는 부분이 있습니다. pip install pygame 명령어를 통해서 패키지를 설치해주셔야 합니다.

  • @project-man
    @project-man 5 років тому +4

    16년도에 저희 학교에서 DB 강의하신분을 유튜브에서 뵙네요 ㅋㅋㅋ 감사합니다

    • @suanlab
      @suanlab  5 років тому +1

      안녕하세요. 인하대 졸업생 이시군요? ㅋㅋ

    • @project-man
      @project-man 5 років тому +2

      @@suanlab 아직 3학년입니다ㅠ ㅎㅎ 교수님 수업 들었을 때는 군대도 가기 전이라.. 하하 이렇게 랜선으로도 지식 전달 받을 수 있어서 기쁩니다. 감사힙니다 ^^ 구독과 좋아요로 보답하겠습니다 ㅋㅋㅋㅋ

    • @suanlab
      @suanlab  5 років тому +3

      인하대에 자주 있으니 오프라인으로도 봐요 ^^

  • @신병-l8t
    @신병-l8t 4 роки тому +1

    저렇게 하면 계속 런할때 pygame 1.9.6
    Hello from the pygame community. www.pygame.org/contribute.html 이렇게 뜨고 실행이 안되는데 어떻게 해야되나요

    • @suanlab
      @suanlab  4 роки тому

      아무것도 실행되지 않는건, 게임 실행 코드로 이어지지 않는거 같아요.

    • @신병-l8t
      @신병-l8t 4 роки тому +1

      그럼 어떡해야 할까요? 계속 귀찮게 해서 죄송합니다 최대한 빨리 답변 주시길 바랄게요

    • @suanlab
      @suanlab  4 роки тому

      코드도 안보고 왜 안되는지 제가 예측을 해야 하는군요. ㅋㅋㅋ
      지금 예상되는건 if __name__ == '__main__': 부분을 잘 정의하신지 의심되네요.

  • @단승규
    @단승규 3 роки тому +1

    전 파이썬으로 직접하고 았는데요. 왜 창은 뜨는데 하야색 그건 안나오죠?

    • @suanlab
      @suanlab  3 роки тому

      창은 뜨는데 하얀색 배경이 없나요?
      혹시 배경색 칠해주는걸 해주셨나요?

  • @ilovepornhub7466
    @ilovepornhub7466 4 роки тому +1

    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
    >>> 왜 이게 뜰까요?

    • @suanlab
      @suanlab  4 роки тому

      코드 앞 부분에 ORANGE 전역변수 선언 안하셨어요?

  • @가이아어
    @가이아어 4 роки тому +3

    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.
    똑같이 했는데도 이런오류가 나요. 또 뱀이 화면 오른쪽 끝까지 안가요 ㅠㅠ

    • @suanlab
      @suanlab  4 роки тому

      해당 warning은 GRID_SIZE가 실수형이라서 나는겁니다. 계산 부분에서 int()함수로 감싸주셔서 형변환을 해보세요.
      그리고 뱀이 오른쪽 끝까지 안가는건, WINDOW 크기에 따라 이동을 제한했는데, 그걸 잘못하신거 같아요. 예를 들어 move 쪽 함수에서 WINDOW_HEIGHT와 WINDOW_WIDTH를 바꿔쓰시거나 한것 아닐까요?

  • @BP-hi7ky
    @BP-hi7ky 4 роки тому +1

    마지막에 while Ture: 할때 앞에 w가 빨개져서 안되는데 어떻게 하져?

    • @suanlab
      @suanlab  4 роки тому

      Ture가 아니라 True 입니다. ^^

    • @BP-hi7ky
      @BP-hi7ky 4 роки тому +1

      @@suanlab그래도 안되고 whlie 할떄 w가 빨게지면서invalid syntax 이라고 떠요

    • @suanlab
      @suanlab  4 роки тому

      그렇다면 while 문이 실행되기 전에 코드가 문제가 있어서 그렇게 뜨는겁니다.
      while문 위의 코드를 어떻게 하셨어요?

  • @제비-j6h
    @제비-j6h 4 роки тому +1

    만들고 실행도 되는데 먹이가 안뜨고 ㅠ
    움직이지도 않아여 도와주십쇼

    • @suanlab
      @suanlab  4 роки тому

      먹이도 안뜨고, 움직이지도 않는다면!
      게임 반복 구분인 while 안에 코드가 문제가 있는거 같아요.

  • @onthe7211
    @onthe7211 5 років тому +1

    line 62, in __init__
    self.color = ORANGE
    NameError: name 'ORANGE' is not defined
    line 89, in
    feed = Feed()
    이렇게 오류가 나오는데 어떻게 해결해야 하나요?

    • @suanlab
      @suanlab  5 років тому +1

      ORANGE 변수가 선언되지 않았네요.
      오타일수 있습니다.

    • @onthe7211
      @onthe7211 5 років тому

      @@suanlab 답장이 늦어서 죄송합니다.^^ ! 아직 초보라 잘 모르는데, 영상 보며 배우고 있습니다. 감사합니다.~~

  • @sogufhf
    @sogufhf 4 роки тому +1

    실행은 잘 되는데 이러고 자꾸 뭐가 떠요..
    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.

    • @suanlab
      @suanlab  4 роки тому

      GRID_SIZE가 정수가 아니라 실수값이라 warning이 뜹니다. int() 로 형변환을 해주세요.

  • @u0u482
    @u0u482 4 роки тому +1

    파일은 어떻게쓰는지..

    • @suanlab
      @suanlab  4 роки тому

      파일 쓰기요?
      Ctrl + S로 파일 저장이 됩니다.

  • @user-xt6ti5wd1m
    @user-xt6ti5wd1m 4 роки тому +1

    안녕하세요 혹시 여기서 살아남은 시간을 게임오버시에 출력하려면 어떻게 해야할까요 ?

    • @suanlab
      @suanlab  4 роки тому

      datetime 모듈을 사용하시면 됩니다.
      게임 오버때 측정한 시간 - 게임 시작때 측정한 시간

    • @user-xt6ti5wd1m
      @user-xt6ti5wd1m 4 роки тому +1

      @@suanlab 감사합니다 ㅠㅠ!

  • @기민한발놀림-u6z
    @기민한발놀림-u6z 5 років тому +1

    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
      @suanlab  5 років тому

      단순한 타입 오류네요. ^^
      근처 코드를 다 한번 봐야겠네용

    • @기민한발놀림-u6z
      @기민한발놀림-u6z 5 років тому +1

      @@suanlab 수십번을 봤는데... 빨리찾는법없나요??

    • @suanlab
      @suanlab  5 років тому

      UP값 정의된 부분 한번 봐보셔용

  • @mina-zs8gx
    @mina-zs8gx 3 роки тому +1

    강의 감사드립니다. 지렁이 몸통이 움직이지 않는 것은 왜일까요?
    while True 부분은 다 따라한 것 같은데...
    어렵습니다.

    • @suanlab
      @suanlab  3 роки тому

      move() 메소드 부분을 한번 살펴보실래요?

  • @aasm648
    @aasm648 4 роки тому +1

    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'
    또 뭐가 잘못된 걸까요?

    • @suanlab
      @suanlab  4 роки тому

      pygame.font.Font로 해주셔야 해요. ^^

  • @고경록-i6o
    @고경록-i6o 4 роки тому +3

    저는 pygame 버전이 1.9.6 인것 같은데, 6:32 부분에서 저장후 Run이 계속 제대로 안되서 알아보니. pygame.key_set_repeat(1,40) 를 pygame.key.set_repeat(1,40)로 바꾸니 되네요.

    • @태웅윤-q2t
      @태웅윤-q2t 4 роки тому +1

      어떻게 하셨나요? 자세히 알려주심 감사하겠습니다

    • @고경록-i6o
      @고경록-i6o 4 роки тому +1

      @@태웅윤-q2t 아... 별다른건 없습니다. 그냥 key_set 부분을 key.set으로 고치니 되었어요^^

  • @곽래호-y9q
    @곽래호-y9q 4 роки тому +1

    if __name__ == '__main__':
    python = Python()
    feed = Feed()
    이렇게 첬더니unindent does not match any outer indentation level 이라고 떠여

    • @suanlab
      @suanlab  4 роки тому

      파이썬은 탭으로 간격을 딱 맞추어서 띄어주셔야해요. ^^

  • @곰독
    @곰독 4 роки тому +1

    그 IDLE에 pygame 1.96 이라 나오며 커뮤니티 사이트 뜨고 새파일로 따라쳤는데 게임 실행창은 왜 안나올까요? python idle에는 나오는데 파이썬 실행창이 따로 뜨지 않는건 파이썬 문제인가요?

    • @suanlab
      @suanlab  4 роки тому

      아! F5키로 실행을 누르신거죠?

    • @곰독
      @곰독 4 роки тому +1

      @@suanlab 네

    • @suanlab
      @suanlab  4 роки тому

      게임 실행 함수를 호출하지 못한거 같은데...

    • @suanlab
      @suanlab  4 роки тому

      코드 앞에 간격이 영상과 일치한지 봐주실래요?

  • @주말만세
    @주말만세 5 років тому +1

    처음 기본 설정까지만 했는데
    File "C:/Users/Luke Kim/Desktop/python/game.py", line 1, in
    import pygame
    ModuleNotFoundError: No module named 'pygame'
    이렇게 뜨는군요.... 어떻게 된걸까요?

    • @suanlab
      @suanlab  5 років тому

      Pygame 모듈을 설치해주셔야해요. ^^
      pip install pygame

    • @주말만세
      @주말만세 5 років тому +1

      어떻게 설치하죠?ㅠㅠ

    • @suanlab
      @suanlab  5 років тому

      @@주말만세 command prompt 커맨드창 열고 pip install pygame 해주시면 됩니다. ^^

  • @deo1981
    @deo1981 4 роки тому +1

    안녕하세요
    다름이 아니라 창이 실행되자마자 닫혀서요.. 아직 window.blit(surface, (0, 0))까지 한 상태에요..
    아직 어떻게 할 지 명령해주지 않아서 그런건가요?

    • @suanlab
      @suanlab  4 роки тому

      네, pygame 종료되면서 꺼지나보네요. ^^

    • @deo1981
      @deo1981 4 роки тому +1

      @@suanlab 감사합니다^^

  • @Kawada021
    @Kawada021 5 років тому +2

    제가 만들면서 색깔이랑 객체이름을좀바꾸고 했거든요??근데 아무리 수정해봐도 계속 이문구가뜨네요
    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)

    • @suanlab
      @suanlab  5 років тому +1

      Snake 안에 def 된 메소드들은 간격에 따라 어디에 속하는지 정해지는데... 지금 move와 다른 메소드들이 너무 간격이 벌어져서 내부 메소드가 되어버렸어요...

    • @Kawada021
      @Kawada021 5 років тому +1

      @@suanlab 그럼 Class밑에 def랑간격을 똑같이 해줘야되나요?

    • @Kawada021
      @Kawada021 5 років тому +1

      @@suanlab 제가 파이썬배우기시작해서잘몰라서요ㅜㅜ

    • @Kawada021
      @Kawada021 5 років тому +1

      @@suanlab 하다보니까 해결 됬습니다!! 감사합니다!

    • @suanlab
      @suanlab  5 років тому +1

      네 맞습니다. ^^
      해결하셨군요 ^^

  • @cyj3808
    @cyj3808 4 роки тому +1

    저 오류는 안뜨는데 실행 시키면 안 움직이고 렌덤으로 위치바뀌는것만 무한 실행되요ㅠㅠ 뭐가 문제죠?? 코드를 다니깐 계속 삭제 되서 이렇게 답니다 ㅠㅠㅠㅠ

    • @suanlab
      @suanlab  4 роки тому

      메일 답장 했습니다. ^^

    • @cyj3808
      @cyj3808 4 роки тому

      @@suanlab 앗 감사합니닷!!!!!!!!

  • @대한민국인
    @대한민국인 Рік тому

    댓글에 있을까 하여 찾다가 못 찾아서 여쭤 볼게 있습니다 ㅠㅠ 게임 구동 잘 되고 재밌게 잘 배웠습니다 좋은 코드 감사합니다 그런데 x y 좌표 보던 중에 궁금증이 생겨서 문의 드립니다 . x y 좌표로 UP 이면 (0, 1)로 알고 있었는데 구현 코드 보니 (0, -1)이라 궁금증이 생겨서.. 어떤 원리 인지 궁금합니다.. 물론 구동은 제대로 되어 더 궁금증이 생깁니다.. 제가 이거 짜고나서 아 반대로 움직이는 건가 했는데 제대로 움직여서 ... 구글링 실력이 미흡해서 한 시간 찾다가 포기 했습니다.. 답변 기다리겠습니다!!

  • @thk1143
    @thk1143 3 роки тому +1

    LEFT가 -1,0 인것은 이해가 되는데 UP이 0,-1인 이유가 이해가 잘 안됩니다. y좌표가 -1이면 보통 그래프에서 아래이지 않나요? ㅠㅠ

    • @김동건-u3s
      @김동건-u3s 3 роки тому +2

      컴퓨터에서 는 x축과 y축은 우리가 수학에서 쓰는 것이 아니라 T 자 모양이라서 y축이 + 되면 밑으로 갑니다
      _________________________



    • @thk1143
      @thk1143 3 роки тому +1

      @@김동건-u3s 질문드리고 나서 다른코딩들보면서 그런가보다 하고있었는데 명쾌히 답변주셔서 너무 감사드립니다

  • @승준이어깨
    @승준이어깨 4 роки тому +1

    안녕하세요 3시간 동안 따라해서 수정하고 해서 만들었는데 막상 들어가보니 python이 feed에 데여도 feed위치가 바뀌지 않고 그대로 입니다 혹시 이유를 알수있을까요....?

    • @suanlab
      @suanlab  4 роки тому

      먹이를 먹어도 위치가 그대로 인거죠? 그럼 Feed 생성하는 부분의 코드가 랜덤하게 잘안되어있나봐요.

    • @승준이어깨
      @승준이어깨 4 роки тому

      @@suanlab 앗 혹시 나중에 코드를 보내면 봐주실수있나요...?

  • @jaehooh7466
    @jaehooh7466 4 роки тому +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

    • @suanlab
      @suanlab  4 роки тому

      관리자 권한이 없어서 폴더 생성이 안되는것처럼 보이네요.

  • @boxplus8609
    @boxplus8609 4 роки тому +1

    지렁이가 왼쪽 오른쪽으로 가려면 대각선으로 가고 위 아래는 아예 먹히지 않습니다.
    while True:
    이쪽은 오타가 없는거 같은데 왜이러는걸까요

    • @suanlab
      @suanlab  4 роки тому

      혹시 move 메서드 내에서 사용되는 방향 정의를 한 부분에 오타가 있는거 같아요.

  • @aasm648
    @aasm648 4 роки тому +1

    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라서 그럴까요?

    • @suanlab
      @suanlab  4 роки тому

      버전 문제는 아닌데, class Feed 정의 부분을 보여주실래요?

    • @aasm648
      @aasm648 4 роки тому

      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

    • @aasm648
      @aasm648 4 роки тому +1

      레이싱게임도 에러메시지 올렸는데 그것도 봐주세요.. 제발.. 하고싶어요.

    • @aasm648
      @aasm648 4 роки тому +1

      답글해주셔서 감사합니다.

    • @suanlab
      @suanlab  4 роки тому

      draw_object(), check_eat(), show_info() 함수는 Feed 클래스에 속한 메소드가 아니예요. 밖으로 빼주셔야 해요 ^^;

  • @Beak_nam
    @Beak_nam 4 роки тому +1

    Traceback (most recent call last):
    File "Untitled", line 1
    import pygame
    ImportError: No module named pygame 이렇게 떠요 ㅠㅠ

    • @suanlab
      @suanlab  4 роки тому

      pip install pygame 하셔서 라이브러리를 설치해주셔야합니다.