Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html>
- <head>
- <title>Pirate-Park</title>
- <meta charset='utf-8'>
- <link href='https://fonts.googleapis.com/css?family=Merriweather:700' rel='stylesheet' type='text/css'>
- <style>
- html,body{
- height: 100%;
- }
- body{
- background-color: #ccc;
- display: flex;
- align-items: center;
- justify-content: center;
- background: url('data/paper.png');
- font-family: 'Merriweather', serif;
- color:#465542;
- }
- h1{
- text-align: center;
- }
- div{
- width: 400px;
- }
- p{
- padding-left: 20px;
- }
- canvas{
- display: block;
- margin: 0 auto;
- }
- </style>
- </head>
- <body>
- <div>
- <h1>Ils nous ont volé notre recette<br>Piiiiii-rates</h1>
- <canvas></canvas>
- <p id='output'></p>
- </div>
- <script>
- //Créer un objet à partir d'un autre -> Object.create('nom')
- // Les ojets de notre jeu -----
- var BgMap = {
- size: 384,
- sX: 0,
- sY: 0,
- }
- var Water = {
- col: null,
- row: null,
- size: 64,
- sX: 384,
- sY: 0,
- visible: true,
- init: function(column, row){
- this.col = column;
- this.row = row;
- }
- }
- var Island = {
- col: null,
- row: null,
- size: 64,
- sX: 384,
- sY: 64,
- visible: true,
- init: function(column, row){
- this.col = column;
- this.row = row;
- }
- }
- var Pirate = {
- col: null,
- row: null,
- size: 64,
- sX: 384,
- sY: 128,
- visible: true,
- init: function(column, row){
- this.col = column;
- this.row = row;
- }
- }
- var Home = {
- col: null,
- row: null,
- size: 64,
- sX: 384,
- sY: 192,
- visible: true,
- init: function(column, row){
- this.col = column;
- this.row = row;
- }
- }
- var Ship = {
- col: null,
- row: null,
- size: 64,
- sX: 384,
- sY: 256,
- visible: true,
- init: function(column, row){
- this.col = column;
- this.row = row;
- }
- }
- var Monster = {
- col: null,
- row: null,
- size: 64,
- sX: 384,
- sY: 320,
- visible: true,
- init: function(column, row){
- this.col = column;
- this.row = row;
- }
- }
- // MODEL ----------------------
- var model = {
- //Sprites
- sprites:[],
- gameMessage: "",
- bgMap: BgMap,
- // Etats du jeu
- LOADING: 0,
- BUILD_MAP: 1,
- PLAYING: 2,
- OVER: 3,
- gameState: 0,
- // Codes de la carte
- WATER: 0,
- ISLAND: 1,
- PIRATE: 2,
- HOME: 3,
- SHIP: 4,
- MONSTER: 5,
- //Taille des cases
- SIZE: 64,
- // Ma carte
- ROWS: 6,
- COLUMNS: 6,
- // Map
- map: [
- [0,2,0,0,0,3],
- [0,0,0,0,1,0],
- [0,1,0,0,0,0],
- [0,0,0,0,2,0],
- [0,2,0,1,0,0],
- [0,0,0,0,0,0],
- ],
- gameObjects: [
- [0,0,0,0,0,0],
- [0,0,5,0,0,0],
- [0,0,0,0,0,0],
- [0,0,0,0,0,0],
- [0,0,0,0,0,0],
- [4,0,0,0,0,0],
- ],
- buildMap: function(){
- for(var row=0; row < model.ROWS; row++){
- for(var column=0; column < model.COLUMNS; column++){
- var currentTile = model.map[row][column];
- switch(currentTile){
- case model.WATER:
- var tmp = Object.create(Water);
- tmp.init(column, row);
- model.sprites.push(tmp);
- break;
- case model.ISLAND:
- var tmp = Object.create(Island);
- tmp.init(column, row);
- model.sprites.push(tmp);
- break;
- case model.PIRATE:
- var tmp = Object.create(Pirate);
- tmp.init(column, row);
- model.sprites.push(tmp);
- break;
- case model.HOME:
- var tmp = Object.create(Home);
- tmp.init(column, row);
- model.sprites.push(tmp);
- break;
- }
- }
- }
- },
- createObject:function(){
- for(var row=0; row < model.ROWS; row++){
- for(var column=0; column < model.COLUMNS; column++){
- var currentTile = model.gameObjects[row][column];
- switch(currentTile){
- case model.SHIP:
- var ship = Ship;
- ship.init(column, row);
- model.sprites.push(ship);
- model.sprites[(row*model.COLUMNS)+column].visible = false;
- break;
- case model.MONSTER:
- var monster = Monster;
- monster.init(column, row);
- model.sprites.push(monster);
- model.sprites[(row*model.COLUMNS)+column].visible = false;
- break;
- }
- }
- }
- }
- }
- var octopus = {
- init: function(){
- view.init();
- },
- // Etats du jeu
- gameLoop: function(){
- switch (model.gameState){
- case model.LOADING:
- view.loadsImage();
- model.gameMessage = "Loading";
- console.log(model.gameMessage);
- break;
- case model.BUILD_MAP:
- model.gameMessage = "Build Map";
- console.log(model.gameMessage);
- model.buildMap();
- model.createObject();
- break;
- case model.PLAYING:
- break;
- case model.OVER:
- break;
- }
- view.render();
- },
- // Différentes phases du jeu
- playGame: function(){
- },
- fight: function(){
- },
- trade:function(){
- },
- endGame:function(){
- },
- // Handler
- loadHandler: function(){
- model.gameState = model.BUILD_MAP;
- octopus.gameLoop();
- },
- keydownHandler: function(ev){
- },
- // Getter setter
- getRows: function(){
- var rows = model.ROWS;
- return rows;
- },
- getColumns: function(){
- var columns = model.COLUMNS;
- return columns;
- },
- getSize: function(){
- var size = model.SIZE;
- return size;
- },
- getSprites: function(){
- var sprites = model.sprites;
- return sprites;
- },
- getBgMap: function(){
- var bgMap = model.bgMap;
- return bgMap;
- }
- }
- var view ={
- canvas: null,
- ctx: null,
- image: null,
- init: function(){
- view.canvas = document.querySelector("canvas");
- view.ctx = view.canvas.getContext('2d');
- view.canvas.width = octopus.getColumns()*octopus.getSize();
- view.canvas.height = octopus.getRows()*octopus.getSize();
- octopus.gameLoop();
- },
- loadsImage: function(){
- view.image = new Image();
- view.image.addEventListener('load', octopus.loadHandler);
- view.image.src = 'data/img.png';
- },
- bindEvents: function(){
- },
- render: function(){
- //Dessiner l'arrière plan
- var bg = octopus.getBgMap();
- view.ctx.drawImage(view.image, 0, 0, bg.size, bg.size, 0, 0, bg.size, bg.size);
- //Dessiner l'ensemble des sprites
- var sprites = octopus.getSprites();
- for(var i=0; i<sprites.length; i++){
- var tmp = sprites[i];
- if(tmp.visible){
- view.ctx.drawImage(view.image,
- tmp.sX,
- tmp.sY,
- tmp.size,
- tmp.size,
- tmp.col*tmp.size,
- tmp.row*tmp.size,
- tmp.size,
- tmp.size
- )
- }
- }
- }
- }
- octopus.init();
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement