두근두근 파이썬 수업 14장 프로젝트 II.

Slides:



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

2 장 자료형 및 연산자 - 김욱동 -. 목 차목 차  변수  자료형  유니코드  리스트  튜플  세트  사전  부울  얕은 / 깊은 복사.
Python RaspberryPi Sejin Oh. Raspberry Pi Python  참과 거짓  Python 자료형의 참과 거짓을 구분 짓는 기준은 다음과 같다. 2 참과 거짓 자료형참 or 거짓 “” 가 아닌 문자열 ( 예 : “python”) 참 “” 거짓.
시스템소프트웨어 김 영욱 양 오석. 목적  라즈베리파이에서 GPIO 를 이용하여 초음파 센서를 연결하고 거리를 측정해 일 정한 거리안에 사람이 들어오면 파이 카메라를 이용하여 사진을 찍고 데이터 베 이스에 올려 웹에서 사진을 보고 검색을.
2013 년 목 차 용어의 정의 위기경보 수준 국가 생물테러 대응 체계도 반 · 팀별 소방의 임무.
Web Project 작업3: Design기획 Article 토론 Group Project 토론
上海華東師大 연수설명회.
Six Thinking Hats
일시 : 2002년 6월 18일 주관 : 한국 기독교 장로회 경기 노회 정보통신부 강사 : 한창희
숫자에 커서를 두고 마우스 오른쪽 클릭 다른이름으로 저장
CHAPTER 11. 자바스크립트와 캔버스로 게임만들기.
두근두근 파이썬 수업 7장 프로젝트 I.
파이썬 클래스 이해하기-2 파이썬을 활용한 금융 데이터 분석 기초 및 심화 과정 1 1.
CHAPTER 4. CSS 스타일시트 기초.
HTML과 CGI 프로그래밍 PHP 웹 프로그래밍 (PHP Web Programming) 문양세
원정초등학교 5학년1반 48번 윤민정.
두근두근 파이썬 수업 9장 리스트와 딕셔너리.
제6주. 광합성 색소분리 및 측정 생물학 실험.
컬러 LED바 이해하기 목차 재료준비 및 브레드 보드 배선 구성하기 컬러 LED바 이해 및 프로그램 실습 응용 작품 만들기.
시각과 인지.
2017년 하계 경성 프로그래밍 교육 (5/5) 경성대학교 공과대학 소프트웨어 학과.
GUI Programming - Part 2 ( GUI for Python - wxPython )
HTML5 웹 프로그래밍 입문 (개정판) 5장. 고급 표현을 위한 CSS3 활용.
시간대별 점등제어 계획 철새 비도래시기 춘계[3~5월] / 하계[6~8월] / 추계[9~10월]
광고 심리학 – 노출의 전략 강정국.
두근두근 파이썬 수업 13장 객체란 무엇인가요?.
두근두근 파이썬 수업 13장 객체란 무엇인가요?.
발로 하는 파이썬 세미나 안녕하세요. 저는 발로 하는 파이썬 세미나를 발표할….
성탄절을 향한 길에서.
한 겹 한 겹 쌓아 올린 고순도의 꽃이 입술에 피어나다!
-제어문, 함수, 클래스- IS lab. 김건영 Python -제어문, 함수, 클래스- IS lab. 김건영
글꼴관련 태그 오산대학 컴퓨터정보과 김 영 권.
OpenGL Project 조민정 장선례.
학습목표 학습목차 홈페이지에 색상을 표현하는 방법 이해할 수 있습니다.
두근두근 파이썬 수업 10장 tkinter로 GUI 만들기.
Chapter 04 인증 기술과 접근 통제.
인터페이스 살펴보기(1/2) 기본 작업환경의 명칭 Adobe Photoshop CS3 메뉴바 도구막대 WorkSpace
캐리어 결합 보스턴 폴딩백 여행 후 늘어난 짐 때문에 난처할 때 있으셨죠? 바로 그때, 폴딩백을 꺼낼 타이밍!!
HDTV 영상제작의 변화 발표조:10조.
두근두근 파이썬 수업 11장 파일을 사용해봅시다..
컴퓨터 그래픽 I 영화 홍보 사이트 분석 과목 : 컴퓨터 그래픽 I 담당교수 : 손애경 교수님 학과 : 정보처리과 1반(A1)
불(FIRE)이란? 산소공급차단 질식소화 가연물 제거 제거소화 열 원 냉 각 열원냉각 불 불을 끄기 위해 명 칭 산 소 가연물
도형의 닮음 Ⅵ-1 도형의 닮음 (1) 닮음과 닮은 도형 닮음
【 6월 1일 】 (‘오늘의 용기 내일의 희망’ 중에서...)
두근두근 파이썬 수업 14장 프로젝트 II.
제 4 장 클래스 작성 Lab 4- 2.
광전효과를 이용한 플랑크 상수 측정 1조 권희선 조혜원 허진.
빛 의 합 성 과 학 1 학년 Ⅱ. 빛 > 2. 빛의 색( 8/8 ) [초기 화면]
제 8장. 클래스의 활용 학기 프로그래밍언어및실습 (C++).
2015년 2학년 1반.
기본 테이블세팅(로맨틱) 푸드스타일리스트 전공 김선아.
혼색 color mixture.
(제작자: 임현수)모둠:임현수,유시연,유한민
컬러 리더십.
문서 작성에 사용되는 기본태그 HR, PRE, B, I, U, S.
자바 프로그래밍 Thread를 이용한 애니메이션 서울호서전문학교 게임프로그램개발과.
성전기공식(안) 식 순 1. 기공미사 2. 기 공 식 3. 축 하 연 천주교 수원교구 퇴촌성당.
“ COME TOGETHER CAMPAIGN”
김진승 한국물리학회 교육위원장, 전북대학교 물리학과
[색채지각 ] Color Perception.
색채의 공감각 맛 음 냄새 촉감 5. 모양.
G20 Summit 관련 공항이용 안내 공지 에어칼린 한국총판대리점 감사합니다. 항공보안등급 상향일정
Java의 정석 제 7 장 객체지향개념 II-3 Java 정석 남궁성 강의
3 ■. 양산차 STEERING WHEEL 칼라 구분 ◆ 적용 차종 및 참조 그룹 ◆ COLOR 구분 및 적용(첨부 참조)
논리회로 설계 및 실험 9주차.
빠르게 활용하는 파이썬3 프로그래밍 Chapter 8. 입출력 안녕하세요, 파이썬의 세계에 오신 것을 환영합니다.
Spring, 2019 School of CSE Pusan National University
제3장 선교 구역.반장학교 제1단계.
Smart & Green Technology Innovator
첨부 1. 불꽃 위치도 ※ 불꽃 발사 장소 : 수원월드컵경기장 남측 P4 주차장 뒤편 공원 (붉은색 원표시 부분)
Presentation transcript:

