[파이썬 강의] 45강. 카드 짝 맞추기 게임 만들기 | 터틀 그래픽 모듈

Поделиться
HTML-код
  • Опубликовано: 11 ноя 2024

Комментарии • 26

  • @코드덤
    @코드덤  3 года назад

    다른 에디터를 사용하시는 분들은, 코드 맨 마지막에 t.done()을 추가해 주셔야 터틀 그래픽 창이 바로 닫히지 않습니다~총 20가지 프로젝트를 통해 파이썬의 기초를 다져 나갈 수 있는 파이썬 터틀 그래픽 강좌를 만나보세요! 숨은 터틀 찾기, 축구 게임, 수도 맞히기 퀴즈, 청기 백기 게임, 타로 운세 보기, 맞춤법 폭탄 게임, 미로 탈출 게임, 똥 피하기 게임 등 총 20가지 프로젝트를 만들어 나가는 과정입니다. [티처블 패키지] codethem.co.kr/p/turtle_package [인프런 패키지] www.inflearn.com/roadmaps/576 [유튜브 멤버십] : 구독버튼 옆의 "가입"버튼을 클릭해 주세요~ [티처블 1편] codethem.co.kr/p/turtle1 [인프런 1편] www.inflearn.com/course/파이썬-터틀-1?inst=03d45d6e [티처블 2편] codethem.co.kr/p/turtle2 [인프런 2편] www.inflearn.com/course/파이썬-터틀-2?inst=6c8945fe

  • @DenisJung
    @DenisJung Год назад +1

    저는 20년차 전문 컴퓨터 프로그래머 이자 코딩 교재 7권을 집필한 저자입니다. 파이썬은 제 전문분야가 아니라서 학생들 가르치려고 여러 교재를 탐독하였는데요, 그 중에서 이 채널이 제일 좋네요. 저를 믿으세요. 이 강좌가 제일 좋습니다.

    • @코드덤
      @코드덤  Год назад

      와! 교재 7권이라니! 멋지십니다~ ^^ 가치있게 봐 주셔서 너무나 감사드립니다! 행복가득가득한 순간순간 만들어나가시길 바랍니다~

  • @_jung._.min_
    @_jung._.min_ 2 года назад +1

    좋은 영상 감사합니다!!!!

    • @코드덤
      @코드덤  2 года назад

      함께 해주셔서 감사합니다. 그동안 다른 일로 정신이 없어서, 그 사이 해가 바뀌었네요~ 오늘도 멋진 하루 만들어 나가세요~!

  • @톡톡다모여마켓
    @톡톡다모여마켓 8 месяцев назад

    아이들 수업용으로 작성하고 있는데 default_img = 'default_image.gif'에서 경로나 파일이 없다고 에러가 납니다. default_image.gif가 같은 폴더에 있습니다.

  • @세이바라기
    @세이바라기 11 месяцев назад

    코드에서 요소들은 무엇이 있나요 요소들 간단히 설명해주세요 ㅜㅜ

  • @박민균-x5t
    @박민균-x5t Год назад

    화면에 나오는 값을 출력하려고 할떄 false는 왜 쓰는건가요..?

  • @윤홍기-i5g
    @윤홍기-i5g Год назад

    혹시 12번의 시도 끝에 카드를 다 매칭 하지 못하여 gameover이 뜬 후 그 밑에 재시작 버튼을 만들어서 터미널로 가지 않고 재시작이 자동으로 되게 하는 코드를 만들고 싶은데 어떻게 코드를 추가하면 될까요 ㅠ?

  • @김동현-r6e7p
    @김동현-r6e7p 2 года назад +1

    안녕하세요 영상이 도움이 많이 되고 있습니다.
    그런데 영상과 똑같이 썼는데도 불구하고 창이 열렸다가 바로 닫힙니다.
    t.done()도 썼구요...
    실행할때마다
    Traceback (most recent call last):
    File "c:\Users\Administrator\Desktop\python wrok space\game.py", line 70, in
    new_turle.up()
    TypeError: penup() missing 1 required positional argument: 'self'
    이렇게 뜨면서 실행이 안되더라구요...
    혹시 해결해 줄실수 있나요??

    • @코드덤
      @코드덤  2 года назад

      답변이 많이 늦었네요~ 요즘 다른 일로 정신이 없어서 오랜만에 들어 왔습니다. new_turle.up() 대신, new_turle.penup()으로 사용하시면 문제 해결 되실 거예요. 사용하시는 에디터에 따라 이런 문제가 생길 수 있습니다.

  • @user-qv9yk1nk7j
    @user-qv9yk1nk7j 2 года назад +1

    맥북으로는 이미지 저장을 어떡해 해야할까요
    이미지 불러오는 작업이 안되네요..

    • @코드덤
      @코드덤  2 года назад

      답글이 많이 늦었네요^^ turtle의 addshape과정은 맥이나 윈도우가 동일합니다. 이미지 파일 경로와 gif파일이 맞는지 한번 더 확인하시면 될 듯 합니다. 이미지 경로를 적을 때, "/Users/사용자이름/Downloads/img.gif" 형식으로 해당 이미지 파일이 저장된 절대 경로로 한번 시도해 보세요~

  • @불꺼진전등
    @불꺼진전등 Год назад

    카드를 다른것을 넣고싶은데 gif사진을 써도 오류가뜨는거 어떻게하는게 좋을까요ㅠㅠ

    • @코드덤
      @코드덤  Год назад

      gif 저장 방식 때문인 듯 합니다. 해당 이미지를 그림판에서 gif로 재저장해서 다시 시도해 보시면 되실 거예요. 이미지 사이즈도 적당한 사이즈로 변경 후 저장해서 사용해 보세요~

  • @이은주-x2h
    @이은주-x2h 2 года назад

    안녕하세요 파이썬 왕초보인데 영상이 정말 많은 도움이 됐습니다!!!
    그런데 제공해주신 이미지로는 문제 없이 작동되는데 제가 지정한 사진으로는 되지 않습니다ㅠㅠ 똑같이 100x100사이즈의 gif 이미지로 사용했는데 이미지를 찾을수없다고 나오는데 이유를 알 수 있을까요??

    • @코드덤
      @코드덤  2 года назад +1

      이미지 경로를 제대로 지정했는지, 폴더명과 이미지명에 오타는 없는지 한번 확인해 보세요~ 파이썬 파일과 동일한 폴더내에 이미지 폴더를 위치시키면 실수를 줄일 수 있어요! 꼭 성공적으로 완성하시길 바라겠습니다!!

    • @이은주-x2h
      @이은주-x2h 2 года назад

      @@코드덤 jpg이미지를 컴퓨터에서 gif로 다시저장했을 때는 오류가 났지만 똑같은 jpg이미지 두장을 이어붙여서 gif로 만들어서 사용했더니 정상적으로 작동했습니다! 똑같은 .gif 이미지인데 어떤 차이점이 있는건가요??

  • @송승헌-x7e
    @송승헌-x7e 2 года назад

    ㅎㅎ 완성을 했는뎅 막 클릭하다 보니
    오류 리포트
    01. 동일한 카드를 연속으로 눌리면 점수가 계속올라가는것,
    02. 이미 맞춘 카드 클릭후에 틀린그림과 누루게 되면 사라지는 현상
    03. 성공후 여러번 다른곳 클릭하게 되면 성공 및 game over가 동일하게 노출되는 현상.. ㅠㅠ

  • @GAJAMI23
    @GAJAMI23 2 года назад

    실행을시키면 예외가 발생했습니다.IndexErrow X list index out of range라고 뜨는데 어떡하죠?

  • @자몽허니블랙티-l7x
    @자몽허니블랙티-l7x 2 года назад

    import turtle as t
    import random
    import time
    def find_card(x,y):
    min_idx=0
    min_dis=100
    for i in range(16):
    distance=turtles[i].distance(x,y)
    if distance

    • @코드덤
      @코드덤  2 года назад

      오타가 여러 군데 있습니다. find_card 함수 호출도 ind_card로 되어 있고, 이 밖에 오타가 여러 군데 있으니, 오타 및 대소문자 구분 꼼꼼히 하시면서, 천천히 처음부터 다시 만들어 보시는 것이 좋을 듯 합니다. 영상에서 중간 중간 테스트를 할 때 반드시 같이 테스트를 진행하셔야 합니다. 그 과정에서 오류가 발생할 경우 그 오류를 해결 하시고 다음으로 넘어가셔야 하세요. 그렇지 않으면 오류를 잡는데, 더 많은 시간을 소모하게 되실 거예요.

  • @yawnzznyeonjuni
    @yawnzznyeonjuni 2 года назад +1

    import turtle as t
    import random
    import time
    def find_card(x,y):
    min_idx = 0
    min_dis = 100
    for i in range(16):
    distance = turtles[i].distance(x, y)
    if distance < min_dis:
    min_dis = distance
    min_idx = i
    return min_idx
    def score_update(m):
    score_pen.clear()
    score_pen.write(f"{m} {score}점/{attempt}번 시도",False,"center",("",15))
    def result(m):
    t.goto(0,-60)
    t.write(m, False, "center", ("",30,"bold"))


    def play(x,y):
    global click_num
    global first_pick
    global second_pick
    global attempt
    global score
    if attempt == 12:
    result("Game Over")
    else:
    click_num += 1
    card_idx = find_card(x,y)
    turtles[card_idx].shape(img_list[card_idx])
    if click_num == 1:
    first_pick = card_idx
    elif click_num == 2:
    second_pick == card_idx
    click_num = 0
    attempt += 1
    if img_list[first_pick] == img_list[second_pick]:
    score += 1
    score_update("정답")
    if score == 8:
    result("성공")

    else:
    score_update("오답")
    turtles[first_pick].shape(default_img)
    turtles[second_pick].shape(default_img)


    t.bgcolor("pink")
    t.setup(700,700)
    t.up()
    t.ht()
    t.goto(0,280)
    t.write("Dessert Memory Game",False,"center",("",30,"bold"))
    # 점수 펜 객체 생성
    score_pen = t.Turtle()
    score_pen.up()
    score_pen.ht()
    score_pen.goto(0,230)
    #터틀 객체 생성
    turtles = []
    pos_x = [-210,-70,70,210]
    pos_y = [-250,-110,30,170]
    for x in range(4):
    for y in range(4):
    new_turtle = t.Turtle()
    new_turtle.up()
    new_turtle.color("pink")
    new_turtle.speed(0)
    new_turtle.goto(pos_x[x],pos_y[y])
    turtles.append(new_turtle)
    default_img = "images/default_img.gif"
    t.addshape(default_img)
    img_list = []
    for i in range(8):
    img = f"images/img{i}.gif"
    t.addshape(img)
    img_list.append(img)
    img_list.append(img)
    random.shuffle(img_list)
    for i in range(16):
    turtles[i].shape(img_list[i])
    time.sleep(3)
    for i in range(16):
    turtles[i].shape(default_img)
    click_num = 0 # 클릭 횟수 ( 매 2회 클릭마다 정답체크)
    score = 0 #점수
    attempt = 0 #시도한 횟수
    first_pick = "" # 첫 번째 클릭한 이미지
    second_pick = "" # 두 번째 클릭한 이미지
    t.onscreenclick(play)
    t.done()
    뭐가 틀린건가요ㅠㅠㅠ
    클릭해도 성공인지 안뜨고 틀렸을 때 다시 default 이미지로 변경이 안됩니다ㅠㅠ

    • @코드덤
      @코드덤  2 года назад

      play 함수내,
      elif click_num == 2:
      second_pick == card_idx (==이 아닌 =으로 바꿔야 해요.)
      click_num = 0
      attempt += 1
      second_pick == card_idx 을 second_pick = card_idx 로 바꾸시면 되실 거예요~ 이런 실수는 쉽게 눈에 안 들어오죠^^ 이번엔 꼭 성공하길 바랄께요~ ^^

    • @비틀주
      @비틀주 8 месяцев назад

      @@코드덤 감사합니다

  • @swhy9124
    @swhy9124 5 месяцев назад

    import turtle as t
    import random
    import time
    def find_card(x,y):
    min_idx = 0
    min_dis = 100
    for i in range(16):
    distance = turtles[i].distance(x, y)
    if distance < min_dis:
    min_dis = distance
    min_idx = i
    return min_idx
    def score_update(m):
    score_pen.clear()
    score_pen.write(f"{m} {score}점/{attempt}번 시도",False,"center",("",15))
    def result(m):
    t.goto(0,-60)
    t.write(m, False, "center", ("",30,"bold"))
    def play(x,y):
    global click_num
    global first_pick
    global second_pick
    global attempt
    global score
    if attempt == 12:
    result("Game Over")
    else:
    click_num += 1
    card_idx = find_card(x,y)
    turtles[card_idx].shape(img_list[card_idx])
    if click_num == 1:
    first_pick = card_idx
    elif click_num == 2:
    second_pick = card_idx
    click_num = 0
    attempt += 1
    if img_list[first_pick] == img_list[second_pick]:
    score += 1
    score_update("정답")
    if score == 8:
    result("성공")
    else:
    score_update("오답")
    turtles[first_pick].shape(default_img)
    turtles[second_pick].shape(default_img)
    t.bgcolor("pink")
    t.setup(700,700)
    t.up()
    t.ht()
    t.goto(0,280)
    t.write("Dessert Memory Game",False,"center",("",30,"bold"))
    score_pen = t.Turtle()
    score_pen.up()
    score_pen.ht()
    score_pen.goto(0,230)
    #터틀 객체 생성
    turtles = []
    pos_x = [-210,-70,70,210]
    pos_y = [-250,-110,30,170]
    for x in range(4):
    for y in range(4):
    new_turtle = t.Turtle()
    new_turtle.up()
    new_turtle.color("pink")
    new_turtle.speed(0)
    new_turtle.goto(pos_x[x],pos_y[y])
    turtles.append(new_turtle)
    default_img = "images/default_img.gif"
    t.addshape(default_img)
    img_list = []
    for i in range(8):
    img = f"images/img{i}.gif"
    t.addshape(img)
    img_list.append(img)
    img_list.append(img)
    random.shuffle(img_list)
    for i in range(16):
    turtles[i].shape(img_list[i])
    time.sleep(3)
    for i in range(16):
    turtles[i].shape(default_img)
    click_num = 0 # 클릭 횟수 ( 매 2회 클릭마다 정답체크)
    score = 0 #점수
    attempt = 0 #시도한 횟수
    first_pick = "" # 첫 번째 클릭한 이미지
    second_pick = "" # 두 번째 클릭한 이미지
    t.onscreenclick(play)
    t.done()
    맥으로 하고있는데 사진이 안떠서요ㅠㅠ 이미지 경로가 잘못된건가요??