본문 바로가기

전체 글649

python - [랜덤, Random] ▣ 안녕하세요. 이번장에서는 파이썬에 random모듈을 사용해서 랜덤을 구현해보겠습니다. ▣ random() 함수는 0~1까지 사이에 숫자를 랜덤으로 주는 함수입니다. ▣ randrange() 함수는 (시작, 범위)까지에 숫자를 랜덤으로 주는 함수입니다. randrange(0, 10)이라고 하면 0~9까지 입니다. 그렇기 때문에 제가 범위라고 이름을 정했습니다. 범위는 내가 정한 숫자에 10 - 1을 한다고 생각하시면 됩니다. ▣ randint()도 randrange() 과 비슷합니다. 변수를 정의하고 randint(num1, num2) 라고 정의하면 됩니다. 동일하게 (시작, 범위)인데 여기서는 num1 = 0, num2 = 11 이면 0~11 모두 포함해서 랜덤으로 골라주고 값을 주게 됩니다. ▣ s.. 2021. 7. 25.
유니티 - [컴포넌트 추가, 삭제, 비활성화] ▣ 안녕하세요. 이번장에서는 컴포넌트를 추가, 삭제, 비활성화를 해보도록 하겠습니다. ▣ 3D로 프로젝트를 생성해주시고, 3D에서 캡슐로 하나하나 만들어주세요. 여기에 Capsule Collider와 PlayerManager스크립트를 추가해주세요. 그리고 스크립트를 들어가보겠습니다. ▣ 먼저 컴포넌트를 추가하려면 에디터에서도 가능하지만 스크립트에서 간단하게 코드로도 가능합니다. Addcomponent (); 코드로 리지드 바디 컴포넌트를 추가했습니다. 그리고 Rigidbody rid 변수에 GetComponent(); 값이 대입해주세요. 그리고 rid.AddForce로 리지드바디를 활용하여 Player캐릭터에 Y축에 힘을 주겠습니다. 저장을 하고 ▣ 시작을 하면 Player오브젝트에 Rigidbody 컴.. 2021. 7. 24.
C++ [레퍼런스변수, 포인터, 주소, 참조] ▣ 안녕하세요 이번장에서는 포인터를 꼭 공부하고 진행해주세요. 메모리 주소에 대한 개념이 없으면 어렵습니다. ▣ 첫번째는 포인터를 이용해서 변수에 값을 바꿔보도록 하겠습니다. int num = 10; 변수를 정의하고 int *으로 int에 주소를 저장하는 pNum를 주소를 선언해줍니다. 그리고 &num에 주소를 대입해서 넣어주세요 그리고 값과 주소를 출력하는 코드를 넣고 *pNum 포인터로 간접으로 접근해서 20으로 대입을 해주고 출력을 하면 주소가 동일한걸 확인할 수 있고, 값이 바뀐 것도 확인할 수 있습니다. ▣ 이부분을 C++에서는 더 직관적으로 사용하게 만든 게 레퍼런스 변수, 참조 변수입니다. ▣ 이번에는 C++에 레퍼런스변수로 주소를 저장해서 값을 바꿔보겠습니다. 쉽게 정의를 해보겠습니다. 포.. 2021. 7. 23.
C언어 - [화면지우기, 잠시대기, Sleep, cls, Windows.h] ▣ 안녕하세요. 이번장에서는 콘솔 창에 출력한 내용을 삭제하는 함수와 코드를 잠시 대기하게 하는 함수를 공부해보겠습니다. ▣ 우선 간단하게 3가지 문장을 출력해보겠습니다. 그리고 3개가 한꺼번에 출력되는걸 확인할 수 있습니다. 이제 이걸 1초마다 한개씩 추가해서 출력해보겠습니다. ▣ 먼저 #include 을 작성해주세요. 그리고 printf()함수 밑에 각각 Sleep()이라는 함수를 호출합니다. 밀리초 단위를 매개변수 값으로 넣어서 호출하면 되는데 1000을 넣게되면 1초를 기다리고 다음 코드를 진행하게 됩니다. 코드를 완성한 후에 디버그를 해보면 안녕이 나오고 1초 뒤에 나는 C언어야 ^^ 1초 뒤에 우린 함께 C언어 공부해볼까?...라는 문구가 나오는 걸 확인할 수 있습니다. ▣ 그럼 이번에는 pr.. 2021. 7. 22.
C++ [클래스_02, Class, get, set, 함수, 멤버함수, 멤버변수] ▣ 안녕하세요. 이번장에서는 저번장에 이이서 클래스에 get, set 함수를 만들어보도록 하겠습니다. 결론부터 이야기하면 get, set을 만드는 이유는 간단하게 이야기해서 클래스에 있는 멤버 변수를 접근하게 아니면 접근하지 못하게 구분하기 위한 함수라고 생각하시면 됩니다. 코드를 입력하면서 이야기를 이어가도록 하겠습니다. ▣ 저번장에서 공부했던 클래스 코드를 먼저 살펴보겠습니다. 클래스 멤버 함수 안에 조건문을 넣어서 잘못된 값을 멤버 변수에 대입하지 못하게 조건문을 넣은 코드입니다. 하지만 이 부분이 있더라도 game1.gameNumber = 10처럼 직접 멤버변수에 접근해서 대입을 하게 되면 무용지물이 되게 됩니다. 누구든 아무렇게나 멤버 변수를 접근할 수 있기 때문입니다. ▣ private 으로 .. 2021. 7. 21.
C++ [클래스_01, Class, 객체, 멤버변수, 멤버함수, 접근지정자] ▣ 안녕하세요. 이번장에서는 클래스를 공부해보겠습니다. 클래스는 C언어에 구조체 형식과 매우 비슷합니다. 쉽게 이야기해서 구조체 또한 변수, 배열, 함수를 구조화시켜서 한꺼번에 관리하기 위해 만든 구조입니다. 즉 클래스는 메모리를 하나에 객체화로 구조화 시켜 관리하기 위함입니다. 이해를 돕기 위해 코드를 하나하나 작성하면서 공부해보겠습니다. ▣ 클래스는 선언하려면 C언어에서의 struct 구조체와 동일하게 class 키워드로 선언을 합니다. 자료형 타입이라고 생각하시면 편하실 겁니다. class를 작성한 다음 옆에 클래스에 이름을 치고 {} 괄호로 클래스에 범위를 지정해주세요. 구조체와 함수에 형식과 동일합니다. 그런 다음 public: 접근지정자로 외부에서 접근할 수 있게 지정을 해줍니다. 이게 있어야.. 2021. 7. 20.
C++ [namespace, 네임스페이스] ▣ 안녕하세요 이번장에서는 네임스페이스를 공부해보겠습니다. 네임스페이스는 쉽게 정의하면 동일한 이름으로 변수나 함수, 배열 등을 사용할 때 소속을 지정해 그걸 구분하기 위한 키워드라고 생각하시면 됩니다. 그럼 간단한 코드를 통해서 하나하나 공부해보겠습니다. ▣ 공부하기 전에 꼭 전역 변수, 지역변수를 공부하고 시작해주세요. ▣ num이라는 변수를 두가지 형식으로 정의했습니다. 하나는 전역변수 하나는 지역변수입니다. main에서 같은 이름에 num을 출력해보면 지역변수를 출력하는 걸 확인할 수 있습니다. 다시 말해 함수 안에 있는 지역변수가 우선순위로 접근한다라는 걸 확인할 수 있습니다. 그럼 전역변수를 접근하려면 어떻게 해야 할까요 ▣ :: 연산자를 사용하여 ::num을 하게 되면 전역 변수를 접근하게 .. 2021. 7. 16.
C++ [디폴트 매개변수] ▣ 디폴트 매개변수는 간단합니다. 함수에 매개변수에 초기값을 지정해주는 게 디폴트 매개변수라고 생각하시면 됩니다. ▣ function(int num1 = 1)을 해주시면 매개변수 기본값이 지정하게 되는데 여기서 중요한 부분은 호출을 하는 호출자가 값을 전달해주냐 주지 않느냐에 따라 달라집니다. function() 함수를 그냥 호출했을 때와 153, 39처럼 값을 전달해줄 때에 출력 결과가 다른 걸 볼 수 있습니다. 그냥 호출해주었을때 1이 출력되는 걸 확인할 수 있고, 값을 전달해준 호출은 그 값이 출력되는 걸 확인할 수 있습니다. 즉 우선순위는 호출자가 전달해주는 값입니다. ▣ 이번에는 여러개에 매개변수를 받아 호출해보겠습니다. 이번에는 num1, num2, num3 이렇게 3개에 매개변수로 값을 받아.. 2021. 7. 13.
유니티 - [오브젝트복제, Instantiate, 프리팹, 총알발사] ▣ 먼저 3D로 프로젝트를 생성하고 캡슐로 3D 오브젝트를 생성해주세요. 게임 오브젝트에 이름을 player로 바꿔주세요. 그리고 3D오브젝트로 Plane 땅도 생성해주세요. 그런 다음에 총알과 플레이어 색을 구분하기 위해 머테리얼을 생성해주세요. 색은 여러분들이 원하시는 색으로 자유롭게 바꿔주세요. ▣ 그런 다음에 빈 게임 오브젝트를 생성해주시고 이름을 ShotPos로 지정해주세요 이건 총알을 쏠 때 생성되는 위치로 지정할겁니다. 그리고 중요한건 처음 생성할 때 꼭 Posistion에 값을 0,0,0으로 초기화를 해주신 다음에 Player오브젝트 자식으로 넣어주세요. ▣ 이번에는 총알을 생성해주세요. 저는 구분하기 쉽게 3D 오브젝트에 큐브로 생성했습니다. 이름도 바꿔주시고 크기와 색도 자유롭게 바꿔주.. 2021. 7. 13.
C++ [for문, 포인터, 레퍼런스변수] ▣ C언어에 for문 형식입니다. (초기식, 조건, 증감) 이렇게 for문 함수 형식으로 C++에서 사용할 수 있습니다. 그리고 C++에서의 for문 스타일도 존재합니다. ▣ for( 변수 : 범위 ) 에 형식으로 for문을 작성할 수 있습니다. 그럼 범위에 넣었던 aList에 하나하나에 요소에 값을 변수에 하나씩 대입을 합니다. 그리고 그 범위가 끝날때까지 반복을 하는 형식입니다. ▣ 이번에는 for문을 이용하여 배열에 값들에 +1씩을 더하는 코드를 작성해보겠습니다. 하나하나 요소를 접근하여 i++를 하고 다시 for문을 활용하여 출력을 해보면 값이 하나도 안바뀌어 있는걸 확인할 수 있습니다. ▣ 우리가 여기서 생각해야할 부분은 for에 있는 (int i입니다. for() 이렇게 괄호가 있으면 함수이기.. 2021. 7. 9.
C++ [함수 오버로딩] ▣ C언어에서는 똑같은 이름에 함수를 선언하고 정의해서 사용하게 되면 컴파일 오류가 나오게 됩니다. 하지만 C++에서는 이 부분을 함수 오버 로딩을 통해 여러 함수를 같은 이름으로 사용할 수 있습니다. ▣ 전에 C언어 코드를 .cpp소스 코드 파일을 만들어 코드를 작성해보겠습니다. C++에서 sum이라는 이름에 함수를 두 가지를 선언했습니다. 함수 오버로딩을 하는 방법은 아주 간단합니다. 위에 코드처럼 함수에 매개변수에 변수에 갯수가 다르거나, ▣ 매개변수에 변수에 갯수가 같더라도 자료형이 다르면 같은 이름에 함수를 사용할 수 있습니다. 이게 함수 오버로딩입니다. 2021. 7. 2.
C++ [구조체 함수 사용] ▣ 먼저 C언어와 동일하게 구조체를 선언해줍니다. typedef는 struch My_Game을 하나에 별칭으로 지정하기 위함이니다. MyGame;으로 지정하면 main함수에서 struch My_Game 이렇게 작성하지 않아도 MyGame mygame 이렇게 선언할 수 있습니다. ▣ 그리고 더하기를 함수를 만들어주시고 main함수에서 mygame.sum = Calculator(mygame.number1, mygame.number2); 로 함수에 우리가 초기값으로 지정한 값을 주고 반환값을 sum에 넣어주고 출력을 하면 값이 잘 나오는걸 확인할 수 있습니다. 2021. 6. 8.
파이썬 - [웹 클로링_1, 간단한 정보수집] ▣ 우선 cmd 명령 프롬프트를 실행하셔서 pip install requests beautifulsoup4를 설치해주세요. ▣ 먼저 우리가 www.naver.com 네이버를 들어가서 간단한 정보를 가지고 오겠습니다. 홈페이지에 들어가서 F12 키를 누르시면 개발자도구가 나오는 걸 확인할 수 있습니다. 웹사이트에 코드라고 생각하시면 되는데 html 형식으로 되어 있습니다. ▣ 먼저 import urllib.request 를 선언해주세요. 이건 쉽게 이야기해서 웹사이트에 정보를 요청해서 그 정보를 읽어오는 모듈이라고 생각하시면 됩니다. 그리고 url 변수에 = "http://www.navercom" 문자열 형식으로 대입을 해주세요. req = urllib.request.urlopen(url) 을 넣어주세요... 2021. 6. 3.
C언어 - [글자 색 변경, 콘솔창 크기, 콘솔창 색, 글자 배경색] ▣ 먼저 윈도우 운영체제 기준으로 콘솔 창 크기와 콘솔 창 색을 변경해보겠습니다. #include 를 선언해주세요. 그리고 system("mode con:cols=30 lines=30"); 형식으로 system() 함수 매개변수 안에 문자열 형식으로 mode con을 하게 되면 콘솔에 모드를 바꾼다라는 이야기이고 cols 가로, lines 세로를 변경하는 크기를 의미합니다. 그리고 system("color 30")처럼 콘솔 창에 색을 지정할 수도 있습니다. ▣ 글자에 색과 글자에 배경색을 변경하려면 우선 함수를 선언 및 정의를 해야 합니다. void ColorSet() 함수로 만들고 (int backColor, int textColor)로 매개변수를 각각 지정해줍니다. 그리고 HANDLE 윈도에 핸들 값.. 2021. 6. 2.
C++ [문자열, string, 문자열 함수] ▣ 문자열을 다뤄보겠습니다. 우선 string 클래스는 사용하기 위해서는 #include 를 선언해줘야 합니다. 보통 C언어에서는 문자열을 다루기 위해서는 char name []에서 처럼 char 하나에 문자를 여러 개 저장하기 위한 배열을 필요합니다. 하지만 C++에서는 string 클래스는 통해 문자열을 char 하나하나가 아닌 string 자료형 형식으로 하나에 클래스로 사용할 수 있습니다. string name1을 선언하고 name1에 문자열을 정의한 다음에 출력을 해보면 배열과 동일하게 문자열이 잘 출력되는 걸 확인할 수 있습니다. ▣ 이번에는 문자열을 입력받겠습니다. 우리는 입력을 받을 때에는 std::에 있는 cin을 사용했습니다. 하지만 cin 같은 경우 한 단어 단위로 입력을 받습니다. .. 2021. 5. 31.
유니티 - [카메라 오브젝트 따라가기, 점프, AddForce, Velocity] ▣ 먼저 여러분들이 원하시는 player 오브젝트와 Ground 바닥을 만들어주세요. Ground오브젝트에 Tag를 꼭 ground로 바꿔주세요. 이건 나중에 점프를 중복해서 하지 않기 위함 입니다. ▣ 그리고 player에는 collider와 Ridgibody 그리고 스크립트를 넣어주세요. ▣ Main Camera 또한 스크립트를 넣어주세요. 그리고 카메라가 공을 어떻게 보이게 따라갈지에 대한 위치를 지정해주세요. 카메라 위치는 잘 정해주셔야합니다. 그래야 그 위치로 카메라가 계속 공을 따라가게 하는 코드를 진행합니다. ▣ 먼저 플레이어 스크립트를 작성하겠습니다. speed, jump 는 public 으로 지정하셔서 만들어주세요. 우리가 유니티 에디터상에서 스피드와 점프를 조절하면서 진행하겠습니다. 그.. 2021. 5. 27.
파이썬 - [pygame, 충돌감지_1, 스프라이트, collide] ▣ 이번장에서는 pygame에 이미지를 서로 충돌하는 코드를 작성하도록 하겠습니다. 방법이 많이 있습니다. 밑에 있는 pygame메뉴얼을 참고해주시고, 저는 간단한 방법 몇가지만 공부해보도록 하겠습니다. https://www.pygame.org/docs/ref/sprite.html pygame.sprite — pygame v2.0.1.dev1 documentation The first point of collision between the masks is returned. The collision point is offset from sprite1's mask's topleft corner (which is always (0, 0)). The collision point is a position with.. 2021. 5. 26.
C++ [메모리 할당, new, delete] ▣ 이번장에서는 c++에서 메모리 할당하는 코드를 공부해보겠습니다. c언어에서 malloc()함수와 free() 함수를 모르시는 분은 c언어 코드 예제를 참고해주세요. ▣ 우리가 힙영역에서 메모리를 직접 할당하려면 우선 int *p 포인터를 사용해야 합니다. 포인터는 주소를 저장하는 변수입니다. 그리고 내가 원하는 크기만큼 메모리를 할당하려면 c언어에서는 int *p = malloc(크기)로 할당해서 사용했습니다. 하지만 c++에서는 더 직관적으로 간결하게 new 키워드를 사용하여 할당합니다. int *p = new int; 이렇게 하게 되면 int 크기로 4byte를 할당할 수 있습니다. ▣ 그렇게 하고 cout으로 sizeof() 함수를 이용하여 메모리에 크기와 주소 그리고 값을 출력하면 우리가 할당.. 2021. 5. 23.
C++ [출력, 입력] ▣ 먼저 입출력을 사용하기 위해서는 #전처리기로 선언을 해줘야합니다. #include 표준입출력을 하기 위한 헤더파일을 선언했습니다. 그리고 main 함수에 std:: 를 넣어주세요 이건 std::라는 클래스에 접근한다라고 생각하시면 됩니다. cout은 c는 콘솔, out은 output을 생각하시면 됩니다. x >> y; 두개를 입력받기 위해 x, y를 넣어주세요. 그리고 입력을 해주시면 되는데, 여기서 중요한건 >> x >> y는 띄어쓰기를 기준으로 두개에 정수를 입력받는다라는 것 기억해주세요. ▣ 또한 C언어에서처럼 scanf함수로 입력 받을 수도 있습니다. 이렇게 띄어쓰기 기준으로 입력을 받습니다. 여기서 scanf에 _s 를 붙이는 이유가 궁금하시다면 c언어 공부에 입력부분을 참고해주세요. ▣ 또.. 2021. 5. 21.
파이썬 - [이미지 애니메이션] ▣ 이번장에서는 파이썬 이미지를 여러 개 그려 움직이는 애니메이션을 만들어보겠습니다. pygame.event.key 에 관련하여 캐릭터가 움직이는 부분은 따로 공부해주세요. ▣ 캐릭터에 움직이는 애니메이션 이미지는 여기 홈페이지를 통해 무료를 다운로드하여주세요. https://itch.io/game-assets/free ▣ 또한 이미지 크기 및 방향을 변경해주셔야 합니다. 오른쪽, 왼쪽을 움직이는 이는 애니메이션을 제작하기 때문에 꼭 오른쪽 방향, 왼쪽 방향 이미지를 다운로드하거나 편집해서 수정해주세요. https://www.iloveimg.com/ko/crop-image 이미지를 신속하게, 무료로 잘라내세요! JPG, PNG, GIF 파일을 신속하게, 무료로 잘라내세요! www.iloveimg.com .. 2021. 5. 20.
스크래치 - [리스트 간단하게 순위 구하기] ▣ 리스트 순위 구하기를 간단하게 만들어보겠습니다. 이 코드는 Score 리스트에 있는 AA BBB CCC 이렇게 다른 점수가 Score리스트에 들어있습니다. Score리스트에 들어 있는 AA BBB CCC에 갯수에 따라 순위를 정하는 코드를 만들어보겠습니다. 단순하게 1위만 만들어보았습니다. ▣ 우선 점수를 저장할 리스트 Score리스트를 만들어주세요. 그리고 순위를 저장할 순위 리스트와 A, B, C 갯수를 저장할 변수도 만들어주세요. 그리고 리스트에 항목에 번호를 지정할 번호라는 변수도 만들어주세요. ▣ 우리가 계속 테스트하기 위해서 초기화를 먼저 해줘야합니다. 우선 리스트에 있는 모든항목을 삭제하는 코드와 변수 초기와를 해주세요. 그런 다음에 Score리스트에 A, B, C 원하는 갯수로 반복해서.. 2021. 5. 19.
유니티 - [2D캐릭터 회전] https://assetstore.unity.com/packages/2d/characters/bolt-2d-dinorun-assets-pack-188721 Bolt 2D DinoRun Assets Pack | 2D 캐릭터 | Unity Asset StoreElevate your workflow with the Bolt 2D DinoRun Assets Pack asset from Goldmetal. Find this & more 캐릭터 on the Unity Asset Store.assetstore.unity.com▣ 여기서 에셋을 다운받으세요. ▣ 우선 코드를 진행하기전에 Transform에서 어떤 값을 조절해야 2D 캐릭터가 회전하는지 확인해보겠습니다. player에 오브젝트에서 Transform에 R.. 2021. 5. 18.
C언어 - [malloc, 메모리할당, memset] ▣ 메모리를 할당하려면 먼저 #include 를 선언해주세요. 그리고 주소를 저장하는 변수 포인터에 malloc(sizeof(int))함수로 메모리를 할당해주세요. 그럼 int 4byte만큼 메모리가 할당되고 그 메모리에 주소 값이 포인터에 대입이 됩니다. 그리고 %p 형식으로 메모리 주소를 확인해보면 이렇게 각각에 주소가 나오는 걸 확인할 수 있습니다. ▣ 여기서 기억해야 할껀 malloc()함수의 원형 형태는 void * malloc(size)입니다. 그렇기 때문에 void 반환형이 없다라는 자료형이므로 만약 int*주소를 반환하고 싶다면 (int*)malloc(size)로 코딩을 진행해야 합ㄴ디ㅏ. ▣ 직접 중단점을 찍고 디버그를 해서 메모리를 확인해보겠습니다. p2에 값을 확인해보면 이렇게 4by.. 2021. 5. 17.
C언어 - [공용체, 열거형, 구조체비트필드] ▣ 우선 공용체는 쉽게 이야기하면 메모리를 공용으로 사용하는 구조체라고 생각하시면 됩니다. union으로 구조체와 동일하게 선언해주시고, 안에 변수를 선언해주세요. 그리고 main함수에서 union Game game;으로 정의한 후에 printf() 함수로 각각에 메모리 크기를 출력해보세요. 그럼 메모리 크기가 가장 큰 자료형 크기로 공용체가 정의되어 있음을 확인할 수 있습니다. ▣ 같은 메모리를 사용하는지 값을 넣어서 확인해보겠습니다. char, short, int 형 중에 가장 큰 자료형인 int game.score에 값을 넣어보겠습니다. 숫자 앞에 0x가 있으면 16진수입니다. 형식 지정자도 % x를 해야지 16진수로 출력되게 됩니다. ▣ 출력해보면 나누어져 값이 들어가 있는 걸 확인할 수 있습니다.. 2021. 5. 17.