디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

[🔎질문] 여기저기 돌아다니다 결국 파이썬갤 온 파이썬몇달차 늒네입니다 문제가있어요

ㅇㅇ(122.153) 2023.05.27 19:45:34
조회 173 추천 0 댓글 1
														

pygame으로 게임좀 만들어 보려는데(raycasting으로 3D로 만들어 볼꺼)

잘 되다가 for 넣으니까 안되더라구요...

문제가 되는 부분 통째로 긁어 와 봤습니다


#창 유지
running = True
while running:
#sp1 그리기
    pygame.draw.rect(scr, (255, 255, 0), (sp1.x_POS, sp1.y_POS, 20, 20), 0)

    #배경(검정)
    scr.fill(Black)

    #벽 그리기
    for wallname in walltype:
        pygame.draw.rect(scr, White, [wallname[2][0], wallname[2][1], wallname[3][0] - wallname[2][0], wallname[3][1] - wallname[2][1]], wallname[4])
   
    print("ok")
   
    #FPS
    dt = clock.tick(FPS)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
                running = False

        #키보드 이벤트
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                pressing_L = True
            elif event.key == pygame.K_RIGHT:
                pressing_R = True
            elif event.key == pygame.K_UP:
                sp1.movingaction += 1
            elif event.key == pygame.K_DOWN:
                sp1.movingaction += -1
            if event.key == pygame.K_p:
                try:
                    inFPS = int(input("FPS를 입력하세요"))
                    if inFPS > 0:
                        FPS = inFPS
                        print("FPS가", FPS, "(으)로 변경되었습니다.")
                    else:
                        print("FPS값은 자연수만 가능합니다.")
                except:
                    print("FPS값은 자연수만 가능합니다.")
            if event.key == pygame.K_ESCAPE:
                esc = True

        if event.type == pygame.KEYUP:
            if event.key == pygame.K_LEFT:
                if pressing_R == True:
                    sp1.rotating -= -0.25 * dt
                else:
                    sp1.rotating = 0
                pressing_L = False
            elif event.key == pygame.K_RIGHT:
                    if pressing_L == True:
                        sp1.rotating -= 0.25 * dt
                    else:
                        sp1.rotating = 0
                    pressing_R = False
            elif event.key == pygame.K_UP:
                sp1.movingaction -= 1
            elif event.key == pygame.K_DOWN:
                sp1.movingaction -= -1
            if event.key == pygame.K_ESCAPE:
                escing = 0
                esc = False
    if pressing_L or pressing_R == True:
        if pressing_L == True:
            if pressing_R == False:
                sp1.rotating = -0.25 * dt
            else:
                sp1.rotating = 0
        if pressing_R == True:
            if pressing_L == False:
                sp1.rotating = 0.25 * dt
            else:
                sp1.rotating = 0

    if esc == True:
        escing += 1
        if escing == 250:
            running = False

    if sp1.movingaction == 1:
        sp1.to_x_U = move(sp1.rotate, "U", 1, 0.1)
        sp1.to_y_U = move(sp1.rotate, "U", 2, 0.1)

    elif sp1.movingaction == -1:
        sp1.to_x_D = move(sp1.rotate, "D", 1, 0.1)
        sp1.to_y_D = move(sp1.rotate, "D", 2, 0.1)
    elif sp1.movingaction == 0:
        sp1.to_x_U = 0
        sp1.to_y_U = 0
        sp1.to_x_D = 0
        sp1.to_y_D = 0
    sp1.rotate += sp1.rotating
    sp1.x_POS += (sp1.to_x_U +  sp1.to_x_D) * dt
    sp1.y_POS += (sp1.to_y_U + sp1.to_y_D) * dt

#--경계선(화면 크기 안에서만 움직이게)
    if sp1.x_POS < 20:
        sp1.x_POS = 20
    elif sp1.x_POS > scr_wid - sp1.wid - 20:
        sp1.x_POS = scr_wid - sp1.wid - 20
    if sp1.y_POS < 20:
        sp1.y_POS = 20
    elif sp1.y_POS > scr_hgt - sp1.hgt - 20:
        sp1.y_POS = scr_hgt - sp1.hgt - 20
#장애물 충돌처리
    for walltype_num in walltype:
        if sp1.y_POS + 17 >  walltype_num[2][1] and sp1.y_POS + 3 < walltype_num[3][1]:
            sp1.in_wall_y = True
        else:
            sp1.in_wall_y = False
        if sp1.x_POS + 17 > walltype_num[2][0] and sp1.x_POS + 3 < walltype_num[3][0]:
            sp1.in_wall_x = True
        else:
            sp1.in_wall_x = False
        #-x좌표 충돌 처리
        if  sp1.x_POS + 20 > walltype_num[2][0] and sp1.x_POS + 23 < walltype_num[3][0] and sp1.in_wall_y == True:
            sp1.x_POS = walltype_num[2][0] -20
        if  sp1.x_POS < walltype_num[3][0] and sp1.x_POS -3 > walltype_num[3][0] and sp1.in_wall_y == True:
            sp1.x_POS = walltype_num[3][0]
        if  sp1.y_POS + 20 > walltype_num[2][1] and sp1.y_POS + 23 < walltype_num[3][1] and sp1.in_wall_x == True:
            sp1.y_POS = walltype_num[2][1] -20
        if  sp1.y_POS < walltype_num[3][1] and sp1.y_POS +3 > walltype_num[2][1] and sp1.in_wall_x == True:
            sp1.y_POS = walltype_num[3][1]

