Microsoft PowerPoint PythonGUI-sprite

Similar documents
Microsoft PowerPoint - 6-PythonGUI-sprite

1장. 시작하기

Microsoft PowerPoint PythonGUI-network

쉽게 풀어쓴 C 프로그래밍

gnu-lee-oop-kor-lec06-3-chap7

Microsoft PowerPoint - CSharp-10-예외처리

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

JAVA PROGRAMMING 실습 08.다형성

17장 클래스와 메소드

PowerPoint Presentation

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

PowerPoint Presentation

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

슬라이드 1

Network Programming

PowerPoint Presentation

Microsoft PowerPoint Python-Function.pptx

Microsoft PowerPoint - 14주차 강의자료

PowerPoint Presentation

쉽게 풀어쓴 C 프로그래밍

PowerPoint Template

Microsoft PowerPoint PythonGUI-socket

<432B2BC7C1B7CEB1D7B7A1B9D628BABBB9AE5FC3D6C1BE295B315D2E687770>

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

PowerPoint 프레젠테이션

PowerPoint Presentation

Cluster management software

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - ÀÚ¹Ù08Àå-1.ppt

Microsoft PowerPoint - 09-CE-5-윈도우 핸들

<4D F736F F F696E74202D20C1A63233C0E520B1D7B7A1C7C820C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

Microsoft PowerPoint - 2-Objective-C 기초

PowerPoint Presentation

No Slide Title

Microsoft PowerPoint - additional08.ppt [호환 모드]

Microsoft PowerPoint - 04-UDP Programming.ppt

오버라이딩 (Overriding)

Design Issues

PowerPoint Presentation

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