두근두근 파이썬 수업 14장 프로젝트 II

이번 장에서 만들 프로그램 이번 장에서 클래스를 사용하여서 간단한 게임을 작성해보자. 화면의 왼쪽 공에서 포를 쏘아서 오른쪽 공을 맞추는 게임이다. 오른쪽 공은 상하로 움직인다. 녹색공을 우리 우주선이라고 생각하고 빨강색공을 외계 우주선이라고 생각하자.

공을 클래스로 표현하자. 객체 = 속성(ATTRIBUTE) + 메소드(METHOD) 공의 속성 공의 동작 ball.color ball.size ball.x 공의 동작 ball.move()

Ball 클래스 class Ball: def __init__(self): # 생성자 self.color="red" self.size=30 self.x = 0 self.y = 0 self.xspeed = 0 self.yspeed = 0 def move(self): # Ball을 이동시키는 함수 pass

객체 생성 class Ball: def __init__(self): # 생성자 self.color="red" self.size=30 self.x = 0 self.y = 0 self.xspeed = 0 self.yspeed = 0 def move(self): # Ball을 이동시키는 함수 pass ball = Ball() print("공의 색상=", ball.color) print("공의 크기=", ball.size) print("공의 x좌표=", ball.x) 공의 색상= red 공의 크기= 30 공의 x좌표= 0

다양한 공을 만들어보자. class Ball: def __init__(self, color, size, x, y, xspeed, yspeed): # 생성자 self.color = color # Ball의 색상 self.size = size # Ball의 크기 self.x = x # Ball의 중심점의 x좌표 self.y = y # Ball의 중심점의 y좌표 self.xspeed = xspeed # Ball의 수평방향 속도 self.yspeed = yspeed # Ball의 수직방향 속도 def move(self): # Ball을 이동시키는 함수 pass ballA = Ball("red", 30, 0, 0, 0, 0) print("공의 색상=", ballA.color) print("공의 크기=", ballA.size) print("공의 x좌표=", ballA.x) print("") ballB = Ball("blue", 100, 50, 50, 10, 10) print("공의 색상=", ballB.color) print("공의 크기=", ballB.size) print("공의 x좌표=", ballB.x)

다양한 공을 만들어보자. 공의 색상= red 공의 크기= 30 공의 x좌표= 0 공의 색상= blue 공의 크기= 100

Ball 클래스에서 원 그리기 from tkinter import * class Ball: def __init__(self, canvas, color, size, x, y, xspeed, yspeed): self.canvas = canvas # 캔버스 객체 self.color = color # Ball의 색상 self.size = size # Ball의 크기 self.x = x # Ball의 x좌표 self.y = y # Ball의 y좌표 self.xspeed = xspeed # Ball의 수평방향 속도 self.yspeed = yspeed # Ball의 수직방향 속도 self.id = canvas.create_oval(x, y, x+size, y+size, fill=color) def move(self): # Ball을 이동시키는 함수 pass WIDTH = 800 # 윈도우의 가로 크기를 저장한다. HEIGHT = 400 # 윈도우의 세로 크기를 저장한다. window = Tk() canvas = Canvas(window, width=WIDTH, height=HEIGHT) canvas.pack() ballA = Ball(canvas, "red", 30, 0, 0, 0, 0)

실행결과 공이 화면에서 보이지만 움직이지 않는다.

