두근두근 파이썬 수업 7장 프로젝트 I.

Slides:



Advertisements
Similar presentations
최적화 문제 해결 현대 생산  운영관리 부산대학교 산업대학원 2012 년 2 학기 하병현.
Advertisements

취업, 막막하세요 ? 걱정되십니까 ? 성공취업으로 가는 길 『경기청년뉴딜』이 함께 동행해 드립니다 ~ 일시 : ~ 대상 : 2013 년 2 월 졸업예정자 ( 기 졸업자 포함 ) 로서 경기도 거주자 문의 ∙ 접수 : 취업지원센터
학생증 발급 안내. 2 목 차목 차목 차목 차 Ⅰ. 개요 Ⅱ. 모바일 학생증 1. 신청 및 발급 2. 신청 방법 Ⅱ. 스마트 학생증 (ID 카드 ) 1. 신청 및 발급 2. 신청 방법 3. 제출 서류 4. 유의 사항.
2013 년 목 차 용어의 정의 위기경보 수준 국가 생물테러 대응 체계도 반 · 팀별 소방의 임무.
Module1 PI 브랜딩과 연출 - 3 차시 - 김효진 강사 Color consultant.
취업성공을 위한 이미지 up-grade 프로젝트 송파 행복나눔 일자리센터.
☞ 전자출결 사용자 안내 “학생용” 전자출결 앱 다운로드 [안드로이드폰] Play 스토어 다운로드 [아이폰]
엠보팅 주민참여예산 투표방법 안내 ■ 앱에서 투표하기 1. 핸드폰 전면에서 앱스(삼성) 찾아 누르기
이 자료는 확인 할 수 있습니다. Python Turtle with 함수 휘문고등학교 컴퓨터부 민경현 이 자료는 확인 할 수 있습니다.
두근두근 파이썬 수업 7장 프로젝트 I.
HTML과 CSS HTML과 CSS 세미나에 오신 것을 환영합니다.
HTML과 CGI 프로그래밍 PHP 웹 프로그래밍 (PHP Web Programming) 문양세
두근두근 파이썬 수업 4장 자료의 종류에는 어떤 것들이 있나요?.
두근두근 파이썬 수업 9장 리스트와 딕셔너리.
J2ME(Java 2 Micro Edition) 무선 장치용 UI의 핵심 컴포넌트
컬러 LED바 이해하기 목차 재료준비 및 브레드 보드 배선 구성하기 컬러 LED바 이해 및 프로그램 실습 응용 작품 만들기.
Red Color Detection Course ChanYoung Kim
안녕하십니까? 저는 컴퓨터 응용과학부 98학번 이민호 입니다.
2017년 하계 경성 프로그래밍 교육 (5/5) 경성대학교 공과대학 소프트웨어 학과.
Red Color Detection Course ChanYoung Kim
Clinical Urinalysis Analyzer
HTML5+CSS3 실무 테크닉 김은기 저.
두근두근 파이썬 수업 13장 객체란 무엇인가요?.
두근두근 파이썬 수업 13장 객체란 무엇인가요?.
객체지향적인 프로그래밍에 대한 이해 클래스와 객체의 개념에 대한 이해
작업장에서 불의의사고로 절단사고가 발생했다면
픽킹 문시몬.
두근두근 파이썬 수업 7장 코드를 함수로 모아봅시다..
두근두근 파이썬 수업 14장 프로젝트 II.
-제어문, 함수, 클래스- IS lab. 김건영 Python -제어문, 함수, 클래스- IS lab. 김건영
노출영역 노출영역의 해당 배너들 클릭 시 실제 기획전 페이지로 이동됩니다..
개정판 누구나 즐기는 C언어 콘서트 제6장 반복문 출처: pixabay.
두근두근 파이썬 수업 5장 조건을 따져봅시다..
모음(母音) 10개 양성(陽性)모음 음성(陰性)모음 중성모음 ㅏ(ㅑ) ㅓ(ㅕ) ㅗ (ㅛ) ㅜ (ㅠ) ㅣ ㅡ
제1장 상수도(上水道) 시설계획 ② 취수문(intake gate)에 의한 방법
키타노카시쇼쿠닌(北の菓子職人) - 「오호츠크의 소금 맛」
SMIL.
캐리어 결합 보스턴 폴딩백 여행 후 늘어난 짐 때문에 난처할 때 있으셨죠? 바로 그때, 폴딩백을 꺼낼 타이밍!!
6장 데이터 타입(3) 순천향대학교 컴퓨터공학부 하 상 호.
DEATH NOTE <BOARD GAME>
불(FIRE)이란? 산소공급차단 질식소화 가연물 제거 제거소화 열 원 냉 각 열원냉각 불 불을 끄기 위해 명 칭 산 소 가연물
도형의 닮음 Ⅵ-1 도형의 닮음 (1) 닮음과 닮은 도형 닮음
자료구조: CHAP 7(2) 트리 순천향대학교 컴퓨터공학과 하 상 호.
두근두근 파이썬 수업 14장 프로젝트 II.
3D Shapes 3개 핵심 Properties가 존재 1.Material 표면의 재질을 설정합니다.
쓰레기를 바르게 처리하기 바른 생활 1학년 2학기 4.쓰레기를 바르게 처리해요(4/4) [본차시의 주요내용]
쓰레기분리해서 버리는 방법 알기 바른 생활 1학년 2학기 4.쓰레기를 바르게 처리해요(3/4) [본차시의 주요내용]
두근두근 파이썬 수업 2장 변수를 소개합니다..
파일 입출력과 그리기.
운동역학특론 SPORT BIOMECHANICS
교육방법 및 평가방법 안내.
그린토마토 앱 사용자 메뉴얼.
빛 의 합 성 과 학 1 학년 Ⅱ. 빛 > 2. 빛의 색( 8/8 ) [초기 화면]
Rendering Lecture 따라하기 제작:이경복(한밭대학교).
Radargrammetry 적용을 위한 위도에 따른 KOMPSAT-5 궤도 분석 강원대학교 지구물리학과 장 소 영.
기본 테이블세팅(로맨틱) 푸드스타일리스트 전공 김선아.
(생각열기) 횡파와 종파를 구분하는 기준은 무엇인가?? 답 : 진동하는 방법의 차이
혼색 color mixture.
3. 2차원 운동학 ; 벡터 © 2014 Pearson Education, Inc..
5차시: 로봇 주행 실습 및 미션 수행하기 준비물 SPL-Duino 보드 (조도센서 내장)
조직도.
[색채지각 ] Color Perception.
색채의 공감각 맛 음 냄새 촉감 5. 모양.
5. 영상 합성.
아두이노 서보로봇 제어 (블루투스 스마트폰 조종) -03차시-
Hoons닷넷 Windows8 Study 1 조. 양수영 – yangsoo87 (조장).
Chapter 2 직선운동.
논리회로 설계 및 실험 9주차.
컴퓨터 프로그래밍 및 실습 – 5주차 내장함수 / 외장함수 (1)
Spring, 2019 School of CSE Pusan National University
Presentation transcript:

두근두근 파이썬 수업 7장 프로젝트 I

이번 장에서 만들 프로그램 (1) 거북이 경주 게임을 작성해본다. 난수를 이용하여야 한다. (2) 간단한 애니메이션을 만들어본다

난수 발생하기 난수(random number)는 게임과 시뮬레이션에 필수적이 다. >>> import random >>> random.random() # 0.0부터 1.0보다 작은 실수 난수 0.8345121533431609 >>> random.randint(1, 100) # 1부터 100 사이의 정수 난수 49

리스트에서 랜덤하게 선택 >>> import random >>> random.choice('abcdefghij') # 하나의 랜덤한 항목 'c'

터틀 그래픽 함수들

거북이 경주 게임 #1 거북이 2마리를 만들려면 다음과 같이 한다. import turtle t1 = turtle.Turtle() # 첫 번째 거북이 t2 = turtle.Turtle() # 두 번째 거북이

거북이 경주 게임 #2 거북이들을 구별하기 위하여 색상을 다르게 하고 모양도 다르게 하자. t1.color("pink") 거북이들을 구별하기 위하여 색상을 다르게 하고 모양도 다르게 하자. t1.color("pink") t1.shape("turtle") t1.shapesize(5) t1.pensize(5) t2.color("blue") t2.shape("turtle") t2.pensize(5)

거북이 경주 게임 #3 출발점에 세우기 t1.penup() t1.goto(-300, 0) t2.penup() (0, -500)

거북이 경주 게임 #4 100번 정도 반복하면서 한 번 반복할 때마다 난수만큼 이 동하도록 하자. for i in range(100): # 100번 반복한다. d1 = random.randint(1, 60) # 1부터 60 사이의 난수를 발생한다. t1.forward(d1) # 난수만큼 이동한다. d2 = random.randint(1, 60) # 1부터 60 사이의 난수를 발생한다. t2.forward(d2) # 난수만큼 이동한다.

외부 이미지를 사용하자 import turtle # 터틀 그래픽 모듈을 불러온다. import random # 난수 모듈을 불러온다. screen = turtle.Screen() image1 = "d:\\rabbit.gif" image2 = "d:\\turtle.gif" screen.addshape(image1) screen.addshape(image2) t1 = turtle.Turtle() # 첫 번째 거북이를 생성한다. t1.shape(image1) t2 = turtle.Turtle() # 두 번째 거북이를 생성한다. t2.shape(image2)

전체 소스 import turtle # 터틀 그래픽 모듈을 불러온다. import random # 난수 모듈을 불러온다. screen = turtle.Screen() image1 = "d:\\rabbit.gif" image2 = "d:\\turtle.gif" screen.addshape(image1) screen.addshape(image2) t1 = turtle.Turtle() # 첫 번째 거북이를 생성한다. t1.shape(image1) t1.pensize(5) # 팬의 두께를 5로 한다. t1.penup() # 펜을 든다. t1.goto(-300, 0) # (-300, 0) 위치로 간다.