#충돌 처리
    sp1.rect = sp1.img.get_rect() #캐릭터 크기(사각형)
    sp1.rect.left = sp1.x_POS
    sp1.rect.top = sp1.y_POS

#스프라이트 표시
    #플레이어
    sp1.POS = (sp1.x_POS, sp1.y_POS)
    sp1.img = pygame.transform.rotozoom(sp1_img, sp1.rotate * -1, 1)
    sp1.rePOS = (sp1.POS[0] + (sp1.wid / 2), sp1.POS[1] + (sp1.hgt / 2))
    sp1.reccenter = sp1.img.get_rect(center = sp1.rePOS)
    scr.blit(sp1.img, sp1.reccenter)
    if esc == True:
        scr.blit(escaping, (20, 20))

#마우스 위치
    mouse_POS = pygame.mouse.get_pos()

#화면 새로고침
    pygame.display.update()

#?
    pygame.display.flip()

#위에 끝나면 내려와서 종료
pygame.quit()

저기에 #장애물 충돌처리에서 문제가 생기는데

#벽 생성
outline  = wall("outline", "Null", (0, 0), (scr_wid, scr_hgt), 20)
wall1 = wall("wall1", "Null", (80, 80), (120, 120), 0) #0은 꽉 채우기


#벽 생성 클래스
class wall:
    def __init__(self, Name, wallimg, POS1, POS2, thick):
        self.Name = Name
        self.img = wallimg
        self.POS1 = POS1
        self.POS2 = POS2
        self.thick = thick
        walltype.append([self.Name, self.img, self.POS1, self.POS2, self.thick])
        self.order = walltype.index([self.Name, self.img, self.POS1, self.POS2, self.thick])
        walltype[self.order] = [self.Name, self.img, self.POS1, self.POS2, self.thick, self.order]

이런식으로 그 위에 써놨습니다


오류 화면은



viewimage.php?id=3da4c42eeadc&no=24b0d769e1d32ca73dea80fa1bd8233c00ee9550323bf6f11a87144efe9d9b15ec01284082896d62ee2c018ed82a5aaf91f22c60e6f2216d6a6924a2d17c49b46c198f


이런식으로됩니다

플레이어 히트박스가 노란색 네모로 그려져야 하는데 처음에만 한번 띡 나타났다 바로 사라져요

저기 안에서만 문제가 생기고 저거말고 외부 간섭오는 코드는 없을겁니다
for문쓰면 안되는건가요;;
도와주세요

추천 비추천

0

고정닉 0

0

