반응형
오늘은 퐁게임이라 불리는 게임을 만들어 보았다.
이것 또한 클래스를 이용해서 만들어보았다.
클래스
- 패들
- 적 컴퓨터 패들
- 내가 조종할 수 있는 패들
- 스코어 보드
- 움직이는 공
- 대각선 일정 각도로 움직인다. 허나, 스크린 가로선에 부딪히면 진행 방향의 Y축 반대로 튕겨져 나간다.
- 패들에 공이 부딪히면 공이 튕겨져 나간다
- 패들에 부딪히지 않고 세로선으로 들어갈 시 들어간 방향의 반대 방향의 상대가 스코어를 얻는다.
로직
- 패들은 방향키 위/아래, w/s로 움직일 수 있다.
- 스코어는 들어간 방향의 반대 방향 상대가 스코어를 얻는다.
코드
## 퐁 게임 만들기
## 로직
# 각각의 클래스로 분리
# 1. 적 컴퓨터 패들
# 1.1 패들은 일정 속도로 위아래로 움직인다.
# 2. 내가 조종할 수 있는 패들
# 2.1 키보드 위 아래 버튼으로 움직일 수 있음
# 3. 스코어 보드
# 3.1 상대방 구역에 공이 위치하면 내가 스코어를 얻고
# 내 구역에 공이 위치하면 상대방이 스코어를 얻는다
# 4. 움직이는 공
# 4.1 움직인다 어떻게? 대각선 일정 각도로 그런데 X축 끝 벽에 부딪히면 튕겨져 나감 어떻게? 일정 각도로
# 4.2 패들에 공이 부딪히면 공이 튕겨 나간다
from turtle import Screen
from paddle import Paddle
from ball import Ball
from scoreboard import Scoreboard
import random
import time
screen = Screen()
screen.setup(width=800, height=600)
screen.bgcolor("#000000")
screen.title("My Pong Game!")
screen.tracer(0)
USER_POSITION = (-350, 0)
ENEMY_POSITION = (350, 0)
user_paddle = Paddle(USER_POSITION)
enemy_paddle = Paddle(ENEMY_POSITION)
ball = Ball()
scoreboard = Scoreboard()
screen.listen()
screen.onkey(key="Up", fun=enemy_paddle.go_up)
screen.onkey(key="Down", fun=enemy_paddle.go_down)
screen.onkey(key="w", fun=user_paddle.go_up)
screen.onkey(key="s", fun=user_paddle.go_down)
while True:
time.sleep(ball.move_speed)
screen.update()
ball.move()
if ball.ycor() > 280 or ball.ycor() < -280 :
ball.bounce_y()
if ball.distance(enemy_paddle) < 50 and ball.xcor() > 320 or ball.distance(user_paddle) < 50 and ball.xcor() < -320 :
ball.bounce_x()
if ball.xcor() > 380:
ball.reset_position()
scoreboard.l_point()
if ball.xcor() < -380:
ball.reset_position()
scoreboard.r_point()
코드 설명 :
스크린에 대한 설정을 먼저 마친 후 각 클래스들을 불러와서 while 반복문으로 로직이 돌아가도록 함
ball의 위치에 따른 함수 실행과 ball과 패들과의 거리에 따른 함수 실행을 통해서 볼이 튕기게 끔 함
ball의 위치가 패들 위치보다 더 깊게 들어간다면 스코어를 올리게 끔 함.
3줄 요약
이번 코딩도 약간의 도움을 빌렸다.
이해도가 조금 떨어지는 것 같다.
문서를 정확히 보지 않은 것도 있는 것 같고 로직 자체를 잘 모르겠다. 조금 더 분발해야될듯..
반응형
'프로그래밍 > Python' 카테고리의 다른 글
Python 부트 캠프 - turtle 모듈을 이용한 레이싱 경기 (0) | 2023.05.24 |
---|---|
Python 부트 캠프 - turtle 모듈을 이용한 소과제 해결하기 (0) | 2023.05.24 |
Python 부트 캠프 - OOP를 이용한 퀴즈 생성기 (0) | 2023.05.23 |
Python 부트 캠프 - OOP를 이용한 커피 머신 생성 (0) | 2023.05.21 |
Python 부트 캠프 - 커피 머신 생성 (2) | 2023.05.19 |