PowerPoint 프레젠테이션

Size: px
Start display at page:

Download "PowerPoint 프레젠테이션"

Transcription

1 액션게임만들기

2 게임기획 액션게임만들기 제작하기 레벨디자인 2

3 * 액션게임을만들기까지 기획프로그래밍레벨디자인 3

4 1. 액션게임기획의과정 기획단계 기획서플레이어게임의틀 4

5 1-1. 기획서작성 기획단계 어떤게임을만들고싶은지, 어떤놀이가필요한지, 어떤형태로진행할것인지, 이게임이재미있을지, 목표 기획서 5

6 1-2. 플레이어선정 기획단계 Why? 대상에따라아이디어방향이달라짐 남녀, 나이대, 생활환경, 직업등다양한변수고려 많은시간을투자해야함! Chap 5~7 대상 : 기획과프로그래밍을공부하고싶은사람 6

7 1-3. 큰틀짜기 기획단계 장르 대상플레이어에맞춰결정 가로스크롤점프액션 액션게임 규칙, 목표 진행방향 변화 캐릭터 액션 기획서로작성! 세계관 7

8 2. 사양서 기획단계 기획서는전체적인틀을잡아주는역할을한다면 사양서는프로그래머가무엇을만들어야하는지파악할수있는기초작업. 시퀀스 사양서 게임속요소 플레이어캐릭터 그외 ex) 방해캐릭터, 아이템등 8

9 2. 사양서 * 플레이어캐릭터사양서 기획단계 9

10 2. 사양서 * 플레이어캐릭터사양서 기획단계 10

11 * 액션게임을만들기까지 기획프로그래밍레벨디자인 11

12 * 기초준비 구현 - 프로그래밍 1. 새프로젝트만들기 2. 레이아웃설정맞추기 12

13 * 기초준비 구현 - 프로그래밍 3. Player 와 Floor 만들기 - Player 1 [GameObject] [Create Other] [Sphere] 2 Hierarchy에생긴 Sphere를 Player 로변경 3 Player를선택하고 Inspector에있는 [Tag] 를 Player로설정한다. 4 Player의 [Transform/Position] 을 (X:0, Y:2, Z:0) 으로설정한다. 5 Player의 [Transform/Rotation] 을 (X:0, Y:90, Z:0) 으로설정한다. 13

14 * 기초준비 구현 - 프로그래밍 3. Player 와 Floor 만들기 - Floor 1 [GameObject] [Create Other] [Cube] Cube 2 개를만들어각각 Floor0, Floor1 로이름지정 2 [Assets] [Create] [Material] 도 2 개만들어준다. 3 Floor0 에 Floor0Material 을드래그앤드롭한다. ( 프리팹 ) 4 Floor1 에 Floor1Material 을드래그앤드롭한다. ( 프리팹 ) 5 Floor1Material 을선택하여 Inspector 를표시한후색깔을빨간색으로설정한다. - Block 1 [GameObject] [Create Empty] 2 Hierarchy의 GameObject를 GameRoot 로변경 14

15 구현 - 프로그래밍 화면의발판이되는블록을만들고, 블록이왼쪽끝으로넘어가면 지워지는부분까지구현해보도록하자. 15

16 * 플레이어를따라가는카메라 구현 - 프로그래밍 앞으로계속나아가려면플레이어가있어야하고, 그플레이어를쫓아가는카메라가필요! 16

17 * 플레이어를따라가는카메라 구현 - 프로그래밍 - 오른쪽으로진행 17