공을 움직여보자. from tkinter import * class Ball: def __init__(self, canvas, color, size, x, y, xspeed, yspeed): self.canvas = canvas # 캔버스 객체 self.color = color # Ball의 색상 self.size = size # Ball의 크기 self.x = x # Ball의 x좌표 self.y = y # Ball의 y좌표 self.xspeed = xspeed # Ball의 수평방향 속도 self.yspeed = yspeed # Ball의 수직방향 속도 self.id = canvas.create_oval(x, y, x+size, y+size, fill=color) def move(self): # Ball을 이동시키는 함수 self.canvas.move(self.id, self.xpseed, self.yspeed) WIDTH = 800 # 윈도우의 가로 크기를 저장한다. HEIGHT = 400 # 윈도우의 세로 크기를 저장한다. window = Tk() canvas = Canvas(window, width=WIDTH, height=HEIGHT) canvas.pack() ballA = Ball(canvas, "red", 30, 0, 0, 0, 0)

공을 움직여보자. # 무한 루프이다. while True: ball.move() window.update() time.sleep(0.03)

공을 화면에서 반사시키자 공이 오른쪽 벽에 충돌하면 반사되도록 만들어보자. Ball 클래스에 공이 한 번에 움직이는 거리를 나타내는 변수 xspeed, yspeed가 있다. 한번 반복할 때마다 공을 (xspeed, xspeed) 만큼 움직이는 것으로 하자.

공을 움직여보자. def move(self): # Ball을 이동시키는 함수 self.canvas.move(self.id, self.xspeed, self.yspeed) (x1, y1, x2, y2) = self.canvas.coords(self.id) # 공의 현재 위치를 얻는다. (self.x, self.y) = (x1, y1) if x1 <= 0 or x2 >= WIDTH: # 공의 x좌표가 음수이거나 오른쪽 경계를 넘으면 self.xspeed = - self.xspeed # 속도의 부호를 반전시킨다.

움직이는 볼을 여러 개 만들어 보자. 앞 절에서 작업한 내용을 가지고 화면에 공을 여러 개를 만들고 움직여 보자. 이번에는 공의 크기와 색상도 다양 하게 변경하여 본다. 공의 속도도 난수로 설정된다.

공을 움직여보자. color_list = [ "yellow", "green", "blue", "red", "orange", "pink", "grey", "black" ] # 공들이 저장되는 리스트를 만든다. balls_list = [] # 10번 반복하면서 Ball 클래스의 객체를 생성하여 리스트에 저장한다. for i in range(10): color = random.choice(color_list) size = random.randrange(10, 100) xspeed = random.randrange(1, 10) yspeed = random.randrange(1, 10) balls_list.append(Ball(canvas, color, size, 0, 0, xspeed, yspeed)) # 리스트에 저장된 각각의 공들을 이동시킨다. while True: for ball in balls_list: ball.move() window.update() time.sleep(0.03)

간단한 게임 작성 #1 tkinter만을 사용하여 간단한 게임을 제작해보자. 왼쪽에 녹색 원이 있고 오른쪽에 빨강색 원이 있다. 녹색원에서 포를 쏘아서 빨강색 원을 맞추는 게임이다. 빨강색 원은 위아래로 움직인다.

간단한 게임 작성 #1 from tkinter import * import time import random class Ball: def __init__(self, canvas, color, size, x, y, xspeed, yspeed): self.canvas = canvas # 캔버스 객체 self.color = color # Ball의 색상 self.size = size # Ball의 크기 self.x = x # Ball의 x좌표 self.y = y # Ball의 y좌표 self.xspeed = xspeed # Ball의 수평방향 속도 self.yspeed = yspeed # Ball의 수직방향 속도 self.id = canvas.create_oval(x, y, x+size, y+size, fill=color) def move(self): # Ball을 이동시키는 함수 self.canvas.move(self.id, self.xspeed, self.yspeed) (x1, y1, x2, y2) = self.canvas.coords(self.id) # 공의 현재 위치를 얻는다. (self.x, self.y) = (x1, y1) if x1 <= 0 or x2 >= WIDTH: # 공의 x좌표가 음수이거나 x좌표가 오른쪽 경계를 넘으면 self.xspeed = - self.xspeed # 속도의 부호를 반전시킨다. if y1 <= 0 or y2 >= HEIGHT: # 공의 x좌표가 음수이거나오른쪽 경계를 넘으면 self.yspeed = - self.yspeed # 속도의 부호를 반전시킨다.

간단한 게임 작성 #2 마우스 버튼이 눌리면 포를 발사하도록 하자. 포탄도 Ball 클래스를 이용하여 생성한다.

간단한 게임 작성 #2 bullets = [] def fire(event): bullets.append(Ball(canvas, 10, "red", 100, 200, 10, 0)) ... canvas.bind("<Button-1>", fire)

이번 장에서 배운 것 tkinter를 이용하여 간단한 게임을 작성해보았다.. 클래스를 이용하여 공을 표현하였다. 이벤트를 사용하여 사용자의 입력을 처리하였다. 리스트를 사용하여 포탄을 저장하였다.

Q & A