기본 콘텐츠로 건너뛰기

11월, 2020의 게시물 표시

[pygame] Cannon 게임 프로젝트 3 - 텍스트 표시

 제작 로그 3 - 화면에 텍스트 표시  pygame에서 모든 이미지는 surface 에 그려집니다. surface 는 이미지를 그리는 도화지 같은 것이라고 생각하시면 됩니다.  게임이 표시되는 화면도 surface 이고 화면에 표시되는 이미지도 읽어들이면 surface 객체로 생성됩니다.  따라서 텍스트도 surface 로 만들어져서 화면에 표시됩니다. 화면에 텍스트를 표시하기 위해서는... 1. font = pygame.font.SysFont("notosanscjkkr",30) 2. text_start = font.render("게임을 시작하려면 's' 키를 누르세요.",True,(0,255,0)) 3. background.blit(text_start,(150,300)) 위의 3 과정을 거칩니다.  1번은 폰트 객체를 생성하는 것 입니다.  2번은 텍스트가 표시된 Surface 를 만드는 것이고요. 3번은 화면에 표시되는 Surface 에 텍스트 이미지가 들어간 Surface 를 복사해 넣는 것입니다. 이 3번은 이전에 이야기 했던 while 문(게임의 메인루프)에 작성해야 합니다.  각 순서에 대한 자세한 설명은 아래에서 하나씩 하겠습니다. > 1번 폰트객체의 생성방법은 2가지가 있습니다.  첫째는 위와 같이 system 폰트를 이용하는 방법이고요.  두번째는 직접 폰트 파일을 읽어들여서 사용하는 방법입니다.   *시스템 폰트란 OS 에 등록되어 있는 폰트를 말합니다. 이 경우는 등록된 이름만 알면 위의 예처럼 바로 사용할 수 있습니다. 시스템이 등록된 폰트는 pygame 의 font 객체의 get_fonts() 함수로 구할 수 있습니다.  *폰트파일을 직접 읽어들이는 방법은 외부에서 다운받은 ".ttf " 파일을 직접 읽어들여 사용합니다. 이 경우는 게임을 배포한다면 폰트의 라이센스에 주의 해야 합니다.  파일을 실행파일과 같은 디렉토리에 복사해 넣고(여기선 폰트파일이 hangul

자동차 공기 주입기 8mm 에어척

  자동차 공기 주입기를 별도로 구입해서 쓰다가 고장나서 현재는 자동차의 펑크 수리킷에 있는 컴프레셔를 쓰고 있습니다.  예전 쓰던 제품도 그랬지만 공기주입기를 사용할때 연결 부분이 나사형태로 되어 있어서 조이고 풀고 하는게 시간도 좀 걸리고 바람도 좀 새고 그랬습니다.  그래서 나사로 채결하는 부분을 잘라내고 한번에 연결할 수 있도록 교체하는 경우도 있었는데 위의 제품이 있으면 자르지 않고도 사용할 수 있습니다.  자동차 공기 주입기의 나사형태로 된 부분에 끼워주기만 하면 됩니다.  이걸 사용하면 나사처럼 풀고 조일 필요없이 눌러서 끼워주기만 하면 되서 정말 편합니다.  요즘엔 국내에서도 수입해서 파는 업자가 좀 있는데 검색사이트에서 8mm 에어척으로 검색해 보면 좀 저렴하게 파는 판매자가 있습니다. 다만 배송비가 제품 가격보다 비쌉니다. 알리 익스프레스에서 사면 무료배송이긴 한데 보통 트래킹이 안되는 방법으로 보내기 때문에 분실의 위험성도 있고 배송 시간도 오래 걸린 다는 단점이 있습니다. 'car air connector' 정도로 검색해서 뒷부분이 나사 형태로 된걸 구입하면 됩니다.  나사 결합 형태의 공기주입기를 쓰신다면 한번 구입을 고려해 볼만한 제품입니다. 상당히 편합니다.  

에픽게임즈 이번 무료게임 머드러너

 이번 머드러너(mudrunner)는 저는 이미 보유하고 있는 게임이라 큰 감흥(?)은 없네요. ^^; 구입하고 플레이 했던게 꽤 옛날이라 오랜만에 설치해서 다시 실행해 보니 조금 변한것도 같아서 다시 좀 플레이 해 봐야 겠습니다. 예전 스팀판의 경우는 영어만 가능했지만 한글 데이터는 게임내에 존재 하고 있어서 게임파일을 좀 조작하면 한글로 즐길 수 있었는데요. 에픽게임즈에서 이번에 무료로 제공되는 머드러너는 별다른 파일의 조작없이 한글로 출력됩니다. 심의 때문인가 싶기도 한데, 어쨌던 그냥 한글로 잘 나오니 귀찮은 작업을 하지 않아도 한글로 즐길 수 있습니다.  메뉴 화면 부터 한글이 잘 나옵니다. > 한글로 표시되니 보기 편하고 좋습니다. > 운전자 시점도 가능한데 개인적으로는 이 시점이 게임하긴 더 편하더군요. 다만 2번째 스크린샷을 보시면 아시겠지만 첼린지 보너스 조건이 운전석 모드로 운전을 하라고 하니...시키는대로 해야 겠죠? ㅡㅡ; > 초반 튜토리얼에서 대략 이 게임을 어떻게 즐겨야 하는지 설명해 주니까 오프로드나 자동차에 대해서 잘 모르시는 분은 튜토리얼 대충 넘기지 마시고 정확히 숙지 하시길 바랍니다.  4륜 넣고 락걸고 윈치 쓰는 법 정도 알면 되니 크게 어렵진 않습니다. 그리고 이 게임은 레이싱 게임이 아니라 운전 노동 게임이고 게임 이름대로 진흙 바닥을 헤치며 짐을 날라야 하기 때문에 거의 기어다니는 수준으로 이동을 하게 됩니다. 따라서 성격 급하신 분들은 즐기기 어려울 수 있습니다.  하지만 드문 장르의 게임이니 이번 기회에 무료로 받아서 꼭 즐겨보시길 바랍니다.   https://www.epicgames.com/store/ko/product/mudrunner/home 계정이 있으시면 위의 링크에서 받으실 수 있으며, 아래쪽에 무료 DLC 3개가 있으니 꼭 같이 받아서 설치하시길 바랍니다.  

blogger 에서 highlight js 사용시 python 의 주석부분 에서의 문제

 제 블로그에 게시하는 소스 코드를 보기 좋게 할 목적으로 highlight js 를 설치 했습니다. 그런데 문제가 있더군요.    보시면 아시겠지만 뭔가 이상합니다. 주석문인 # 이후로 하이라이트 기능이 제대로 동작하지 않고 있습니다. 검색을 해 본 결과 html 태그의 br 때문이라고 합니다. 블로그에 소스를 복사해 넣을때 html 모드에서가 아닌 일반모드에서 복사해 넣으면 줄바꿈인 br 태그가 붙는데 그것 때문에 생기는 문제입니다. 해결 방법은 2가지 인데 .... 1. 소스코드를 붙여 넣을때 html 모드로 전환해서 붙여넣는 방법 2. highlight js 의 설정을 바꾸는 방법 일반 에디트 모드에서 소스코드를 붙여 넣는 방식을 사용하려면 2번째 방법을 써야 합니다. 저는 2번째 방식을 쓰기로 했습니다. 이 경우는 블로그 스킨의 html 소스 수정기능을 이용해서 다음 문장을 추가 해 넣어야 합니다. <script>hljs.configure({useBR: true});</script> 대충 내용은 줄바꿈 태그인 br 을 사용하겠다는 겁니다.  제 경우는 아무래도 일반 에디터 상태에서 편집을 하는게 더 쉬울거 같아서 이 방법을 쓰기로 했습니다.  추가 하는 곳은 highlight js 를 로드하기 전에 넣어주면 됩니다.  <script>hljs.initHighlightingOnLoad();</script> 블로그 스킨 html 소스에서 위의 문장 앞에 복사해 넣으시면 됩니다. 결과는 다음과 같습니다. 하이라이트 기능이 잘 작동되고 있습니다. > 참고로.... 위와 같이 br 태그를 사용하게 설정하면 1번과 같이 html 상태에서 복사해 넣은 소스는 줄바꿈 없이 1줄로 나오기 때문에 두 방법은 공존해서 사용할 수가 없습니다. 한가지를 선택해야 합니다. 

[pygame] Cannon 게임 프로젝트 2 - 기본 구조와 키보드, 마우스 처리

 제작로그 2 - pygame 의 기본구조  import pygame   SCREEN_X = 800    #게임창 x 크기 SCREEN_Y = 600    #게임창 y 크기   screen = pygame.display.set_mode((SCREEN_X,SCREEN_Y)) #게임 윈도우 생성 background = pygame.Surface(screen.get_size())        #게임 화면을 그릴 surface   done=True   while done:        #이 루프를 벗어나면 게임이 종료됨     ev = pygame.event.get()     for event in ev:         if event.type ==pygame.QUIT:     #창의 종료버튼이 눌렸을때 게임종료             done = False              if event.type == pygame.MOUSEBUTTONUP:             pass         if event.type == pygame.MOUSEMOTION:    #마우스를 움직이고 있음             print(pygame.mouse.get_pos())    #현재 마우스 커서의 위치를 구함         if event.type == pygame.KEYDOWN:        #키보드의 키가 눌렸음             if event.key == pygame.K_r:       # 'r' 키가 눌렸음                 pass             if event.key == pygame.K_s:         # 's' 키가 눌렸음                 pass         break       keys=pygame.key.get_pressed() #키보드가 눌렸는지 확인     if keys[pygame.K_LEFT]: #왼쪽 화살표 키가 눌렸을 경우         pass     if keys[pygame

[pygame] Cannon 게임 프로젝트 1 - 프롤로그

제작로그 1 - 프롤로그  예전 부터 pygame 을 한번 사용해 보고 싶었습니다만...여러 이유로 진행이 안됐었는데 이번에 천천히 진행해 보고 있습니다.     현재 대략 진행중인 상태입니다.  이 게임은 예전에 제가 8비트 Apple 컴퓨터를 구입했을때 받은 디스켓에 들어있던 게임 중 하나였는데 오래되서 정확히 기억은 안나지만 대충 기억을 되살려 비슷하게 만들어 보았습니다. 게임의 규칙은 매우 간단해서 낙하산을 타고 내려오는 적들(제 경우는 로봇군단으로 설정)을 아래의 무기(대포)로 땅에 내려오기 전에 맞추면 되는 게임입니다.  모두 4기의 로봇이 땅에 착지하면 대포는 폭파되어 게임이 끝나고요. 대포가 있는 저 사각형 위는 한대라도 착지 하면 게임은 끝납니다. 대략적인 구현은 끝난 상태인데요. 제가 pygame 을 처음 다뤄보고, 원래 pygame 을 완전히 파악하고 진행하는게 아니라 공부 겸 해서 진행하는 프로젝트였고 그러다 보니 처음부터 치밀하게 구상해서 코딩을 하지 않았기 때문에 소스가 전혀 정리가 안되는 상태고 맘에 안듭니다만 기록을 남겨두지 않으면 또 까맣게 잊어버릴게 분명하기에 간단히 정리해 기록해 둘 생각입니다.  다음에는 조금 나아 지겠죠. 아마도요....ㅎㅎ  현재 로봇이나 대포의 폭파 표현등을 어떻게 할지를 고민중입니다. 이런 연출(?)은 해본적이 없어서....사운드도 좀 넣어야 되고....

Pavis Scorpio 블랙박스

 유튜브에서 블랙박스 보다 보니 별의 별일이 다 있길래 후방 블랙박스가 있어야 겠다는 생각이 들었습니다.  제 경우는 예전 차에서 사용하던 720p 블랙박스를 새차에도 이식해서 사용하고 있었는데요. 돈들여서 전후방 되는 좋은 걸 살 것인가, 그냥 적당한 전방용을 하나 더 사서 뒤에 설치 할 까를 고민하다가 저렴한 블랙박스를 뒤에 하나 추가 하기로 하고 옥션에서 제일 싼걸로 하나 샀습니다. 얼마전 까지 판매했는데 막상 글쓰는 지금은 구입 불가네요. 다른곳에서도 팔기는 하는데 옥션보다 만원정도 더 비싸네요. http://hdmoden.com/bbs/board.php?bo_table=product&wr_id=7 상세한 내용은 위의 제품 설명을 보시면 될 것 같고요. 간단히 설명하면 1채널 720p 30fps 의 저렴이 블랙박스 입니다. LCD 화면 같은 것도 없고요. 아주 단순합니다.  위의 상품설명에는 외장 gps 를 달 수 있다고 써있는데 옥션 판매자의 Q/A 를 보면 제품을 구할 수 없다고 합니다. 다른 gps 를 극성만 맞춰 달면 작동할지는....? 글쎄요....? microsd 8기가 메모리 카드가 기본으로 들어 있는데요. 제 경우 화질을 보통으로 설정하니 1분에 대략 40M 정도의 용량의 파일이 만들어 집니다. 요즘 메모리 카드 저렴하니 메모리 카드는 어차피 새로 하나 구입하는 쪽이 낫습니다.  제품 사양에 보이듯이 저렴이라 메모리 카드는 최대 32기가 까지 사용 가능합니다.   제 경우는 주행 중 사고 확인용이라 상시로 설치하지는 않았습니다.    화질 보통으로 저장된 화면입니다. 날짜는 신경쓰지 마세요. gps 가 없어서 따로 맞춰 줘야 하는데 깜빡해서 그냥 쓰고 있습니다. 조금만 멀어져도 번호판 확인은 바로 뒤에 있는 차도 쉽지 않습니다. 바로 뒤에 트럭 번호판을 지웠는데 사실 안해도 거의 알아보기 힘든 정도 입니다. 동영상은 여러 프레임을 조합하면 가능할 지도 모르겠습니다만....  저렴한 제품이라 내구성이 어떨까가 문제인데......저도