디시인사이드 갤러리

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

갤러리 본문 영역

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

ㅇㅇ(122.153) 2023.05.27 19:45:34
조회 171 추천 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
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 말머리 제목 글쓴이 작성일 조회 추천
- 설문 영포티룩도 멋지게 소화할 것 같은 40대 스타는? 운영자 25/10/27 - -
- AD 저녁 뭐먹지? 오늘의 메뉴 추천! 운영자 25/10/31 - -
2345 🔎질문 뭐가 잘못됐는지 알려주세요 [1] ㅇㅇ(61.82) 23.08.18 114 0
2344 🔎질문 파이썬 처럼 수치연산 빠르고 쓰기쉬운 타입언어 있나영? [5] ㅇㅇ(121.181) 23.08.17 180 0
2341 🔎질문 파이썬으로 m3u8 추적 다운로드 할 수 있음? [2] ㅇㅇ(14.51) 23.08.09 196 0
2339 🔎질문 파이썬으로 업비트 api 데이터 가져올때 [7] ㅇㅇ(220.72) 23.08.08 131 0
2337 🔎질문 pygame 설치 및 pip 업그레이드 안됨 [2] ㅇㅇ(112.154) 23.08.07 118 0
2336 일반 옛날에 물어봤었는데 다시 질문함 ㅠㅠ [3] ㅇㅇ(49.177) 23.08.07 141 0
2334 🔎질문 님들 파이썬 개초보가 라이브러리 구경하게 도와주세요 [3] ㅇㅇ(39.124) 23.08.03 252 1
2331 🔎질문 파이썬초보 입니다. 도와주세요 ㅜ [5] ㅇㅇㅇㅇ(49.168) 23.07.28 189 0
2327 🔎질문 선생님들 스크랩핑 for 반복문으로 텍스트 출력하는데 오류가 발생합니다 [2] ㅇㅇ(219.251) 23.07.18 159 0
2326 일반 문득 이런 생각이 들었습니다. [1] ㅇㅇ(223.39) 23.07.17 89 0
2325 🔎질문 파이썬 머신러닝 테크 타고 싶음 [8] ㅇㅇ(182.226) 23.07.17 419 0
2322 일반 오늘은 requests.post를 써봤습니다 ㅇㅇ(223.39) 23.07.15 145 0
2320 🔎질문 파이썬 완전 초보입니다. 도와주세요 [5] 아이고 인생아(115.143) 23.07.13 289 0
2318 🔎질문 님들 파이썬 주력인데 맥 사는거 어떻게 생각함? [9] ㅇㅇ(210.91) 23.07.10 207 0
2316 🔎질문 matplotlib plt을 Gradio return값 관련 질문입니다 ㅇㅇ(210.91) 23.07.06 123 0
2315 🔎질문 정규표현식 공부하는 중 [7] ㅇㅇ(211.234) 23.07.05 200 2
2314 🔎질문 pip로 exe 만드는법 질문입니다 [8] ㅇㅇ(220.79) 23.07.05 204 0
2310 일반 playwright 맛보기 실패... [3] dd(211.234) 23.07.02 225 0
2309 일반 chat GPT는 최고야... [2] ㅇㅇ(106.102) 23.06.30 217 0
2308 🔎질문 백준 문제풀이 [5] ㅁㅇ(118.35) 23.06.29 173 0
2307 일반 잘 되던 프로그램이 갑자기 먹통이다 [1] ㅇㅇ(220.79) 23.06.29 78 0
2306 🔎질문 tkinter에서 창 클릭무시? 같은거 하려는데 [4] sonrxnu(114.203) 23.06.29 116 0
2304 🔎질문 파이썬은 아닌데 다른 프로그램 질문 ㅇㅇ(118.235) 23.06.22 91 0
2302 🔎질문 파이썬 메모리 사용량 확인 어떻게 하는거죠? [1] ㅇㅇ(220.86) 23.06.21 116 0
2301 🔎질문 함수 성능테스트 비교하는 방법 [2] ㅇㅇ(220.86) 23.06.19 130 0
2300 🔎질문 이거질문좀 막대그래프왜이럼 [3] 강아지강아지갤로그로 이동합니다. 23.06.18 155 0
2299 🔎질문 진짜 이거 왜 안 되는지 제발 알려주세요 [1] ㅇㅇ(211.49) 23.06.17 111 0
2297 일반 요즘 ai그림 해본다고 python 코드들 보니깐 잼나네 [2] 라댜갤로그로 이동합니다. 23.06.14 228 0
2293 🔎질문 급하게 질문... [4] ㅇㅇ(218.234) 23.06.12 157 0
2292 🔎질문 태양-지구-달 궤도 구현해봤는데 50년만 넘어가도 달 궤도가 이상해짐; [4] ㅇㅇ(122.128) 23.06.11 200 0
2289 🔎질문 함수 읽는법 [4] ㅁㅇ(118.35) 23.06.08 191 0
2288 🔎질문 재귀함수 팩토리얼 [6] ㅁㅇ(118.35) 23.06.08 176 0
2287 일반 정규표현식은 뭔가 잘 안 익숙해지긴 함 [1] ㅇㅇ(211.234) 23.06.07 132 0
2286 🔎질문 데이터프레임 질문이요 [10] chqh(211.178) 23.06.07 156 0
2284 🔎질문 정규표현식 너무 어려운거 같아요? ㅠㅠ 암기해야하나요 [2] chqh(211.178) 23.06.07 156 0
2283 🔎질문 실력이 고수가 되고 싶으면 어떻게 해야하나요 chqh(211.178) 23.06.07 102 0
2282 🔎질문 from random import randint는 뭔가요? [2] ㅇㅇ(121.186) 23.06.07 135 0
2280 일반 물어봐놓고 자세히 알려주니까 지워부노 [1] ㅇㅇ(211.234) 23.06.06 102 0
2278 🔎질문 아는사람한테 사용하던거 갑자기 에러나는데..아는사람.. [2] ㅇㅇ(106.102) 23.06.05 103 0
2276 🔎질문 데이터 크롤링 파싱 관련해서 한 가지 물어봐도 됨? [12] ㅁㅁ(14.39) 23.06.03 492 0
2275 🔎질문 이 숫자 크롤링 할 줄 아시는 분??? [21] chqh(211.178) 23.06.02 216 0
2274 🔎질문 크롤링하는데 Expecting value: line 1 column 1 [4] chqh(211.178) 23.06.01 148 0
2271 🔎질문 파이썬 초보인데 따라하지도 못 하고 있습니다 도와주세요 ㅠ [3] 졸린데안자(121.169) 23.06.01 288 0
2270 🔎질문 파이썬 코드 검토좀 부탁합니다 [8] 노란하스터갤로그로 이동합니다. 23.06.01 169 0
2269 🔎질문 셀레니움 없이 크롤링 가능한 방법이 있을까요? [2] chqh(58.123) 23.05.31 177 0
2268 🔎질문 코딩으로 간단한 게임 만들었는데... [7] 가나다라마바사갤로그로 이동합니다. 23.05.30 218 1
2267 🔎질문 pyinstaller 가 pyqt 훅 ImportError 에러가 뜹니다 [9] ㅇㅇ(220.69) 23.05.30 155 0
2265 🔎질문 인터넷 글보고 간단한 키우기 미니게임 만들려는데 실행이 안됩니다 [4] 가나다라마바사갤로그로 이동합니다. 23.05.28 140 1
2263 🔎질문 횐님들 문외한이 물어볼 곳이 없어 찾아왔습니다... [1] ㅇㅇ(59.19) 23.05.28 160 0
2261 🔎질문 matplotlib 오류가 뜹니다... [5] ㅇㅇ(119.197) 23.05.27 149 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2