원본 첨부파일 1

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 말머리 제목 글쓴이 작성일 조회 추천
- 설문 해외에서 겪는 불합리한 대우에 대응 잘 할 것 같은 스타는? 운영자 25/11/03 - -
- AD 저녁 뭐먹지? 오늘의 메뉴 추천! 운영자 25/10/31 - -
🔎질문 여기저기 돌아다니다 결국 파이썬갤 온 파이썬몇달차 늒네입니다 문제가있어요 [1] ㅇㅇ(122.153) 23.05.27 173 0
2258 🔎질문 네이버밴드 키워드 텔레그램알림 질문.. [2] ㅇㅇ(14.6) 23.05.25 213 0
2256 🔎질문 파이썬 책 순서 질문 [3] ㅇㅇ(222.234) 23.05.22 662 0
2255 🔎질문 파이썬은 c#처럼 업데이트문 자체가 읍음? [1] ㅇㅇ(112.163) 23.05.21 138 0
2252 일반 도와주신 분들 모두 감사합니다 ㅠㅠ ㅇㅇ(1.234) 23.05.18 108 2
2251 🔎질문 SK - 이번엔 또 이상한 오류가 나왔어요.. [2] ㅇㅇ(1.234) 23.05.17 131 0
2250 💡답변 아래 sk 형 보셈 [6] ㅇㅇ(221.158) 23.05.17 159 0
2249 🔎질문 이거 오류가 계속 떠요 ㅇㅇ(211.109) 23.05.17 100 0
2248 💡답변 yolo 게이 보셈 [9] ㅇㅇ(1.237) 23.05.16 215 1
2246 🔎질문 os 상대경로, pyautogui 질문 [4] ㅇㅇ(121.186) 23.05.14 147 0
2244 🔎질문 yolo 실시간 객체탐지 무한루프 빠진거 같습니다 +수정 [9] ㅇㅇ(222.114) 23.05.14 236 0
2242 🔎질문 점프 투 파이썬 pdf 살만함? [2] (124.49) 23.05.12 1865 0
2240 🔎질문 github에서 찾은 프로그램을 돌리려고 하는데 정확히 뭘 해야하나요? [8] realpro12(14.50) 23.05.08 211 1
2239 일반 GPT에 그림으로 물어보는 것도 가능하네요 [1] ㅇㅇ(220.79) 23.05.08 224 0
2237 🔎질문 pyautogui 관련 질문 [4] ㅇㅇ(182.212) 23.05.05 244 0
2234 🔎질문 웹개발 국비지원학원 다니려는데 둘중에 어디다닐까? [1] ㅇㅇ(106.101) 23.05.04 265 0
2232 🔎질문 혹시 def main()하고 안하고 차이점이있음? [6] ㅇㅇ(39.7) 23.05.03 264 0
2230 일반 AI도움을 받아서 2주만에 250줄짜리 프로그램 완성했습니다 [7] ㅇㅇ(220.79) 23.05.02 518 1
2229 🔎질문 vscode 디버깅이 안되는데 뭐가문제임? [1] ㅇㅇ(118.235) 23.05.02 179 0
2228 🔎질문 JSON 질문입니다 [4] ㅇㅇ(220.79) 23.05.02 213 0
2225 🔎질문 파이썬 if any 질문입니다 [4] ㅇㅇ(49.177) 23.05.01 196 0
2220 🔎질문 코딩 영상보고 해봤는데 이거 뭐임? [2] ㅇㅇ(114.203) 23.04.30 218 0
2219 🔎질문 GPT챗+파이썬에 실망했습니다 [7] ㅇㅇ(220.79) 23.04.28 768 0
2217 🔎질문 비주얼 스튜디오 질문 [2] ㅇㅇ(121.163) 23.04.24 220 0
2215 🔎질문 코랩 인데 파일 어디 저장되는지.. [5] ㅇㅇ(222.236) 23.04.24 271 0
2213 🔎질문 구현 가능 정도 [1] 멜론라떼갤로그로 이동합니다. 23.04.23 230 0
2212 🔎질문 내코드 수정좀 도와줄 형님구함 [2] ㅇㅇ(119.200) 23.04.22 218 0
2210 🔎질문 도와주세 [5] 심심래(211.213) 23.04.21 240 0
2209 🔎질문 코딩 컴 [6] nyubi(1.246) 23.04.20 235 0
2208 🔎질문 파이썬으로 sql 다루기 [2] oo(118.235) 23.04.20 266 0
2207 🔎질문 코딩테스트 문제풀때 라이브러리들을 사용하세요? [3] ㅇㅇ(220.86) 23.04.19 267 0
2206 일반 뉴비 [2] nyubi(1.246) 23.04.19 167 1
2205 🔎질문 힌트라도좀 알려줘 구현하고싶어 미치겠어 [6] ㅇㅇ(119.200) 23.04.17 282 0
2204 일반 다시 코오딩의 ㅋ도 모르는 나로 되돌아가고 싶다 [4] ㅇㅇ(211.234) 23.04.17 226 0
2203 🔎질문 성님들 살랴주세요 오프라인 pip설치 방법 점 [7] ㅇㅇ(223.62) 23.04.17 434 0
2201 🔎질문 파이썬 입문자인데 재밌네요 [4] ㅇㅇ(211.193) 23.04.17 253 0
2200 일반 아니 gui 만들기 개 ㅈ같내 ㄹㅇ ㅇㅇ(119.200) 23.04.16 164 0
2198 🔎질문 행님덜 파이썬 패키지 수동설치 방법 좀 알려주세요 ㅠㅠ [1] ㅇㅇ(121.131) 23.04.16 323 0
2197 🔎질문 Python이랑 같이 알면 좋은 프로그래밍 언어가 뭐가 있죠? [5] ㅇㅇ(220.86) 23.04.15 327 0
2196 🔎질문 진짜 파이썬 초짜 급하게 질문입니다 [9] ㅇㅇ(220.79) 23.04.14 272 0
2193 🔎질문 형들 질문 [1] ㅇㅇ(116.34) 23.04.07 218 0
2191 🔎질문 pydroid3 질문 [7] ㅇㅇ(223.62) 23.04.06 302 0
2189 일반 요즘 머신러닝 본격적으로 공부중인데 [3] ㅁㅁ(211.234) 23.04.05 324 0
2186 일반 파이썬 처음 독학해보는데 왤케 어렵냐 [4] ㅇㅇ(121.175) 23.04.03 731 2
2185 🔎질문 파이썬 문제 질문 [6] ㅇㅇ(121.189) 23.04.03 285 0
2184 🔎질문 python 버튼에 another.py연결가능하냐? 예 좀 들어줘라 [2] 334434(211.44) 23.04.02 205 0
2182 🔎질문 파이썬 헲미 도와주세요 [6] ㅇㅇ갤로그로 이동합니다. 23.04.02 259 0
2180 🔎질문 QT Designer 언어 영어로 바꾸는 방법 아는 사람? [1] 초보(211.44) 23.03.30 230 0
2179 🔎질문 C# 연동 관련해서 질문 있습니다. [4] ㅇㅇ(183.96) 23.03.29 299 0
2177 🔎질문 파이썬 뭐가 문제인거요 개초본데 [1] 1231(14.34) 23.03.27 295 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2