전체 소스 t2 = turtle.Turtle() # 두 번째 거북이를 생성한다. t2.shape(image2) t2.pensize(5) # 팬의 두께를 5로 한다. t2.penup() # 펜을 든다. t2.goto(-300, -200) # (-300, -100) 위치로 간다. t1.pendown() # 첫 번째 거북이의 펜을 내린다. t2.pendown() # 첫 번째 거북이의 펜을 내린다. t1.speed(1) t2.speed(1)

전체 소스 for i in range(100): # 100번 반복한다. d1 = random.randint(1, 60) # 1부터 60 사이의 난수를 발생한다. t1.forward(d1) # 난수만큼 이동한다. d2 = random.randint(1, 60) # 1부터 60 사이의 난수를 발생한다. t2.forward(d2)

애니메이션 만들기 애니메이션도 쉽게 제작할 수 있다. 다음과 같은 애니메 이션을 작성해보자. 여러분은 이 애니메이션을 자신의 홈 페이지에서 사용하거나 동영상 제작에도 사용할 수 있다.

태극 무늬 그리는 함수 def draw_shape(radius, color1): t.left(270) t.width(3) t.color("black", color1) t.begin_fill() t.circle(radius/2.0, -180) t.circle(radius, 180) t.left(180) t.circle(-radius/2.0, -180) t.end_fill()

태극 무늬 그리는 함수 t= turtle.Turtle() t.reset() draw_shape(200, "red") t.setheading(180) draw_shape(200, "blue")

애스터로이드 게임 우리의 우주선을 충돌시켜서 소행성을 파괴하는 게임인 애스터로이드를 제작하고자 한다. 우리의 우주선은 “거 북이“ 형태로 하자. 소행성은 ”원”으로 한다.

우리 우주선 만들기 import turtle import random import math player = turtle.Turtle() player.color("blue") player.shape("turtle") player.penup() player.speed(0) screen = player.getscreen()

소행성 만들기 a1 = turtle.Turtle() a1.color("red") a1.shape("circle") a1.penup() a1.speed(0) a1.goto(random.randint(-300, 300), random.randint(-300, 300)) a2 = turtle.Turtle() a2.color("red") a2.shape("circle") a2.penup() a2.speed(0) a2.goto(random.randint(-300, 300), random.randint(-300, 300))

이벤트 처리하기 def turnleft(): player.left(30) # 왼쪽으로 30도 회전한다. def turnright(): player.right(30) # 오른쪽으로 30도 회전한다. screen.onkeypress(turnleft, "Left") screen.onkeypress(turnright, "Right") screen.listen()

이동하기 def play(): player.forward(2) # 2픽셀 전진 a1.forward(2) screen.ontimer(play, 10) # 10ms가 지나면 play()를 다시 호출 screen.ontimer(play, 10)

앵그리 터틀 게임 만들기 앵그리 버드와 유사한 게임 “앵그리 터틀”을 제작하여 보 자. 공을 발사하여서 초기 속도와 초기 각도에 의하여 비 행하다가 목표물에 맞으면 성공이다.

많은 변수가 필요하다. int v; - 거북이의 속도이다. int vx; - 거북이의 x 방향 속도이다. int vy; - 거북이의 y 방향 속도이다. int x; - 거북이의 현재 x좌표이다. int y; - 거북이의 현재 y좌표이다.

다음과 같이 가정하자. vx; 초기 속도에서 변하지 않는다. vy; 초기 속도에서 중력 가속도 만큼 점점 느려진다. vy vx

vx, vy의 계산 vx = vx vy = vy - 10

초기 속도 vx = velocity * math.cos(angle * 3.14 / 180.0) vy = velocity * math.sin(angle * 3.14 / 180.0)

소스 코드 import turtle import math player = turtle.Turtle() player.shape("turtle") screen = player.getscreen() def turnleft(): player.left(5) # 왼쪽으로 5도 회전 def turnright(): player.right(5) # 오른쪽으로 5도 회전

소스 코드 def fire(): x = 0 y = 0 velocity = 50 # 초기 속도 50픽셀/sec angle = player.heading() # 초기 각도 vx = velocity * math.cos(angle * 3.14 / 180.0) # 도 -> 라디안 vy = velocity * math.sin(angle * 3.14 / 180.0) # 도 -> 라디안 while player.ycor() >= 0 : # y좌표가 음수가 될 때까지 vx = vx vy = vy - 10 x = x + vx y = y + vy player.goto(x, y) screen.onkeypress(turnleft, "Left") screen.onkeypress(turnright, "Right") screen.onkeypress(fire, "space") # 사용자가 스페이스키를 누르면 screen.listen()