Turtle Game 5 - 벌레 생성 > Turtle 모듈로 게임 만들기

본문 바로가기

사이트 내 전체검색

이전으로Turtle 모듈로 게임 만들기

Turtle Game 5 - 벌레 생성

페이지정보

글쓴이 관리자 조회 33,648 조회 날짜 19-06-21 14:39 / U:19-06-26 15:33
댓글 0댓글

SNS 공유

  • 트위터로 보내기
  • 페이스북으로 보내기
  • 구글플러스로 보내기

내용

Turtle Game 5 - 벌레 생성

 

앞선 강좌에서 거북이와 울타리를 생성해서 거북이가 울타리 밖으로 나가지 못하는 코드를 구현하였다.

 

이제 거북이가 돌아다니면서 먹을 먹이(벌레)들을 생성하는 코드를 추가해 보자.

 

 

1. 벌레 생성

 

벌레도 거북이와 같은 방법으로 Turtle() 객체로 생성할 수 있다.

 

벌레를 생성하는 코드는 아래와 같다.

 

1) 벌레 생성 코드

bug = t.Turtle()
bug .color("red")
bug .shape("circle")
bug .penup()
bug .speed(0)
bug .setposition(-100, -100)

 

벌레 역시 거북이처럼 울타리 안에서 지속적으로 움직이게 만들어보자. 아래의 코드는 while True: 구문 속에 들어가야 한다.

 

2) 벌레 동작 코드

bug.forward(5)

 

if bug .xcor() > 300 or bug .xcor() < -300:
        bug .right(180)
    
    if bug .ycor() > 300 or bug .ycor() < -300:
        bug .right(180) 

 

 

전체 코드 - 이전 강좌의 코드에서 추가되거나 수정된 것은 붉은색으로 표시하였다.

import turtle as t

 

#스크린 객체 생성
screen = t.Screen()
#스크린 배경색 지정
screen.bgcolor("lightgreen")

 

#울타리 그리기
mypen = t.Turtle()
mypen.penup()
mypen.setposition(-300, 300)
mypen.pendown()
mypen.pensize(3)

 

for x in range(4):
    mypen.forward(600)
    mypen.right(90)


mypen.hideturtle()


bug = t.Turtle()
bug .color("red")
bug .shape("circle")
bug .penup()
bug .speed(0)
bug .setposition(-100, -100)

 

#Turtle 객체 p 생성
p = t.Turtle()
#p 객체의 모양을 거북이로 만들기
p.shape("turtle")
#p 객체 크기 설정
p.turtlesize(2,2)
#p 객체 색상 설정, 
#색상은 색상 이름 또는 색상 코드(#FFFFFF) 등을 이용하여 설정 할 수 있다.
p.color("blue")
#거북이를 따라다니는 선을 제거
#p.penup()

#거북이의 움직임 속도
speed = 1

 

def turnleft():
    p.left(30)

 

def turnright():
    p.right(30)

 

def increasespeed():
    global speed
    speed += 1

 

def decreasespeed():
    global speed
    speed -= 1

 

screen.listen()
screen.onkey(turnleft, "Left")
screen.onkey(turnright, "Right")
screen.onkey(increasespeed, "Up")
screen.onkey(decreasespeed, "Down")


while True:
    p.forward(speed)
    
    #울타리 체크
    if p.xcor() > 300 or p.xcor() < -300:
        p.right(180)
    
    if p.ycor() > 300 or p.ycor() < -300:
        p.right(180)
          
    bug.forward(5)
    if bug.xcor() > 300 or bug.xcor() < -300:
        bug.right(180)
    
    if bug.ycor() > 300 or bug.ycor() < -300:
        bug.right(180) 

 

실행화면 - Ctrl + F11

1269734546_1561148804.9406.png

 

 

 

2. 다수의 벌레 생성

 

1번에서 벌레 한마리를 생성해서 울타리 안에서 계속 움직이는 코드를 추가하였다. 이번에는 벌레 1마리가 아니라 여러마리를 만들어서 제각각 움직이는 코드를 만들어보자.

 

벌레는 생성하는 코드는 모두 같다. 다만 여러마리의 벌레를 만들기 위해서 벌레 객체를 리스트로 만든다. 나머지는 동일하다.

생성되는 벌레는 색상과 모양을 다양하게 만들도록 해보자.

 

1) 다수의 벌레 생성 코드

#벌레의 갯수 지정
maxBugs = 20

#벌레 리스트 생성
bugs = []

#벌레의 다양한 색상을 위해 색상 리스트 생성
colors = ['red','blue','purple','white','black', 'pink','#FFFF00']

#벌레의 다양한 모양을 위해 shape 리스트 생성
shapes = ['arrow', 'blank', 'circle', 'classic', 'square', 'triangle']

 