Structure and Interpretation of Computer Programs: Assignment 3 Seung-Hoon Na October 4, George (아래 3개의 문제에 대한 구현이 모두 포함된 george.rkt파일을 제출하시오.

(Microsoft Word - \301\337\260\243\260\355\273\347.docx)

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

제11장 프로세스와 쓰레드

Microsoft PowerPoint - web-part02-ch15-문서객체조작.pptx

PowerPoint Presentation

PowerPoint 프레젠테이션

자바 웹 프로그래밍

8장.그래픽 프로그래밍

슬라이드 1

Microsoft PowerPoint - VB.NET_06.pptx

슬라이드 1

ThisJava ..

JUNIT 실습및발표

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont

Slide 1

Microsoft Word - EEL2 Lab4.docx

PowerPoint 프레젠테이션

Microsoft PowerPoint - 6주차.pptx

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

Microsoft PowerPoint Python-DB

JAVA PROGRAMMING 실습 09. 예외처리

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

Microsoft PowerPoint 장강의노트.ppt

PowerPoint Presentation

Microsoft PowerPoint Python-WebDB

- 클래스를이용한 2개의계산기구현 class Calculator: def init (self): self.result = 0 def adder(self, num): self.result += num return self.result cal1 = Calculator()

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

슬라이드 1

1. 상속의기본개념 다음과같은문제를위한클래스설계 자동차 속성 : 색상, 배기량, 현재속도 메서드 : 가속하라, 멈춰라, 시동을켜라 트럭 속성 : 색상, 배기량, 현재속도, 최대중량 메서드 : 가속하라, 멈춰라, 시동을켜라 택시 속성 : 색상, 배기량, 현재속도, 요금,

Contents. 1. PMD ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 2. Metrics ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 3. FindBugs ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 4. ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ

Microsoft PowerPoint - Lect04.pptx

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - 4주차_Android_UI구현.ppt [호환 모드]

JAVA PROGRAMMING 실습 02. 표준 입출력

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

JAVA PROGRAMMING 실습 07. 상속

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - Chap12-OOP.ppt

Microsoft PowerPoint - additional01.ppt [호환 모드]

Gray level 변환 및 Arithmetic 연산을 사용한 영상 개선

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

chap 5: Trees

슬라이드 1

JAVA PROGRAMMING 실습 05. 객체의 활용

쉽게 풀어쓴 C 프로그래밍

No Slide Title

Chapter_02-3_NativeApp

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

슬라이드 1

확률 및 분포

Transcription:

(Sprite) 순천향대학교컴퓨터공학과 이상정 순천향대학교컴퓨터공학과 1 학습내용 소개 클래스 그룹클래스 충돌 블록수집게임예 게임레벨증가및점수표시 이동 순천향대학교컴퓨터공학과 2

소개 (sprite) 큰그래픽장면의부분으로사용되는단일 2차원이미지 => 쪽화면 게임의장면에서서로상호작용 ( 충돌등 ) 하는물체 => 캐릭터, 아바타 파이게임에서는일반적으로클래스로구현된객체 순천향대학교컴퓨터공학과 3 클래스 기본클래스 pygame.sprite.sprite(*groups): return Sprite 속성 Sprite.image 이미지 Sprite.rectrect 위치 모든게임객체 ( 물체 ) 들의기본클래스 (base class) Group 클래스와함께동작 생성자는그룹또는그룹의리스트를인수로전달 순천향대학교컴퓨터공학과 4

그룹클래스 pygame.sprite.group(*sprites): return Group 그룹클래스 다수의객체들을다루는컨테이너 (container) 클래스 메소드 Group.add(*sprites): return None 그룹에를추가 Group.remove(*sprites): return None 그룹에서를제거 Group.draw(Surface): return None Surface 에포함된를그리기 Group.update(*args): return None 그룹내모든의 update() 메소드호출 순천향대학교컴퓨터공학과 5 블록수집게임예 마우스로움직이는빨간블록이검은블록을수집하는예 검은블록, 빨간블록 ( 플레이어 ) 충돌후검은블록없어지고점수올라감 순천향대학교컴퓨터공학과 6

Block 클래스정의 Sprite 클래스를상속받아블록을정의하는클래스 블록의색과크기를생성자인수로전달 # 블록을정의하는클래스 # Sprite 부모클래스를상속 class Block(pygame.sprite.Sprite): # 블록의색과크기를생성자인수로전달 def init (self, color, width, height): # 부모클래스생성자호출 pygame.sprite.sprite. init (self) i i i # 블록의이미지와색지정 self.image = pygame.surface([width, height]) self.image.fill(color) # 이미지크기의 rect 객체지정 self.rect = self.image.get_rect() # 빨간블록생성 player = Block(red, 20, 15) 순천향대학교컴퓨터공학과 7 다양한모양의생성예 # 타원의이미지와색지정 # 검은타원생성 self.image = pygame.surface([width, height]) self.image.fill(white) self.image.set_colorkey(white) pygame.draw.ellipse(self.image, color,[0,0,width,height]) # 빨간타원생성 player = Block(red, 20, 15) def init (self, filename): # 부모클래스생성자호출 pygame.sprite.sprite. init (self) # 블록의이미지와색지정 self.image = pygame.image.load(filename).convert() self.image.set_colorkey(black) # 이미지크기의 rect 객체지정 self.rect = self.image.get_rect() 순천향대학교컴퓨터공학과 8 # 외계인블록생성 block = Block("alien.png") # UFO 블록생성 player = Block("ufo.png")

그룹생성 전체객체를갖는그룹생성 검은블록의그룹 플레이어를포함한모든그룹 # 그룹생성, 검은블록의그룹 block_list = pygame.sprite.group() # 그룹생성, 플레이어 ( 빨간블록 ) 를포함한모든그룹 all_sprites_list = pygame.sprite.group() 순천향대학교컴퓨터공학과 9 그룹에추가 각그룹에추가 그룹에 50개의블록객체추가 위치는랜덤으로지정 for i in range(50): # 블록들의위치를랜덤생성 block.rect.x = random.randrange(screen_width) randrange(screen block.rect.y = random.randrange(screen_height) # 그룹에블록객체추가 block_list.add(block) list all_sprites_list.add(block) # 플레이어 ( 빨간블록 ) 생성 player = Block(red, 20, 15) all_sprites_list.add(player) 순천향대학교컴퓨터공학과 10

충돌 (1) 한와그룹내간의충돌조사 pygame.sprite.spritecollide(sprite, group, dokill, collided = None): return Sprite_list sprite와 group 내의간의충돌조사 dokill 인수가 True이면충돌된가그룹에서제거 collided d 인수는두의충돌여부를계산하는 callback 함수 생략되면영역이 rect 값을가지고, 이를충돌계산에적용 충돌한들의리스트리턴 순천향대학교컴퓨터공학과 11 충돌 (2) # 플레이어블록과충돌하는블록조사 blocks_hit_list = pygame.sprite.spritecollide(player, block_list, True) # 충돌된블록수조사하여점수조정 if len(blocks_hit_list) > 0: score +=len(blocks_hit_list) _ print( score ) # 모든그리기 all_sprites_list.draw(screen) 순천향대학교컴퓨터공학과 12

블록수집게임코드 (1) import pygame import random black = ( 0, 0, 0) white = ( 255, 255, 255) red = ( 255, 0, 0) # 블록을정의하는클래스 # Sprite 부모클래스를상속 class Block(pygame.sprite.Sprite): # 블록의색과크기를생성자인수로전달 def init (self, it color, width, height): ht): # 부모클래스생성자호출 pygame.sprite.sprite. init (self) # 블록의이미지와색지정 self.image = pygame.surface([width, height]) self.image.fill(color) # 이미지크기의 rect 객체지정 self.rect = self.image.get_rect() pygame.init() 순천향대학교컴퓨터공학과 13 # 윈도우설정 screen_width=700 screen_height=400 screen=pygame.display.set_mode([screen_width, screen_height]) # 그룹생성, 검은블록의그룹 block_list = pygame.sprite.group() # 그룹생성, 플레이어 ( 빨간블록 ) 를포함한 # 모든그룹 all_sprites_list = pygame.sprite.group() for i in range(50): # 블록들의위치를랜덤생성 block.rect.x = random.randrange(screen_width) block.rect.y = random.randrange(screen_height) # 그룹에블록객체추가 block_list.add(block) all_sprites_list.add(block) 블록수집게임코드 (2) # 플레이어블록 ( 빨간블록 ) 생성 player = Block(red, 20, 15) all_sprites_list.add(player) done=false clock=pygame.time.clock() score = 0 while done==false: for event in pygame.event.get(): if event.type == pygame.quit: done=true # 플레이어블록과충돌하는블록조사 blocks_hit_list = pygame.sprite.spritecollide (player, block_list, True) # 충돌된블록수조사하여점수조정 if len(blocks_hit_list) > 0: score +=len(blocks_hit_list) list) print( score ) # 모든그리기 all_sprites_list.draw(screen) screen.fill(white) # 현재마우스위치읽어서플레이어블록객체의 # 위치로지정 pos = pygame.mouse.get_pos() mouse get pos() player.rect.x=pos[0] player.rect.y=pos[1] 순천향대학교컴퓨터공학과 14 clock.tick(20) pygame.display.flip() pygame.quit()

시험주행 순천향대학교컴퓨터공학과 15 블록수집게임 - 게임레벨증가 모든블록을수집했으면레벨상승 레벨에따라새로운블록추가 # 플레이어블록과충돌하는블록조사 blocks_hit_list = pygame.sprite.spritecollide(player, block_list, True) # 모든블록을수집했으면레벨상승 if len(block_list) == 0: level += 1 # 레벨에따라새로운블록추가 for i in range(level * 10): # 블록들의위치를랜덤생성 block.rect.x = random.randrange(screen_width) block.rect.y = random.randrange(screen_height) # 그룹에블록객체추가 block_list.add(block) all_sprites_list.add(block) 순천향대학교컴퓨터공학과 16

블록수집게임 - 게임점수표시 윈도우에점수와레벨표시 # 텍스트폰트생성 font = pygame.font.font("nanumgothicbold.ttf", 25) # 충돌된블록수조사하여점수조정 if len(blocks_hit_list) > 0: score +=len(blocks_hit_list) # 점수및레벨텍스트표시 text=font.render(" 점수 : "+str(score), True, black) screen.blit(text, [10, 10]) text=font.render(" 레벨 : "+str(level), True, black) screen.blit(text, [10, 40]) 순천향대학교컴퓨터공학과 17 블록수집코드 레벨증가및점수표시 (1) import pygame import random black = ( 0, 0, 0) white = ( 255, 255, 255) red = ( 255, 0, 0) # 블록을정의하는클래스 # Sprite 부모클래스를상속 class Block(pygame.sprite.Sprite): # 블록의색과크기를생성자인수로전달 def init (self, it color, width, height): ht): # 부모클래스생성자호출 pygame.sprite.sprite. init (self) # 블록의이미지와색지정 self.image = pygame.surface([width, height]) self.image.fill(color) # 이미지크기의 rect 객체지정 self.rect = self.image.get_rect() pygame.init() 순천향대학교컴퓨터공학과 18 # 윈도우설정 screen_width=700 screen_height=400 screen=pygame.display.set_mode([screen_width, screen_height]) # 그룹생성, 검은블록의그룹 block_list = pygame.sprite.group() # 그룹생성, 플레이어 ( 빨간블록 ) 를포함한 # 모든그룹 all_sprites_list = pygame.sprite.group() for i in range(50): # 블록들의위치를랜덤생성 block.rect.x = random.randrange(screen_width) block.rect.y = random.randrange(screen_height) # 그룹에블록객체추가 block_list.add(block) all_sprites_list.add(block)

블록수집코드 레벨증가및점수표시 (2) # 플레이어블록 ( 빨간블록 ) 생성 pos = pygame.mouse.get_pos() player = Block(red, 20, 15) player.rect.x=pos[0] all_sprites_list.add(player) player.rect.y=pos[1] done=false clock=pygame.time.clock() # 텍스트폰트생성 font = pygame.font.font("nanumgothicbold.ttf", 25) score = 0 level = 1 while done==false: for event in pygame.event.get(): event get(): if event.type == pygame.quit: done=true screen.fill(white) # 현재마우스위치읽어서플레이어블록객체의 # 위치로지정 순천향대학교컴퓨터공학과 19 # 플레이어블록과충돌하는블록조사 blocks_hit_list = pygame.sprite.spritecollide(player, block_list, True) # 충돌된블록수조사하여점수조정 if len(blocks_hit_list) > 0: score +=len(blocks_hit_list) # 모든블록을수집했으면레벨상승 if len(block_list) == 0: level += 1 # 레벨에따라새로운블록추가 for i in range(level * 10): # 블록들의위치를랜덤생성 block.rect.x = random.randrange(screen_width) 블록수집코드 레벨증가및점수표시 (2) block.rect.y = random.randrange(screen_height) # 그룹에블록객체추가 block_list.add(block) all_sprites_list.add(block) # 모든그리기 all_sprites_list.draw(screen) # 점수및레벨텍스트표시 text=font.render(" 점수 : "+str(score), True, black) screen.blit(text, [10, 10]) text=font.render(" 레벨 : "+str(level), True, black) screen.blit(text, [10, 40]) clock.tick(20) k(20) pygame.display.flip() pygame.quit() 순천향대학교컴퓨터공학과 20

시험주행 순천향대학교컴퓨터공학과 21 이동 가위에서아래로이동 Block 클래스에 update() 메소드추가 각프레임에서블록의 y 좌표증가 증가속도는레벨에따라커짐 블록이아래끝에도달하면 y 위치값을위로조정 class Block(pygame.sprite.Sprite): # y 좌표값리셋 def reset_pos(self): self.rect.y = random.randrange(-100,-10) self.rect.x = random.randrange(0,screen_width) def update(self, change_y): # 블록을아래로이동 self.rect.y += change_y if self.rect.y > screen_height: self.reset_pos() 순천향대학교컴퓨터공학과 22

블록수집코드 블록이동 (1) import pygame import random black = ( 0, 0, 0) white = ( 255, 255, 255) red = ( 255, 0, 0) # 블록을정의하는클래스 # Sprite 부모클래스를상속 class Block(pygame.sprite.Sprite): # 블록의색과크기를생성자인수로전달 def init (self, it color, width, height): ht): # 부모클래스생성자호출 pygame.sprite.sprite. init (self) # 블록의이미지와색지정 self.image = pygame.surface([width, height]) self.image.fill(color) # 이미지크기의 rect 객체지정 self.rect = self.image.get_rect() 순천향대학교컴퓨터공학과 23 # y 좌표값리셋 def reset_pos(self): self.rect.y = random.randrange(-100,-10) self.rect.x = random.randrange(0,screen_width) def update(self, change_y): # 블록을아래로이동 self.rect.y += change_y if self.rect.y > screen_height: self.reset_pos() pygame.init() it() # 윈도우설정 screen_width=700 screen_height=400 screen=pygame.display.set_mode([screen_width, screen_height]) # 그룹생성 block_list = pygame.sprite.group() all_sprites_list = pygame.sprite.group() 블록수집코드 블록이동 (2) for i in range(50): # 블록들의위치를랜덤생성 block.rect.x = random.randrange(screen_width) randrange(screen block.rect.y = random.randrange(screen_height) # 그룹에블록객체추가 block_list.add(block) all_sprites_list.add(block) # 플레이어블록 ( 빨간블록 ) 생성 player = Block(red, 20, 15) all_sprites_list.add(player) done=false clock=pygame.time.clock() # 텍스트폰트생성 font = pygame.font.font("nanumgothicbold.ttf", 25) score = 0 level = 1 순천향대학교컴퓨터공학과 24 while done==false: for event in pygame.event.get(): t() if event.type == pygame.quit: done=true screen.fill(white) # 현재마우스위치를플레이어블록의위치로지정 pos = pygame.mouse.get_pos() player.rect.x=pos[0] player.rect.y=pos[1] # 플레이어블록과충돌하는블록조사 blocks_hit_list = pygame.sprite.spritecollide(player, block_list, True) # 충돌된블록수조사하여점수조정 if len(blocks_hit_list) > 0: score +=len(blocks_hit_list) # 모든블록을수집했으면레벨상승 if len(block_list) == 0: level += 1

블록수집코드 블록이동 (3) # 레벨에따라새로운블록추가 for i in range(level l * 10): # 그룹내 update() 메소드호출 # 이동속도는레벨값으로지정 block_list.update(level) # 블록들의위치를랜덤생성 block.rect.x = random.randrange(screen_width) block.rect.y = random.randrange(screen_height) # 그룹에블록객체추가 block_list.add(block) all_sprites_list.add(block) clock.tick(20) pygame.display.flip() pygame.quit() # 모든그리기 all_sprites_list.draw(screen) # 점수및레벨텍스트표시 text=font.render(" 점수 : "+str(score), True, black) screen.blit(text, [10, 10]) text=font.render(" 레벨 : "+str(level), True, black) screen.blit(text, [10, 40]) 순천향대학교컴퓨터공학과 25 시험주행 순천향대학교컴퓨터공학과 26

과제 1. 앞에서소개된블록수집프로그램을작성하고실행 2. 앞에서배운내용을활용한임의의프로그램작성 프로그램설명 프로그램소스 실행결과 순천향대학교컴퓨터공학과 27