티스토리 뷰
2017/03/23 - [Computer/Javascript] - (Phaser) phaser 로 간단한 웹게임 만들기 - 메뉴
2017/03/23 - [Computer/Javascript] - (Phaser) phaser 로 간단한 웹게임 만들기 - 뱀 그리기
STEP 1) game.js
- game.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 | var snake, apple, squareSize, score, speed, updateDelay, direction, new_direction, addNew, cursors, scoreTextValue, speedTextValue, textStyle_Key, textStyle_Value; var Game = { preload : function() { // 뱀의 몸통과 사과 이미지 두개를 preload 해놓는다. game.load.image('snake', './assets/images/snake.png'); game.load.image('apple', './assets/images/apple.png'); }, create : function() { snake = []; // sanke.png 를 얼마나 표시할지를 나타낼 변수 apple = {}; // 사과 squareSize = 15; // 사과/뱀의 1 블럭 사이즈 score = 0; // Game score. speed = 0; // Game speed. updateDelay = 0; // 키 입력시 얼만큼의 delay 후 방향을 변경할 지 direction = 'right'; // 시작시 뱀의 방향 new_direction = null; // 키 입력시 변경될 뱀의 방향 addNew = false; // 뱀이 사과를 먹었을 때, 새로운 사과를 놓을지 여부 // 기본 Phaser 컨트롤러를 keyboard input 으로 받겠다고 명시 cursors = game.input.keyboard.createCursorKeys(); game.stage.backgroundColor = '#061f27'; for(var i = 0; i < 10; i++){ snake[i] = game.add.sprite(150 + i * squareSize, 150, 'snake'); // Parameters are (X coordinate, Y coordinate, image) } // 첫 사과 배치 this.generateApple(); // 상단의 텍스트 (점수, 속도) textStyle_Key = { font: "bold 14px sans-serif", fill: "#46c0f9", align: "center" }; textStyle_Value = { font: "bold 18px sans-serif", fill: "#fff", align: "center" }; // Score. game.add.text(30, 20, "SCORE", textStyle_Key); scoreTextValue = game.add.text(90, 18, score.toString(), textStyle_Value); // Speed. game.add.text(500, 20, "SPEED", textStyle_Key); speedTextValue = game.add.text(558, 18, speed.toString(), textStyle_Value); }, update: function() { // 키 입력 처리 if (cursors.right.isDown && direction!='left') { new_direction = 'right'; } else if (cursors.left.isDown && direction!='right') { new_direction = 'left'; } else if (cursors.up.isDown && direction!='down') { new_direction = 'up'; } else if (cursors.down.isDown && direction!='up') { new_direction = 'down'; } // A formula to calculate game speed based on the score. // The higher the score, the higher the game speed, with a maximum of 10; speed = Math.min(10, Math.floor(score/5)); // Update speed value on game screen. speedTextValue.text = '' + speed; // Since the update function of Phaser has an update rate of around 60 FPS, // we need to slow that down make the game playable. // Increase a counter on every update call. updateDelay++; // Do game stuff only if the counter is aliquot to (10 - the game speed). // The higher the speed, the more frequently this is fulfilled, // making the snake move faster. if (updateDelay % (10 - speed) == 0) { // Snake movement var firstCell = snake[snake.length - 1], lastCell = snake.shift(), oldLastCellx = lastCell.x, oldLastCelly = lastCell.y; // If a new direction has been chosen from the keyboard, make it the direction of the snake now. if(new_direction){ direction = new_direction; new_direction = null; } // Change the last cell's coordinates relative to the head of the snake, according to the direction. if(direction == 'right'){ lastCell.x = firstCell.x + 15; lastCell.y = firstCell.y; } else if(direction == 'left'){ lastCell.x = firstCell.x - 15; lastCell.y = firstCell.y; } else if(direction == 'up'){ lastCell.x = firstCell.x; lastCell.y = firstCell.y - 15; } else if(direction == 'down'){ lastCell.x = firstCell.x; lastCell.y = firstCell.y + 15; } // Place the last cell in the front of the stack. // Mark it the first cell. snake.push(lastCell); firstCell = lastCell; } }, generateApple: function(){ // 사과를 랜덤 위치에 놓는다. var randomX = Math.floor(Math.random() * 40 ) * squareSize, randomY = Math.floor(Math.random() * 30 ) * squareSize; // Add a new apple. apple = game.add.sprite(randomX, randomY, 'apple'); } }; | cs |
STEP 2) 실행
>> 뱀을 움직일 수 있다.
'Computer > 웹' 카테고리의 다른 글
syntax error 확인 (0) | 2017.05.02 |
---|---|
(Phaser) phaser 로 간단한 웹게임 만들기 - 충돌 처리하기 (마지막) (4) | 2017.03.23 |
(Phaser) phaser 로 간단한 웹게임 만들기 - 뱀 그리기 (2) | 2017.03.23 |
(Phaser) phaser 로 간단한 웹게임 만들기 - 메뉴 (2) | 2017.03.23 |
(Phaser) phaser 는 왜 웹서버를 필요로 하는가? (0) | 2017.03.22 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 뉴스룸
- 리눅스
- C
- node.js
- BBC 가쉽
- 깃헙
- linux
- php
- Kotlin
- CentOS
- IOS
- 손석희
- 스위프트
- 노드
- Asterisk
- 서버
- git hub
- 배열
- Phaser
- C언어
- mysql
- nodejs
- Node
- Android
- 점유율
- 앵커브리핑
- GIT
- 안드로이드
- Swift
- xcode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함