for count in range(maxBugs):
    #색상을 랜덤하게 선택
    c = random.randint(0,6)

    #모양을 랜덤하게 선택
    s = random.randint(0,5)

 

    #Turtle()객체를 생성하여 bugs 리스트에 하나씩 추가
    bugs.append(t.Turtle())
    bugs[count].color(colors[c])
    bugs[count].shape(shapes[s])
    bugs[count].penup()
    bugs[count].speed(0)

 

    #X좌표, Y좌표를 랜덤으로 생성해서 위치를 이동
    bugs[count].setposition(random.randint(-300, 300), random.randint(-300, 300))

 

    #0 ~ 360도까지 방향을 랜덤으로 생성
    bugs[count].right(random.randint(0,360))

 

random.randint(1, 100)은 1에서 100까지의 정수를 랜덤으로 반환한다.

random 모듈을 사용하기 위해서는 random 모듈을 import 하여야 한다.

random 함수에 대한 내용은 다음 링크의 7번에서 확인한다.  https://www.jbmpa.com/python_basic/13

 

2) 벌레 동작 코드

리스트로 만들어진 벌레 역시 모두 움직이도록 한다.  벌레가 리스트이므로 벌레 숫자만큼 for 문을 이용하여 움직이는 코드를 만든다. 아래의 코드는 while True: 구문 속에 들어가야 한다.

#벌레 움직이기 
for count in range(maxBugs):        
        
    bugs[count].forward(5)
    
    if bugs[count].xcor() > 300 or bugs[count].xcor() < -300:
        bugs[count].right(180)
            
     if bugs[count].ycor() > 300 or bugs[count].ycor() < -300:
        bugs[count].right(180)    

 

 

최종 전체코드

import turtle as t
import random

 

#스크린 객체 생성
screen = t.Screen()
#스크린 배경색 지정
screen.bgcolor("lightgreen")

#스크린의 그래픽 그리는 속도를 높임 
screen.tracer(2)

 

#울타리 그리기
mypen = t.Turtle()
mypen.penup()
mypen.setposition(-300, 300)
mypen.pendown()
mypen.pensize(3)

 

for x in range(4):
    mypen.forward(600)
    mypen.right(90)


mypen.hideturtle()


#Create bugs 
maxBugs = 20
bugs = []
colors = ['red','blue','purple','white','black', 'pink','#FFFF00']
shapes = ['arrow', 'blank', 'circle', 'classic', 'square', 'triangle']

 

for count in range(maxBugs):
    c = random.randint(0,6)
    s = random.randint(0,5)
    bugs.append(t.Turtle())
    bugs[count].color(colors[c])
    bugs[count].shape(shapes[s])
    bugs[count].penup()
    bugs[count].speed(0)
    bugs[count].setposition(random.randint(-300, 300), random.randint(-300, 300))
    bugs[count].right(random.randint(0,360))

 

#Turtle 객체 p 생성
p = t.Turtle()
#p 객체의 모양을 거북이로 만들기
p.shape("turtle")
#p 객체 크기 설정
p.turtlesize(2,2)
#p 객체 색상 설정, 
#색상은 색상 이름 또는 색상 코드(#FFFFFF) 등을 이용하여 설정 할 수 있다.
p.color("blue")
#거북이를 따라다니는 선을 제거
#p.penup()

#거북이의 움직임 속도
speed = 1

 

def turnleft():
    p.left(30)

 

def turnright():
    p.right(30)

 

def increasespeed():
    global speed
    speed += 1

 

def decreasespeed():
    global speed
    speed -= 1

 

screen.listen()
screen.onkey(turnleft, "Left")
screen.onkey(turnright, "Right")
screen.onkey(increasespeed, "Up")
screen.onkey(decreasespeed, "Down")


while True:
    p.forward(speed)
    
    #울타리 체크
    if p.xcor() > 300 or p.xcor() < -300:
        p.right(180)
    
    if p.ycor() > 300 or p.ycor() < -300:
        p.right(180)
        
    
    #다수의 벌레 움직이기
    for count in range(maxBugs):        
        
        bugs[count].forward(5)
    
        #울타리 체크
        if bugs[count].xcor() > 300 or bugs[count].xcor() < -300:
            bugs[count].right(180)
            #soundBounce()
            
        
        if bugs[count].ycor() > 300 or bugs[count].ycor() < -300:
            bugs[count].right(180)
   
   

 

다수의 거북이 객체가 생성되면 속도가 느려진다. screen.tracer(2)를 추가하여 그래픽에서 그림을 그리는 속도를 높이면 속도가 빨라진다. 

 

실행화면 - Ctrl + F11

1269734546_1561150405.6213.png

 

 

Turtle Game 5 - 벌레 생성 끝

댓글목록

댓글이 없습니다

게시물 검색
총 9 건 , 1 페이지
올서베이넷
무료 온라인 설문 사이트
OVITII
웹 프레젠테이션 도구
Copyright © JBMPA.com All rights reserved.
사이트 언어 선택
PC 보기