18 * 플레이어를따라가는카메라 구현 - 프로그래밍 - 카메라 CameraControl.cs private GameObject player = null; private Vector3 position_offset = Vector3.zero; void Start() { // 멤버변수 player에 Player 오브젝트를할당. this.player = GameObject.FindGameObjectWithTag("Player"); // 카메라위치 (this.transform.position) 와. // 플레이어위치 (this.player.transform.position) 의차이를보관. this.position_offset = this.transform.position - this.player.transform.position; void LateUpdate() { // 카메라현재위치를 new_position에할당. Vector3 new_position = this.transform.position; // 플레이어의 X좌표에차이값을더해서 new_position의 X에대입. new_position.x = this.player.transform.position.x + this.position_offset.x; // 카메라위치를새로운위치 (new_position) 로갱신. this.transform.position = new_position; 18

19 * 블록만들기 구현 - 프로그래밍 전부를미리만드는것보다진행하면서만들어내는것이더효율적! 2 개의스크립트를구현해서블록을제때제때만들어보도록하자. 19

20 * 블록만들기 구현 - 프로그래밍 BlockCreator.cs public GameObject[] blockprefabs; // 블록을저장할배열. private int block_count = 0; // 생성한블록의개수. void Start() { void Update() { public void createblock(vector3 block_position) { // 만들어야할블록의종류 ( 흰색인가빨간색인가 ) 를구한다. int next_block_type = this.block_count % this.blockprefabs.length; // 블록을생성하고 go에보관한다. % : 나머지를구하는연산자. GameObject go = GameObject.Instantiate(this.blockPrefabs[next_block_type]) as GameObject; go.transform.position = block_position; // 블록의위치를이동. this.block_count++; // 블록의개수를증가. 20

21 구현 - 프로그래밍 * 맵 ( 스테이지 ) 만들기 MapCreator.cs public static float BLOCK_WIDTH = 1.0f; // 블록의폭. public static float BLOCK_HEIGHT = 0.2f; // 블록의높이. public static int BLOCK_NUM_IN_SCREEN = 24; // 화면내에들어가는블록의개수. // 블록에관한정보를모아서관리하는구조체. 구조체여러개의정보를하나로묶을때사용 private struct FloorBlock { public bool is_created; // 블록이만들어졌는가. public Vector3 position; // 블록의위치. ; private FloorBlock last_block; // 마지막에생성한블록. private PlayerControl player = null; // 씬상의 Player 를보관. private BlockCreator block_creator; // BlockCreator 를보관. 21

22 * 맵 ( 스테이지 ) 만들기 구현 - 프로그래밍 MapCreator.cs void Start() { this.player = GameObject.FindGameObjectWithTag("Player"). GetComponent<PlayerControl>(); this.last_block.is_created = false; this.block_creator = this.gameobject.getcomponent<blockcreator>(); private void create_floor_block() { Vector3 block_position; // 이제부터만들블록의위치. if(! this.last_block.is_created) { // last_block이생성되지않은경우. // 블록의위치를일단 Player와같게한다. block_position = this.player.transform.position; // 그러고나서블록의 X 위치를화면절반만큼왼쪽으로이동. block_position.x -= BLOCK_WIDTH * ((float)block_num_in_screen / 2.0f); // 블록의 Y위치는 0으로. block_position.y = 0.0f; else { // last_block이생성된경우. // 이번에만들블록의위치를직전에만든블록과같게. block_position = this.last_block.position; 22

23 * 맵 ( 스테이지 ) 만들기 구현 - 프로그래밍 MapCreator.cs void Update() { // 플레이어의 X위치를가져온다. float block_generate_x = this.player.transform.position.x; // 그리고대략반화면만큼오른쪽으로이동. // 이위치가블록을생성하는문턱값이된다. block_generate_x += BLOCK_WIDTH * ((float)block_num_in_screen + 1) / 2.0f; // 마지막에만든블록의위치가문턱값보다작으면. while(this.last_block.position.x < block_generate_x) { // 블록을만든다. this.create_floor_block(); Player의위치에서화면절반의앞 ( 오른쪽 ) 에문턱값을설정하고, 마지막에만든블록이그문턱값보다왼쪽에있을때는그문턱값을넘을때까지블록을계속만든다. 23

24 * 불필요한블록지우기 구현 - 프로그래밍 사용한블록을계속남겨두면프로그램처리도무거워지고, 게임이멈출수도있기때문에지워주어야한다. BlockControl.cs public MapCreator map_creator = null; // MapCreator를보관하는변수. void Start() { // MapCreator를가져와서멤버변수 map_creator에보관. map_creator = GameObject.Find("GameRoot").GetComponent<MapCreator>(); void Update() { if(this.map_creator.isdelete(this.gameobject)) { // 카메라에게나안보이냐고물어보고안보인다고대답하면 GameObject.Destroy(this.gameObject); // 자기자신을삭제. public bool isdelete(gameobject block_object) { bool ret = false; // 반환값. // Player로부터반화면만큼왼쪽에위치. // 이위치가사라지느냐마느냐를결정하는문턱값이됨. float left_limit = this.player.transform.position.x - BLOCK_WIDTH * ((float)block_num_in_screen / 2.0f); // 블록의위치가문턱값보다작으면 ( 왼쪽 ). if(block_object.transform.position.x < left_limit) { ret = true; // 반환값을 true( 사라져도좋다 ) 로. return(ret); // 판정결과를돌려줌. 24

25 * 점프 리지드바디로물리효과를먼저줄것 구현 - 프로그래밍 PlayerControl.cs // 점프 에필요한전역변수선언먼저. public static float ACCELERATION = 10.0f; // 가속도. public static float SPEED_MIN = 4.0f; // 속도의최솟값. public static float SPEED_MAX = 8.0f; // 속도의최댓값. public static float JUMP_HEIGHT_MAX = 3.0f; // 점프높이. public static float JUMP_KEY_RELEASE_REDUCE = 0.5f; // 점프후의감속도. public enum STEP { // Player의각종상태를나타내는자료형. NONE = -1, // 상태정보없음. RUN = 0, // 달린다. JUMP, // 점프. MISS, // 실패. NUM, // 상태가몇종류있는지보여준다 (=3). ; public STEP step = STEP.NONE; // Player의현재상태. public STEP next_step = STEP.NONE; // Player의다음상태. public float step_timer = 0.0f; // 경과시간. private bool is_landed = false; // 착지했는가. private bool is_colided = false; // 뭔가와충돌했는가. private bool is_key_released = false; // 버튼이떨어졌는가. 25

26 * 점프 리지드바디로물리효과를먼저줄것 구현 - 프로그래밍 PlayerControl.cs void Start() { this.next_step = STEP.RUN; private void check_landed() // 착지했는지조사 { this.is_landed = false; // 일단 false로설정. do { Vector3 s = this.transform.position; // Player의현재위치. Vector3 e = s + Vector3.down * 1.0f; // s부터아래로 1.0f로이동한위치. RaycastHit hit; if(! Physics.Linecast(s, e, out hit)) { // s부터 e 사이에아무것도없을때. break; // 아무것도하지않고 do~while 루프를빠져나감 ( 탈출구로 ). // s부터 e 사이에뭔가있을때아래의처리가실행. if(this.step = = STEP.JUMP) { // 현재, 점프상태라면. // 경과시간이 3.0f 미만이라면. if(this.step_timer < Time.deltaTime * 3.0f) { break; // 아무것도하지않고 do~while 루프를빠져나감 ( 탈출구로 ). // s부터 e 사이에뭔가있고 JUMP 직후가아닐때만아래가실행. this.is_landed = true; while(false); // 루프의탈출구. 26

27 * 점프 리지드바디로물리효과를먼저줄것 구현 - 프로그래밍 PlayerControl.cs void Update() { Vector3 velocity = this.rigidbody.velocity; // 속도를설정. this.check_landed(); // 착지상태인지체크. this.step_timer += Time.deltaTime; // 경과시간을진행한다. // 다음상태가정해져있지않으면상태의변화를조사한다. if(this.next_step = = STEP.NONE) { switch(this.step) { // Player의현재상태로분기. case STEP.RUN: // 달리는중일때. if(! this.is_landed) { // 달리는중이고착지하지않은경우아무것도하지않는다. else { If(Input.GetMouseButtonDown(0)) { // 달리는중이고착지했고왼쪽버튼이눌렸다면. // 다음상태를점프로변경. this.next_step = STEP.JUMP; break; case STEP.JUMP: // 점프중일때. if(this.is_landed) { // 점프중이고착지했다면다음상태를주행중으로변경. this.next_step = STEP.RUN; break; // ' 다음정보 ' 가 ' 상태정보없음 ' 이아닌동안 ( 상태가변할때만 ). while(this.next_step!= STEP.NONE) { this.step = this.next_step; // ' 현재상태 ' 를 ' 다음상태 ' 로갱신. this.next_step = STEP.NONE; // ' 다음상태 ' 를 ' 상태없음 ' 으로변경. // 계속 27

28 * 점프 리지드바디로물리효과를먼저줄것 구현 - 프로그래밍 PlayerControl.cs switch(this.step) { // 갱신된 ' 현재상태 ' 가. case STEP.JUMP: // ' 점프 ' 일때. // 점프할높이로점프속도를계산 ( 마법의주문임 ). velocity.y = Mathf.Sqrt( 2.0f * 9.8f * PlayerControl.JUMP_HEIGHT_MAX); // ' 버튼이떨어졌음을나타내는플래그 ' 를클리어한다. this.is_key_released = false; break; this.step_timer = 0.0f; // 상태가변했으므로경과시간을제로로리셋. // 상태별로매프레임갱신처리. switch(this.step) { case STEP.RUN: // 달리는중일때. // 속도를높인다. velocity.x += PlayerControl.ACCELERATION * Time.deltaTime; // 속도가최고속도제한을넘으면. if(mathf.abs(velocity.x) > PlayerControl.SPEED_MAX) { // 최고속도제한이하로유지한다. velocity.x *= PlayerControl.SPEED_MAX / Mathf.Abs(this.rigidbody.velocity.x); break; 28

29 * 점프 리지드바디로물리효과를먼저줄것 구현 - 프로그래밍 PlayerControl.cs case STEP.JUMP: // 점프중일때. do { // ' 버튼이떨어진순간 ' 이아니면. if(! Input.GetMouseButtonUp(0)) { break; // 아무것도하지않고루프를빠져나간다. // 이미감속된상태면 ( 두번이상감속하지않도록 ). if(this.is_key_released) { break; // 상하방향속도가 0 이하면 ( 하강중이라면 ). if(velocity.y <= 0.0f) { break; // 버튼이떨어져있고상승중이라면감속시작. // 점프의상승은여기서끝. velocity.y *= JUMP_KEY_RELEASE_REDUCE; this.is_key_released = true; while(false); break; // Rigidbody의속도를위에서구한속도로갱신. // ( 이행은상태에관계없이매번실행된다 ). this.rigidbody.velocity = velocity; 29

30 * 바닥에구멍내기 구현 - 프로그래밍 LevelControl.cs // 만들어야할블록에관한정보를모은구조체. public struct CreationInfo { public Block.TYPE block_type; // 블록의종류. public int max_count; // 블록의최대개수. public int height; // 블록을배치할높이. public int current_count; // 작성한블록의개수. ; public CreationInfo previous_block; // 이전에어떤블록을만들었는가. public CreationInfo current_block; // 지금어떤블록을만들어야하는가. public CreationInfo next_block; // 다음에어떤블록을만들어야하는가. public int block_count = 0; // 생성한블록의총수. public int level = 0; // 난이도. 30

31 * 바닥에구멍내기 구현 - 프로그래밍 MapCreator.cs // Block 클래스추가 public class Block { // 블록의종류를나타내는열거체. public enum TYPE { NONE = -1, // 없음. FLOOR = 0, // 마루. HOLE, // 구멍. NUM, // 블록이몇종류인지나타낸다 (=2). ; ; LevelControl.cs private void clear_next_block(ref CreationInfo block) { // 프로필노트에실제로기록하는처리를한다. // 전달받은블록 (block) 을초기화. block.block_type = Block.TYPE.FLOOR; block.max_count = 15; block.height = 0; block.current_count = 0; public void initialize() { this.block_count = 0; // 블록의총수를초기화. // 이전, 현재, 다음블록을각각. // clear_next_block() 에넘겨서초기화한다. this.clear_next_block(ref this.previous_block); this.clear_next_block(ref this.current_block); this.clear_next_block(ref this.next_block); 31

32 구현 - 프로그래밍 * 바닥에구멍내기 LevelControl.cs private void update_level(ref CreationInfo current, CreationInfo previous) { 대소문자구분주의 switch(previous.block_type) { case Block.TYPE.FLOOR: // 이번블록이바닥일경우. current.block_type = Block.TYPE.HOLE; // 다음번은구멍을만든다. current.max_count = 5; // 구멍은 5개만든다. current.height = previous.height; // 높이를이전과같게한다. break; case Block.TYPE.HOLE: // 이번블록이구멍일경우. current.block_type = Block.TYPE.FLOOR; // 다음은바닥만든다. current.max_count = 10; // 바닥은 10개만든다. break; public void update(){ // 이번에만든블록개수를증가. this.current_block.current_count++; // 이번에만든블록개수가 max_count 이상이면. if(this.current_block.current_count >= this.current_block.max_count) { this.previous_block = this.current_block; this.current_block = this.next_block; // 다음에만들블록의내용을초기화. this.clear_next_block(ref this.next_block); // 다음에만들블록을설정. this.update_level(ref this.next_block, this.current_block); this.block_count++; // 블록의총수를증가. 32

33 * 바닥에구멍내기 구현 - 프로그래밍 MapCreator.cs public static float BLOCK_WIDTH = 1.0f; public static float BLOCK_HEIGHT = 0.2f; public static int BLOCK_NUM_IN_SCREEN = 24; private LevelControl level_control = null; void Start() { this.player = GameObject.FindGameObjectWithTag( "Player").GetComponent<PlayerControl>(); this.last_block.is_created = false; this.block_creator = this.gameobject.getcomponent<blockcreator>(); this.level_control = new LevelControl(); this.level_control.initialize(); LevelControl 과 MapCreator 를연계시킴 기존코드에추가할것 33

34 * 바닥에구멍내기 구현 - 프로그래밍 MapCreator.cs private void create_floor_block(){ Vector3 block_position; if(! this.last_block.is_created) { block_position = this.player.transform.position; 실행화면 block_position.x -= BLOCK_WIDTH * ((float)block_num_in_screen / 2.0f); block_position.y = 0.0f; else { block_position = this.last_block.position; block_position.x += BLOCK_WIDTH; // 볼드체부분을추가. this.level_control.update(); // LevelControl을갱신. // level_control에저장된 current_block( 지금만들블록정보 ) 의. // height( 높이 ) 를씬상의좌표로변환. block_position.y = level_control.current_block.height * BLOCK_HEIGHT; // 지금만들블록에관한정보를변수 current에넣는다. LevelControl.CreationInfo current = this.level_control.current_block; // 지금만들블록이바닥이면 ( 지금만들블록이구멍이라면 ) if(current.block_type == Block.TYPE.FLOOR) { // block_position의위치에블록을실제로생성. this.block_creator.createblock(block_position); this.last_block.position = block_position; this.last_block.is_created = true; 34

35 * 구멍에떨어졌을때 PlayerControl.cs public static float NARAKU_HEIGHT = -5.0f; 구현 - 프로그래밍 구멍에떨어졌을때, 게임이바로끝나지않는다. 계속밑으로떨어지는화면반복. = 문턱값보다더낮은장소에 Player 위치존재. void Update() { Vector3 velocity = this.rigidbody.velocity; this.check_landed(); switch(this.step) { case STEP.RUN: case STEP.JUMP: // 현재위치가한계치보다아래면. if(this.transform.position.y < NARAKU_HEIGHT) { this.next_step = STEP.MISS; // ' 실패 ' 상태로한다. break; 35

36 * 구멍에떨어졌을때 PlayerControl.cs 구현 - 프로그래밍 구멍에떨어졌을때, 게임이바로끝나지않는다. 계속밑으로떨어지는화면반복. = 문턱값보다더낮은장소에 Player 위치존재. switch(this.step) { case STEP.JUMP: // 점프중일때. do {... velocity.y *= JUMP_KEY_RELEASE_REDUCE; this.is_key_released = true; while(false); break; case STEP.MISS: // 가속도 (ACCELERATION) 를빼서 Player의속도를느리게해간다. velocity.x -= PlayerControl.ACCELERATION * Time.deltaTime; if(velocity.x < 0.0f) { // Player의속도가마이너스면. velocity.x = 0.0f; // 0으로한다. break; 36

37 * 액션게임을만들기까지 기획프로그래밍레벨디자인 37

38 레벨디자인 그림 7-1 에서나온요소들을고려하여레벨디자인을해보자. 38

39 * 각요소별고려사항 레벨디자인 요소고려사항 ( 예시 ) 플레이어속도발판길이구멍크기발판높이 0~15 초 : 속도 ~30 초 : 속도 9.0 ( 갑자기빨라진다 ) 0~15 초 : 9~10 블록 15~30 초 : 8~9 블록 0~15 초 : 1~2 블록 15~30 초 : 3~5 블록 0~15 초 : 0 블록 15~30 초 : -4~+4 블록 ( 갑자기높이차이가생긴다 ) => 텍스트파일로정리해둘것 39

40 * 텍스트데이터게임에반영 레벨디자인 각요소를관리하는새로운클래스를만들어줌 LevelControl.cs // 중간에추가 public class LevelData { public struct Range { // 범위를표현하는구조체. public int min; // 범위의최솟값. public int max; // 범위의최댓값. ; public float end_time; // 종료시간. public float player_speed; // 플레이어의속도. public Range floor_count; // 발판블록수의범위. public Range hole_count; // 구멍의개수범위. public Range height_diff; // 발판의높이범위. public LevelData() { this.end_time = 15.0f; // 종료시간초기화. this.player_speed = 6.0f; // 플레이어의속도초기화. this.floor_count.min = 10; // 발판블록수의최솟값을초기화. this.floor_count.max = 10; // 발판블록수의최댓값을초기화. this.hole_count.min = 2; // 구멍개수의최솟값을초기화. this.hole_count.max = 6; // 구멍개수의최댓값을초기화. this.height_diff.min = 0; // 발판높이변화의최솟값을초기화. this.height_diff.max = 0; // 발판높이변화의최댓값을초기화. 40

41 * Level Data 를 List 로다루기 레벨디자인 LevelControl.cs // 스크립트시작부분에써준다. // xx 안에정의된이름을사용할거에요라고선언 using System.Collections.Generic; //List형멤버변수를추가, 각각의최댓값최솟값을넣어준다. public class LevelControl : MonoBehaviour { private List<LevelData> level_datas = new List<LevelData>(); public int HEIGHT_MAX = 20; public int HEIGHT_MIN = -4; 41

42 * text data 를그대로읽어들여해석하기 레벨디자인 42

43 * text data 를그대로읽어들여해석하기 레벨디자인 LevelControl.cs public void loadleveldata(textasset level_data_text){ // 텍스트데이터를문자열로가져온다. string level_texts = level_data_text.text; // 개행코드 '\' 마다분할해서문자열배열에넣는다. string[] lines = level_texts.split('\n'); // lines 내의각행에대해서차례로처리해가는루프. foreach(var line in lines) { if(line = ="") { // 행이빈줄이면. continue; // 아래처리는하지않고반복문의처음으로점프한다. ; Debug.Log(line); // 행의내용을디버그출력한다. string[] words = line.split(); // 행내의워드를배열에저장한다. int n = 0; // LevelData형변수를생성한다. // 현재처리하는행의데이터를넣어간다. LevelData level_data = new LevelData(); // words내의각워드에대해서순서대로처리해가는루프. foreach(var word in words) { if(word.startswith("#")) { // 워드의시작문자가 # 이면. break; // 루프탈출. if(word = = "") { // 워드가텅비었으면. continue; // 루프의시작으로점프한다. // n 값을 0, 1, 2,...7로변화시켜감으로써 8항목을처리한다. // 각워드를플롯값으로변환하고 level_data에저장한다. switch(n) { case 0: level_data.end_time = float.parse(word); break; case 1: level_data.player_speed = float.parse(word); break; case 2: level_data.floor_count.min = int.parse(word); break; case 3: level_data.floor_count.max = int.parse(word); break; case 4: level_data.hole_count.min = int.parse(word); break; case 5: level_data.hole_count.max = int.parse(word); break; case 6: level_data.height_diff.min = int.parse(word); break; case 7: level_data.height_diff.max = int.parse(word); break; n++; 43

44 * text data 를그대로읽어들여해석하기 레벨디자인 LevelControl.cs if(n >= 8) { // 8항목 ( 이상 ) 이제대로처리되었다면. // List 구조의 level_datas에 level_data를추가한다. this.level_datas.add(level_data); else { // 그렇지않다면 ( 오류의가능성이있다 ). if(n = = 0) { // 1워드도처리하지않은경우는주석이므로. // 문제없다. 아무것도하지않는다. else { // 그이외이면오류다. // 데이터개수가맞지않다는것을보여주는오류메시지를표시한다. Debug.LogError("[LevelData] Out of parameter.\n"); // level_datas에데이터가하나도없으면. if(this.level_datas.count == 0) { // 오류메시지를표시한다. Debug.LogError("[LevelData] Has no data.\n"); // level_datas에기본 LevelData를하나추가해둔다. this.level_datas.add(new LevelData()); 44

45 * loadleveldata() 메서드호출 레벨디자인 LevelControl.cs public TextAsset level_data_text = null; void Start() { this.player = GameObject.FindGameObjectWithTag("Player ).GetComponent<PlayerControl>(); this.last_block.is_created = false; this.block_creator = this.gameobject.getcomponent<blockcreator>(); this.level_control = new LevelControl(); this.level_control.initialize(); this.level_control.loadleveldata(this.level_data_text); // 이구문을추가한다. 45

46 * 발판과구멍에데이터반영 읽어온 text data 중발판과구멍에관한것을반영시킨다. 레벨디자인 Gameroot 스크립트 = 경과시간관리 1 [Assets] [Create] [C# Script] 로스크립트를만들고 GameRoot 로이름을변경한다. 2 Hierarchy 의 GameRoot 에 GameRoot 스크립트를드래그앤드롭한다. 46

47 * 발판과구멍에데이터반영 레벨디자인 GameRoot.cs public float step_timer = 0.0f; // 경과시간을유지한다. void Update() { this.step_timer += Time.deltaTime; // 경과시간을더해간다. public float getplaytime(){ float time; time = this.step_timer; return(time); // 호출한곳에경과시간을알려준다. GameRoot 스크립트의 getplaytime() 메서드를사용하기위해서 MapCreator 클래스를수정해준다. MapCreator.cs private GameRoot game_root = null; void Start() {... this.game_root = this.gameobject.getcomponent<gameroot>(); void create_floor_block() {... // this.level_control.update(); this.level_control.update(this.game_root.getplaytime());... 47

48 * level_data 에서읽어온데이터반영 레벨디자인 LevelControl.cs private void update_level( ref CreationInfo current, CreationInfo previous, float passage_time){ // 새인수 passage_time으로플레이경과시간을받는다. // 레벨 1~ 레벨 5를반복한다. float local_time = Mathf.Repeat(passage_time, this.level_datas[this.level_datas.count - 1].end_time); // 현재레벨을구한다. int i; for(i = 0; i < this.level_datas.count - 1; i++) { if(local_time <= this.level_datas[i].end_time) { break; this.level = i; current.block_type = Block.TYPE.FLOOR; current.max_count = 1; if(this.block_count >= 10) { // 현재레벨용레벨데이터를가져온다. LevelData level_data; level_data = this.level_datas[this.level]; switch(previous.block_type) { case Block.TYPE.FLOOR: // 이전블록이바닥인경우. current.block_type = Block.TYPE.HOLE; // 이번엔구멍을만든다. // 구멍크기의최솟값 ~ 최댓값사이의임의의값. current.max_count = Random.Range( level_data.hole_count.min, level_data.hole_count.max); current.height = previous.height; // 높이를이전과같이한다. break; case Block.TYPE.HOLE: // 이전블록이구멍인경우. current.block_type = Block.TYPE.FLOOR; // 이번엔바닥을만든다. // 바닥길이의최솟값 ~ 최댓값사이의임의의값. current.max_count = Random.Range( level_data.floor_count.min, level_data.floor_count.max); 48

49 * level_data 에서읽어온데이터반영 레벨디자인 LevelControl.cs // 바닥높이의최솟값과최댓값을구한다. int height_min = previous.height + level_data.height_diff.min; int height_max = previous.height + level_data.height_diff.max; height_min = Mathf.Clamp(height_min, HEIGHT_MIN, HEIGHT_MAX); height_max = Mathf.Clamp(height_max, HEIGHT_MIN, HEIGHT_MAX); // 바닥높이의최솟값 ~ 최댓값사이의임의의값. current.height = Random.Range(height_min, height_max); break; // 지난번 update_level() 과달라진점중하나는 // 플레이경과시간을인수 passage_time 으로받음 // 최솟값과최대값사이의값을강제로넣기위해사용, 인수는 3 개 49

50 * level_data 에서읽어온데이터반영 레벨디자인 LevelControl.cs update() 메서드는 update_level() 에경과시간을알려줘야한다. 경과시간을인수로받도록변경한다. // public void update() public void update(float passage_time){ this.current_block.current_count++; if(this.current_block.current_count >= this.current_block.max_count) { this.previous_block = this.current_block; this.current_block = this.next_block; this.clear_next_block(ref this.next_block); // this.update_level(ref this.next_block, this.current_block); this.update_level( ref this.next_block, this.current_block, passage_time); this.block_count++; 50

51 * 플레이어에도데이터반영 레벨디자인 < 수정해야할사항 > LevelControl 클래스에 getplayerspeed() 메서드추가 PlayerControl 클래스에멤버변수두개추가 PlayerControl 클래스의 Update() 메서드수정 MapCreator 클래스의 Start() 메서드에한행추가 51

52 * 플레이어에도데이터반영 레벨디자인 LevelControl 클래스에 getplayerspeed() 메서드추가 LevelControl.cs public float getplayerspeed(){ return(this.level_datas[this.level].player_speed); PlayerControl 클래스에멤버변수두개추가 PlayerControl.cs private float click_timer = -1.0f; // 버튼이눌린후의시간. private float CLICK_GRACE_TIME = 0.5f; // 점프하고싶은의사를받아들일시간. 52

53 * 플레이어에도데이터반영 레벨디자인 PlayerControl 클래스의 Update() 메서드수정 PlayerControl.cs void Update() {... this.step_timer += Time.deltaTime; if(input.getmousebuttondown(0)) { // 버튼이눌렸으면. this.click_timer = 0.0f; // 타이머를리셋. else { if(this.click_timer >= 0.0f) { // 그렇지않으면. this.click_timer += Time.deltaTime; // 경과시간을더한다. if(this.next_step = = STEP.NONE) { 53

54 * 플레이어에도데이터반영 레벨디자인 PlayerControl 클래스의 Update() 메서드수정 PlayerControl.cs if(this.next_step = = STEP.NONE) { switch(this.step) { case STEP.RUN: if(! this.is_landed) { else { if(input.getmousebuttondown(0)) { this.next_step = STEP.JUMP; break; if(this.is_landed) { // 착지했다면. this.click_timer = -1.0f; // 버튼이눌리지않은상태를나타내는 -1.0f로. this.next_step = STEP.JUMP; // 점프상태로한다. 54

55 * 플라스틱러너의시퀀스연결 레벨디자인 - Title 씬을만들고프로그램을준비. TitleScript.cs void Update() { if(input.getmousebuttondown(0)) { Application.LoadLevel("GameScene"); void OnGUI() { GUI.Label(new Rect(Screen.width / 2, Screen.height / 2, 128, 32), "PlasticRunner"); 55

56 * 플라스틱러너의시퀀스연결 레벨디자인 - 사용할씬을프로젝트에알려주어야한다. 1 [File] [Building Settings...] 를실행 2 [Building Settings] 창의 [Scenes In Build] 에 TitleScene을드래그앤드롭 3 마찬가지로 GameScene을드래그앤드롭 playercontrol.cs public bool isplayend() // 게임이끝났는지판정. { bool ret = false; switch(this.step) { case STEP.MISS: // MISS 상태라면. ret = true; // ' 죽었어요 '(true) 라고알려줌. break; return(ret); 56

57 * 플라스틱러너의시퀀스연결 레벨디자인 - 구멍에빠져서게임타이틀로돌아가게한다. GameRoot.cs public class GameRoot : MonoBehaviour { public float step_timer = 0.0f; private PlayerControl player = null; void Start(){ this.player = GameObject.FindGameObjectWithTag( "Player").GetComponent<PlayerControl>(); void Update() { this.step_timer += Time.deltaTime; if(this.player.isplayend()) { Application.LoadLevel("TitleScene"); public float getplaytime() 57

58 다음페이지에서보아요

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 유니티와아두이노를활용한 VR 컨트롤러개발 Part 06 헬로앱스코딩교육 김영준 공학박사, 목원대학교겸임교수前 Microsoft 수석연구원 splduino@gmail.com http://www.helloapps.co.kr 키보드로물체생성하기 키보드로물체생성하기 public GameObject CubeObject; public GameObject MyCamera;

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 퍼즐게임만들기 레 벨 퍼즐게임만들기 구 현 디 자 인 하 기 블 록 연 기획하기 쇄 2 레 벨 퍼즐게임만들기 구 현 디 자 인 하 기 블 록 연 기획하기 쇄 3 * 퍼즐게임기획하기 기획단계 게임주제 아이디어정리 기획서작성 사양서작성 연달아있어도사라지지않는 3 매치퍼즐 ex) 헥사 종이에연필로마구잡이식으로써본다 규칙, 캐릭터등 게임실행화면각요소별로만들기 4 *

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint 자바-기본문법(Ch2).pptx 자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD> 2006 년 2 학기윈도우게임프로그래밍 제 8 강프레임속도의조절 이대현 한국산업기술대학교 오늘의학습내용 프레임속도의조절 30fps 맞추기 스프라이트프레임속도의조절 프레임속도 (Frame Rate) 프레임속도란? 얼마나빨리프레임 ( 일반적으로하나의완성된화면 ) 을만들어낼수있는지를나타내는척도 일반적으로초당프레임출력횟수를많이사용한다. FPS(Frame Per Sec)

More information

슬라이드 1

슬라이드 1 2007 년 2 학기윈도우게임프로그래밍 제 7 강프레임속도의조절 이대현 핚국산업기술대학교 학습내용 프레임속도의조절 30fps 맞추기 스프라이트프레임속도의조절 프레임속도 (Frame Rate) 프레임속도란? 얼마나빨리프레임 ( 일반적으로하나의완성된화면 ) 을만들어낼수있는지를나타내는척도 일반적으로초당프레임출력횟수를많이사용핚다. FPS(Frame Per Sec)

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 06 반복문 01 반복문의필요성 02 for문 03 while문 04 do~while문 05 기타제어문 반복문의의미와필요성을이해한다. 대표적인반복문인 for 문, while 문, do~while 문의작성법을 알아본다. 1.1 반복문의필요성 반복문 동일한내용을반복하거나일정한규칙으로반복하는일을수행할때사용 프로그램을좀더간결하고실제적으로작성할수있음.

More information

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - chap05-제어문.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); 1 학습목표 제어문인,, 분기문에 대해 알아본다. 인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 유니티와아두이노를활용한 VR 컨트롤러개발 헬로앱스코딩교육 김영준 공학박사, 목원대학교겸임교수前 Microsoft 수석연구원 splduino@gmail.com http://www.helloapps.co.kr 목차 1. 툴설치 2. 아두이노컨트롤러개발실습 3. 유니티기본명령어실습 4. 유니티 VR 콘텐츠개발실습 5. 블루투스를이용한아두이노컨트롤러연동실습 SW 설치

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

K&R2 Reference Manual 번역본

K&R2 Reference Manual 번역본 typewriter structunion struct union if-else if if else if if else if if if if else else ; auto register static extern typedef void char short int long float double signed unsigned const volatile { } struct

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - C++ 5 .pptx C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성

More information

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Crash Unity SDK... Log & Crash Search. - Unity3D v4.0 ios

More information

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>

<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2> 게임엔진 제 4 강프레임리스너와 OIS 입력시스템 이대현교수 한국산업기술대학교게임공학과 학습내용 프레임리스너의개념 프레임리스너를이용한엔터티의이동 OIS 입력시스템을이용한키보드입력의처리 게임루프 Initialization Game Logic Drawing N Exit? Y Finish 실제게임루프 오우거엔진의메인렌더링루프 Root::startRendering()

More information

유니티 변수-함수.key

유니티 변수-함수.key C# 1 or 16 (Binary or Hex) 1:1 C# C# (Java, Python, Go ) (0101010 ). (Variable) : (Value) (Variable) : (Value) ( ) (Variable) : (Value) ( ) ; (Variable) : (Value) ( ) ; = ; (Variable) : (Value) (Variable)

More information

Lab 3. 실습문제 (Single linked list)_해답.hwp

Lab 3. 실습문제 (Single linked list)_해답.hwp Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

C프로-3장c03逞풚

C프로-3장c03逞풚 C h a p t e r 03 C++ 3 1 9 4 3 break continue 2 110 if if else if else switch 1 if if if 3 1 1 if 2 2 3 if if 1 2 111 01 #include 02 using namespace std; 03 void main( ) 04 { 05 int x; 06 07

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap06-1Array.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - chap04-연산자.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); } 1 학습목표 수식의 개념과 연산자, 피연산자에 대해서 알아본다. C의 를 알아본다. 연산자의 우선 순위와 결합 방향에

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 3 if, if else, if else if, switch case for, while, do while break, continue : System.in, args, JOptionPane for (,, ) @ vs. logic data method variable Data Data Flow (Type), ( ) @ Member field

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

PowerPoint Presentation

PowerPoint Presentation 자바프로그래밍 1 배열 손시운 ssw5176@kangwon.ac.kr 배열이필요한이유 예를들어서학생이 10 명이있고성적의평균을계산한다고가정하자. 학생 이 10 명이므로 10 개의변수가필요하다. int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; 하지만만약학생이 100 명이라면어떻게해야하는가? int s0, s1, s2, s3, s4,

More information

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

DocsPin_Korean.pages

DocsPin_Korean.pages Unity Localize Script Service, Page 1 Unity Localize Script Service Introduction Application Game. Unity. Google Drive Unity.. Application Game. -? ( ) -? -?.. 준비사항 Google Drive. Google Drive.,.. - Google

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx 2018 학년도 1 학기 JAVA 프로그래밍 II 514760-1 2018 년봄학기 5/10/2018 박경신 Lab#1 (ImageTest) Lab#1 은영상파일 (Image) 을읽어서정보를출력 Java Tutorials Lesson: Working with Images https://docs.oracle.com/javase/tutorial/2d/images/index.html

More information

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp Lab 4. Circular singly-linked list 의구현 실험실습일시 : 2009. 4. 6. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 12. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Circular Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Circular

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,

More information

02장.배열과 클래스

02장.배열과 클래스 ---------------- DATA STRUCTURES USING C ---------------- CHAPTER 배열과구조체 1/20 많은자료의처리? 배열 (array), 구조체 (struct) 성적처리프로그램에서 45 명의성적을저장하는방법 주소록프로그램에서친구들의다양한정보 ( 이름, 전화번호, 주소, 이메일등 ) 를통합하여저장하는방법 홍길동 이름 :

More information

Microsoft PowerPoint PythonGUI-sprite

Microsoft PowerPoint PythonGUI-sprite (Sprite) 순천향대학교컴퓨터공학과 이상정 순천향대학교컴퓨터공학과 1 학습내용 소개 클래스 그룹클래스 충돌 블록수집게임예 게임레벨증가및점수표시 이동 순천향대학교컴퓨터공학과 2 소개 (sprite) 큰그래픽장면의부분으로사용되는단일 2차원이미지 => 쪽화면 게임의장면에서서로상호작용 ( 충돌등 ) 하는물체 => 캐릭터, 아바타 파이게임에서는일반적으로클래스로구현된객체

More information

Visual Basic 반복문

Visual Basic 반복문 학습목표 반복문 For Next문, For Each Next문 Do Loop문, While End While문 구구단작성기로익히는반복문 2 5.1 반복문 5.2 구구단작성기로익히는반복문 3 반복문 주어진조건이만족하는동안또는주어진조건이만족할때까지일정구간의실행문을반복하기위해사용 For Next For Each Next Do Loop While Wend 4 For

More information

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조 - Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]

More information

슬라이드 1

슬라이드 1 한국산업기술대학교 제 4 강프레임리스너 (Frame Listener) 이대현교수 학습안내 학습목표 프레임리스너를이용하여게임루프를구현하는방법을이해한다. 오우거엔짂의키입력처리방식을이해한다. 학습내용 프레임리스너의개념프레임리스너를이용한게임캐릭터의이동캐릭터의이동속도조절 OIS 입력시스템을이용한키보드입력의처리 기본게임루프 Initialization Game Logic

More information

JUNIT 실습및발표

JUNIT 실습및발표 JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected

More information

Microsoft PowerPoint - 6-PythonGUI-sprite

Microsoft PowerPoint - 6-PythonGUI-sprite (Computer Science with Python and Pygame, Ch.14 introduction to Sprites) 순천향대학교컴퓨터공학과이상정 순천향대학교컴퓨터공학과 1 학습내용 스프라이트클래스 그룹클래스 스프라이트충돌 블록수집게임예 게임레벨증가및점수표시 스프라이트이동 순천향대학교컴퓨터공학과 2 (1) 스프라이트 (sprite) 큰그래픽장면의부분으로사용되는단일

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 08 함수 01 함수의개요 02 함수사용하기 03 함수와배열 04 재귀함수 함수의필요성을인식한다. 함수를정의, 선언, 호출하는방법을알아본다. 배열을함수의인자로전달하는방법과사용시장점을알아본다. 재귀호출로해결할수있는문제의특징과해결방법을알아본다. 1.1 함수의정의와기능 함수 (function) 특별한기능을수행하는것 여러가지함수의예 Page 4 1.2

More information

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap10-함수의활용.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과

More information

UI TASK & KEY EVENT

UI TASK & KEY EVENT 2007. 2. 5 PLATFORM TEAM 정용학 차례 CONTAINER & WIDGET SPECIAL WIDGET 질의응답및토의 2 Container LCD에보여지는화면한개 1개이상의 Widget을가짐 3 Container 초기화과정 ui_init UMP_F_CONTAINERMGR_Initialize UMP_H_CONTAINERMGR_Initialize

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074> Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법

More information

Chapter 4. LISTS

Chapter 4. LISTS 6. 동치관계 (Equivalence Relations) 동치관계 reflexive, symmetric, transitive 성질을만족 "equal to"(=) 관계는동치관계임. x = x x = y 이면 y = x x = y 이고 y = z 이면 x = z 동치관계를이용하여집합 S 를 동치클래스 로분할 동일한클래스내의원소 x, y 에대해서는 x y 관계성립

More information

슬라이드 1

슬라이드 1 UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)

More information

Infinity(∞) Strategy

Infinity(∞) Strategy 반복제어 표월성 passwd74@cherub.sungkyul.edu 개요 for() 문 break문과 continue문 while문 do-while문 for() 문 for() 문형식 for( 표현식1; 표현식2; 표현식3) 여러문장들 ; 표현식 1 : 초기화 (1 번만수행 ) 표현식 2 : 반복문수행조건 ( 없으면무한반복 ) 표현식 3 : 반복문수행횟수 for()

More information

adfasdfasfdasfasfadf

adfasdfasfdasfasfadf C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.

More information

윈도우시스템프로그래밍

윈도우시스템프로그래밍 데이터베이스및설계 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2012.05.10. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생

More information

C 프로그래밊 개요

C 프로그래밊 개요 구조체 2009 년 5 월 19 일 김경중 강의계획수정 일자계획 Quiz 실습보강 5 월 19 일 ( 화 ) 구조체 Quiz ( 함수 ) 5 월 21 일 ( 목 ) 구조체저녁 6 시 5 월 26 일 ( 화 ) 포인터 5 월 28 일 ( 목 ) 특강 (12:00-1:30) 6 월 2 일 ( 화 ) 포인터 Quiz ( 구조체 ) 저녁 6 시 6 월 4 일 ( 목

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

Chapter 4. LISTS

Chapter 4. LISTS C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or

More information

Chap 6: Graphs

Chap 6: Graphs AOV Network 의표현 임의의 vertex 가 predecessor 를갖는지조사 각 vertex 에대해 immediate predecessor 의수를나타내는 count field 저장 Vertex 와그에부속된모든 edge 들을삭제 AOV network 을인접리스트로표현 count link struct node { int vertex; struct node

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

(Microsoft PowerPoint - \301\24613\260\255 - oFusion \276\300 \261\270\274\272)

(Microsoft PowerPoint - \301\24613\260\255 - oFusion \276\300 \261\270\274\272) 게임엔진 제 13 강 ofusion 씬구성 이대현교수 한국산업기술대학교게임공학과 학습목차 Ofusion 을이용한 export Export 된씬의재현 씬노드애니메이션을이용한수동카메라트래킹 ofusion OGRE3D 엔진용 3D MAX 익스포터 http://www.ofusiontechnologies.com ofusion 의특징 Realtime Viewport 3D

More information

슬라이드 1

슬라이드 1 정적메모리할당 (Static memory allocation) 일반적으로프로그램의실행에필요한메모리 ( 변수, 배열, 객체등 ) 는컴파일과정에서결정되고, 실행파일이메모리에로드될때할당되며, 종료후에반환됨 동적메모리할당 (Dynamic memory allocation) 프로그램의실행중에필요한메모리를할당받아사용하고, 사용이끝나면반환함 - 메모리를프로그램이직접관리해야함

More information

4장.문장

4장.문장 문장 1 배정문 혼합문 제어문 조건문반복문분기문 표준입출력 입출력 형식화된출력 [2/33] ANSI C 언어와유사 문장의종류 [3/33] 값을변수에저장하는데사용 형태 : < 변수 > = < 식 > ; remainder = dividend % divisor; i = j = k = 0; x *= y; 형변환 광역화 (widening) 형변환 : 컴파일러에의해자동적으로변환

More information

03_queue

03_queue Queue Data Structures and Algorithms 목차 큐의이해와 ADT 정의 큐의배열기반구현 큐의연결리스트기반구현 큐의활용 덱 (Deque) 의이해와구현 Data Structures and Algorithms 2 큐의이해와 ADT 정의 Data Structures and Algorithms 3 큐 (Stack) 의이해와 ADT 정의 큐는 LIFO(Last-in,

More information

비긴쿡-자바 00앞부속

비긴쿡-자바 00앞부속 IT COOKBOOK 14 Java P r e f a c e Stay HungryStay Foolish 3D 15 C 3 16 Stay HungryStay Foolish CEO 2005 L e c t u r e S c h e d u l e 1 14 PPT API C A b o u t T h i s B o o k IT CookBook for Beginner Chapter

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

Contents. 1. PMD ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 2. Metrics ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 3. FindBugs ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 4. ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ

Contents. 1. PMD ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 2. Metrics ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 3. FindBugs ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 4. ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 정적분석서 - 영단어수집왕 - Team.# 3 과목명 소프트웨어모델링및분석 담당교수 유준범교수님 201011320 김용현 팀원 201111360 손준익 201111347 김태호 제출일자 2015-06-09 1 Contents. 1. PMD ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 2. Metrics

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

untitled

untitled int i = 10; char c = 69; float f = 12.3; int i = 10; char c = 69; float f = 12.3; printf("i : %u\n", &i); // i printf("c : %u\n", &c); // c printf("f : %u\n", &f); // f return 0; i : 1245024 c : 1245015

More information

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.

More information

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을 (structures) 구조체정의 구조체선언및초기화 구조체배열 구조체포인터 구조체배열과포인터 구조체와함수 중첩된구조체 구조체동적할당 공용체 (union) 1 구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Verilog: Finite State Machines CSED311 Lab03 Joonsung Kim, joonsung90@postech.ac.kr Finite State Machines Digital system design 시간에배운것과같습니다. Moore / Mealy machines Verilog 를이용해서어떻게구현할까? 2 Finite State

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

Java ...

Java ... 컴퓨터언어 1 Java 제어문 조성일 조건문 : if, switch 어떠한조건을조사하여각기다른명령을실행 if 문, switch 문 if 문 if - else 문형식 if 문형식 if ( 조건식 ) { 명령문 1; 명령문 2;... if ( 조건식 ) { 명령문 1; 명령문 2;... else { 명령문 a; 명령문 b;... 예제 1 정수를입력받아짝수와홀수를판별하는프로그램을작성하시오.

More information

Microsoft PowerPoint - 알고리즘_5주차_1차시.pptx

Microsoft PowerPoint - 알고리즘_5주차_1차시.pptx Basic Idea of External Sorting run 1 run 2 run 3 run 4 run 5 run 6 750 records 750 records 750 records 750 records 750 records 750 records run 1 run 2 run 3 1500 records 1500 records 1500 records run 1

More information

17장 클래스와 메소드

17장 클래스와 메소드 17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는

More information

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public Chapter 9 Lab 문제정답 1. public class Circle private double radius; static final double PI=3.141592; // PI 이름으로 3.141592 로초기화된정적상수 (1) public Circle(double r) radius = r; (2) public double getradius() return

More information

Microsoft PowerPoint - CSharp-2-기초문법

Microsoft PowerPoint - CSharp-2-기초문법 2 장. C# 기초문법 자료형 제어문 배열 연산자 순천향대학교컴퓨터학부이상정 1 자료형 순천향대학교컴퓨터학부이상정 2 CTS CTS(Common Type System) 닷넷기반의여러언어에서공통으로사용되는자료형 언어별로서로다른자료형을사용할때발생할수있는호환성문제를해결 값 (Value) 형과참조 (Reference) 형을지원 CTS가제공하는모든자료형은 System.Object를상속받아구현

More information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 제이쿼리 () 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 CSS와마찬가지로, 문서에존재하는여러엘리먼트를접근할수있다. 엘리먼트접근방법 $( 엘리먼트 ) : 일반적인접근방법

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

API 매뉴얼

API 매뉴얼 PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned

More information

Microsoft PowerPoint - 14주차 강의자료

Microsoft PowerPoint - 14주차 강의자료 Java 로만드는 Monster 잡기게임예제이해 2014. 12. 2 게임화면및게임방법 기사초기위치 : (0,0) 아이템 10 개랜덤생성 몬스터 10 놈랜덤생성 Frame 하단에기사위치와기사파워출력방향키로기사이동아이템과몬스터는고정종료버튼클릭하면종료 Project 구성 GameMain.java GUI 환경설정, Main Method 게임객체램덤위치에생성 Event

More information

슬라이드 1

슬라이드 1 Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치

More information

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600 균형이진탐색트리 -VL Tree delson, Velskii, Landis에의해 1962년에제안됨 VL trees are balanced n VL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at

More information

Chap 6: Graphs

Chap 6: Graphs 5. 작업네트워크 (Activity Networks) 작업 (Activity) 부분프로젝트 (divide and conquer) 각각의작업들이완료되어야전체프로젝트가성공적으로완료 두가지종류의네트워크 Activity on Vertex (AOV) Networks Activity on Edge (AOE) Networks 6 장. 그래프 (Page 1) 5.1 AOV

More information

기초컴퓨터프로그래밍

기초컴퓨터프로그래밍 구조체 #include int main() { } printf("structure\n"); printf("instructor: Keon Myung Lee\n"); return 0; 내용 구조체 (struct) Typedef 공용체 (union) 열거형 (enum) 구조체 구조체 (structure) 어떤대상을표현하는서로연관된항목 ( 변수 )

More information

JMF3_심빈구.PDF

JMF3_심빈구.PDF JMF JSTORM http://wwwjstormpekr Issued by: < > Revision: Document Information Document title: Document file name: Revision number: Issued by: JMF3_ doc Issue Date:

More information

제8장 자바 GUI 프로그래밍 II

제8장 자바 GUI 프로그래밍 II 제8장 MVC Model 8.1 MVC 모델 (1/7) MVC (Model, View, Controller) 모델 스윙은 MVC 모델에기초를두고있다. MVC란 Xerox의연구소에서 Smalltalk 언어를바탕으로사용자인터페이스를개발하기위한방법 MVC는 3개의구성요소로구성 Model : 응용프로그램의자료를표현하기위한모델 View : 자료를시각적으로 (GUI 방식으로

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 9 강. 클래스의활용목차 멤버함수의외부정의 this 포인터 friend 선언 static 멤버 임시객체 1 /17 9 강. 클래스의활용멤버함수의외부정의 멤버함수정의구현방법 내부정의 : 클래스선언내에함수정의구현 외부정의 클래스선언 : 함수프로토타입 멤버함수정의 : 클래스선언외부에구현

More information

<4D F736F F F696E74202D20C1A63036C0E520BCB1C5C3B0FA20B9DDBAB928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63036C0E520BCB1C5C3B0FA20B9DDBAB928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 6 장선택과반복 이번장에서학습할내용 조건문이란? if 문 if, else 문 중첩 if 문 switch 문 break문 continue문 지금까지는문장들이순차적으로실행된다고하였다. 하지만필요에따라서조건이만족되면문장의실행순서를변경할수있는기능이제공된다. 3 가지의제어구조 조건문 문장이실행되는순서에영향을주는문장 조건에따라서여러개의실행경로가운데하나를선택

More information

슬라이드 1

슬라이드 1 UNIT 08 조건문과반복문 로봇 SW 교육원 2 기 학습목표 2 조건문을사용핛수있다. 반복문을사용핛수있다. 조건문 3 조건식의연산결과에따라프로그램의실행흐름을변경 조건문의구성 조건식 실행될문장 조건문의종류 if switch? : ( 삼항연산자 ) if 조건문 4 if 문의구성 조건식 true 또는 false(boolean 형 ) 의결과값을갖는수식 실행될문장

More information

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont

12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont 12 강. 문자출력 Direct3D 에서는문자를출력하기위해서 LPD3DXFONT 객체를사용한다. 12.1 LPD3DXFONT 객체생성과초기화 LPD3DXFONT 객체를생성하고초기화하는함수로 D3DXCreateFont() 가있다. HRESULT D3DXCreateFont( in LPDIRECT3DDEVICE9 pdevice, in INT Height, in UINT

More information

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밊 Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.

More information

11장 포인터

11장 포인터 Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함

More information