본문 바로가기

파이썬21

실전에 유용한 표준 라이브러리 내장 함수 sum() min(), max() eval() = 계산한 결과를 출력해준다 sorted() 정렬 sorted() with key => key 값을 기준으로 정렬한다 보통 람다로 넣어준다. 순열과 조합 순열: 서로 다른 n개에서 서로다른 r개를 선택하여 일렬로 나열하는 것 {'a','b','c'}에서 2개를 선택해 나열하는 경우 : abc, acb, bac, bca, cab, cba => [('a', 'b', 'c'), ('a', 'c', 'b'), ('b', 'a', 'c'), ('b', 'c', 'a'), ('c', 'a', 'b'), ('c', 'b', 'a')] abc에서 3개를 골라 순서를 고려하여 나열하라 조합 : 서로 다른 n개에서 순서에 상관 없이 서로 다른 r개를 선택하는 것 {.. 2021. 12. 30.
입출력 함수, 람다 표현식 1. 기본적인 입출력 input () 함수는 한 줄의 문자열을 입력 받는 함수이다 map() 함수는 리스트의 모든 원소에 각각 특정한 함수를 적용할 때 사용한다. ex) 공백을 기준으로 구분된 데이터를 입력 받을 때 list(map(int, input().split())) => 먼저 input으로 값을 받고 split()로 공백을 기준으로 나누고 int 형식의 리스트를 만든다. ex) 언패킹하여 입력할 수도 있다. a,b,c=map(int,input().split())) 입력한 값이 각각 a,b,c로 들어간다 2. 빠르게 입력받기 사용자로부터 입력을 보다 빠르게 입력받아야 하는 경우도 있다. sys 라이브러리에 정의되어 있는 sys.stdin.readline() 메서드를 이용한다. 하지만 입력한 후에 엔.. 2021. 12. 29.
언더바 사용, 리스트 관련 메소드 반복을 수행하되, 반복을 위한 변수의 값을 무시하고자 할 때 언더바를 자주 사용한다 for _ in range(4): print("hello") =>> hello hello hello hello 이렇게 단순히 반복을 하고자 할 때에는 _를 사용한다. 2021. 12. 27.
파이썬 리스트 컴프리 핸션 * 리스트를 초기화 하는 방법 중 하나이다 대괄호안에 조건문이나 반복문을 사용하여 리스트를 초기화하는 방법이다 반복문 안에 있는 i 가 range(0~9)까지 증가할 때마다 해당 i값을 원소의 값으로 설정을 한다 그래서 for i 가 0,1,2,3,4,5,6,7,8,9 까지 증가하고 그걸 넣어주어 리스트를 초기화 시켜준다. * 조건을 추가하기 위에처럼 뒤에 조건을 추가할 수도 있다 원소값을 의미하는 i에 여러가지 연산을 넣을 수도 있다 ※ 이러한 리스트 컴프리 헨션은 2차원 리스트를 초기화할 때 효과적으로 사용할 수 있다!! N x M 크기의 2차원 리스트를 한 번에 초기화를 해야 할 때 유용하다 list = [[0] * m for _ in range(n)] => n번 반복할 때마다 길이가 m인 리스트를.. 2021. 12. 26.
6. 유성피하기 게임(미사일 쏘기) 1. 기존의 유성 만드는 코드와 움직이는 코드를 복붙해서 쉽게 만들 수 있다. : 먼저 199번 처럼 미사일을 만들어준다. 최대 33개로 설정을 해준다. 2. 미사일 방향을 위로 올라가게 해주고 로켓과 위치가 같을 때 생성하게 해준다. => 78번 부터 98번까지 3. 유성과 만나면 사라지게 해준다. => CrushStar() 4. 재시작하면 새로 세팅해준다. ## 여기서 가장 중요시 볼 거는 CrushStar()함수이다. 136번을 해주지 않으면 미사일이 사라질때마다 점수가 올라간다. 따라서 continue를 해주어 재생성하게 해주고 미사일이 유성을 맞췄을 때만 점수가 올라갈 수 있게 해준다. 출처 : coding now 2021. 12. 8.
5. 유성 피하기 게임 (게임오버뜨기, 재시작하기) 1. 게임이 끝나면 Game over와 Restart 를 할 수 있게 띄워준다. :def setText에서 그림과 같이 작성해주는데 깜빡깜빡 뜰 수 있도록 blinking()함수를 만들어준다. 각각 time_delay_4sec=0와 toggle=False는 변수로 초기화를 해준다. 107번은 toggle을 true로 바꿔주는 코드다 blinking()이 true가 될 때마다 폰트를 실행해주어 깜빡깜빡하게 나는 것처럼 보인다. 2. R 누르면 재시작 뜨게 하기 restart()함수를 만들어주고 eventProcess()에서 r을 눌렀을 때 실행시킬수 있게 해준다. restart할 때 점수와 유성의 위치를 다시 처음처럼 세팅해준다. 2021. 12. 7.
4. 유성 피하기 게임(충돌 알고리즘 만들기) 1. 유성과 로켓이 부딪혔을 때 게임이 끝날 수 있도록 해준다. 충돌알고리즘은 78번줄 부터이다. 유성과 로켓의 각 위치 top, left, bottom, right의 위치를 비교해서 나타낸다. 1-1 : 유성을 피할 수록 점수는 올라가고, 충돌하면 멈출 수 있게 score와 isGameover 변수를 선언해준다. 2. 부딪히지 않으면 반복하는 100ms 동안 점수가 1씩 올라가게 해준다. 그것을 폰트를 받아와 스크린에 띄우는 것이 def setText(): 함수이다. 3. 충돌되면 멈추기 isGameover를 False로 주고 False일때 실행이 되게 만들고 True가 되면 모두 멈추게 만들어 준다. 2021. 12. 7.
3. 유성 피하기 게임( 유성 움직이기) 1. 가장 먼저 유성을 여러개 생성할 수 있도록 기존에 pygame.image.load('asteroid.png') 로 유성을 생성하던 코드를 리스트 형태로 반복적으로 만들 수 있게 바꿔준다. (86번) : star = [pygame.image.load('asteroid.png') for i in range(40)] = 40번을 반복하면서 만들어준다. :recStar=[None for i in range(len(star))] 는 각 만든 유성의 위치를 리스트로 만들어준다. 그 다음 유성의 개수만큼 반복하면서 만들어주는데, 0,0의 위치에 즉 맨 상단에 만들어주고, 먼저 y의 값으로 -1을 주어 뿌리지 않게 해준다. 2. 유성의 x 위치를 랜덤으로 만들기(52번) : makeStar()함수를 만들어주고 랜.. 2021. 12. 7.
2. 유성 피하기 게임 (키보드 입력받기) 0. import Rect :캐릭터의 x,y,가로,세로를 이용하기 위해선 Rect를 import 해와야 한다. 1. 키보드 방향키를 눌렀을 때의 값을 받기 위해 eventProcess()함수를 만들어준다. : for event in pygame.event.get(): 이 event.get()메소드는 키보드를 눌렀을 때의 값을 리스트 형태로 담아온다 그것을 event로 반복하면서 실행한다. : event.type은 키보드가 눌렀을 때와 떼어졌을 때를 구분하기 위한 타입이다. K_DOWN은 키보드를 눌렀을 때 K_UP은 키보드를 뗐을 때다. event.key는 이제 키보드가 눌렸을 때의 기능을 수행하기 위한 것이다. K_ESCAPE는 ESC이고 나머지는 각각 방향을 나타낸다. : 변수 초기화에서 만든 mov.. 2021. 12. 6.
1. 유성 피하기 게임 만들기(스크린 세팅과 player 만들기) 1.pip install pygame 으로 pygame 을 다운 받고 import 해준다. 2. 17줄부터 19까지는 스크린을 생성하는 것 : pygame.init()는 pygame의 라이브러리를 사용하기 위해 쓰는 것 : pygame.display.set_mode()로 스크린의 사이즈를 정해준다. 단 중요한 것은 () 튜플 형태로 넣어줘야 한다. : pygame.display.set_caption()은 제목을 달아주는 것 => pygame.display.flip()으로 실행시켜준다. => 단 이 flip()으로 실행시키면 시작됐다가 바로 꺼진다. 그래서 반복문을 통해 유지할 수 있도록 만들어줘야 한다. 3. player 생성 : 필요한 이미지를 정해서 player.image.load('이미지')로 pl.. 2021. 12. 6.
키보드 입력다뤄보기 , 갤러그 게임 만들기 먼저 pynput 를 깔아주고 키보드 값을 받을 수 있게 keyboard를 import 해준다. 그리고 키보드를 눌렀을 때와 뗐을 때의 함수를 만들어준다. listener = keyboard.Listener(on_press=key_press, on_release=key_release) 그리고 각각의 리스너에 만든 함수를 넣어주고 start()로 실행시켜준다. isActive는 종료될수 있게 만든 변수이다. global을 사용하여 전역변수로 바꾸어 준다. 그리고 esc를 누르면 종료될 수 있게 해준다. 갤러그 게임 키보드를 입력하면 저 별이 움직이고 틀에 닿으면 더이상 움직이지 않는 간단한 게임을 만들어 보겠다. 먼저 게임의 틀을 만들어 보겠다. 틀 만들기 먼저 guide로 옆 선을 만들어준다. print.. 2021. 11. 29.
if문과 함수를 만들어 가위바위보 만들어보기 print(f' 유저({user} vs {com} ) 컴퓨터') 여기서 f는 formatting 해주는 것으로 내가 입력한 user의 값과 com의 값을 표시해주는 역할을 한다. 이렇게 수행이 된다. 필요한 리스트와 딕셔너리를 적절히 사용하여 코드를 쉽게 짤 수 있도록 한다 2021. 11. 29.