648 lines
25 KiB
Plaintext
648 lines
25 KiB
Plaintext
---
|
|
import Layout from '../../layouts/Layout.astro';
|
|
---
|
|
<Layout title="Drag Game">
|
|
<main>
|
|
<div>
|
|
<div>
|
|
|
|
<!-- <img style="width: 100%; height: 150px;" src="/assets/topbar1.jpg" alt=""> -->
|
|
<div class="flex justify-center">
|
|
<div class="container mx-auto px-4">
|
|
<!-- <div class="flex flex-row place-content-between xl:px-40 pt-10">
|
|
<img src="/assets/top_match.jpg" alt="" />
|
|
<img src="/assets/top_logo.jpg" alt="" />
|
|
</div> -->
|
|
</div>
|
|
<!-- <h2>{data.name}</h2> -->
|
|
<!-- <h2 class="text-center text-4xl font-bold text-[#7c4c23] xl:w-2/3">Match the words on the left side with their rhyming words on the right by drawing lines</h2> -->
|
|
</div>
|
|
</div>
|
|
<div id="overlap">
|
|
<!-- <div id="result"></div> -->
|
|
<div id="verryGood" class="displayNone ">
|
|
<!-- <p>Congratulations!</p>
|
|
<p>You win the Game!</p> -->
|
|
<!-- <img class="" src="/assets/party-feestje.gif" alt="" style="width: 200px; height: 200px;" /> -->
|
|
<!-- <div class="flex flex-row">
|
|
<a href="" >
|
|
<svg fill="#7c4c23" height="64px" width="64px" version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 74.999 74.999" xml:space="preserve"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <g> <path d="M33.511,71.013c15.487,0,28.551-10.563,32.375-24.859h9.113L61.055,22L47.111,46.151h8.006 c-3.44,8.563-11.826,14.628-21.605,14.628c-12.837,0-23.28-10.443-23.28-23.28c0-12.836,10.443-23.28,23.28-23.28 c6.604,0,12.566,2.768,16.809,7.196l5.258-9.108c-5.898-5.176-13.619-8.32-22.065-8.32C15.034,3.987,0,19.019,0,37.5 C-0.002,55.981,15.03,71.013,33.511,71.013z"></path> </g> </g></svg>
|
|
</a>
|
|
<a href="" >
|
|
<svg width="64px" height="64px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <circle cx="12" cy="12" r="10" stroke="#7c4c23" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></circle> <path d="M17 12H7M17 12L13 8M17 12L13 16" stroke="#7c4c23" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"></path> </g></svg>
|
|
</a>
|
|
</div>
|
|
<div>
|
|
</div> -->
|
|
</div>
|
|
<div id="good" class="displayNone">
|
|
<!-- <p>Oops!</p>
|
|
<p>You Lost the Game!</p>
|
|
<img class="" src="/assets/output-onlinegiftools.gif" alt="" style="width: 200px; height: 200px;" />
|
|
<a href="" >
|
|
<svg fill="#7c4c23" height="64px" width="64px" version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 74.999 74.999" xml:space="preserve"><g id="SVGRepo_bgCarrier" stroke-width="0"></g><g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"></g><g id="SVGRepo_iconCarrier"> <g> <path d="M33.511,71.013c15.487,0,28.551-10.563,32.375-24.859h9.113L61.055,22L47.111,46.151h8.006 c-3.44,8.563-11.826,14.628-21.605,14.628c-12.837,0-23.28-10.443-23.28-23.28c0-12.836,10.443-23.28,23.28-23.28 c6.604,0,12.566,2.768,16.809,7.196l5.258-9.108c-5.898-5.176-13.619-8.32-22.065-8.32C15.034,3.987,0,19.019,0,37.5 C-0.002,55.981,15.03,71.013,33.511,71.013z"></path> </g> </g></svg>
|
|
</a> -->
|
|
</div>
|
|
<div id="lost" class="displayNone"></div>
|
|
</div>
|
|
</div>
|
|
<script is:inline src="/assets/js/phaser_3.60.0.js"></script>
|
|
</main>
|
|
</Layout>
|
|
<script src="/saveGameData.js" is:inline></script>
|
|
<script is:inline>
|
|
const isMobile = window.innerWidth <= 768; // Define your mobile breakpoint as needed
|
|
const isTab = window.innerWidth > 768 && window.innerWidth <= 1416;
|
|
const drawingZone = {
|
|
x: isMobile ? 0 : window.innerWidth / 4, // Set x to 0 on mobile, else 1/4 of screen width
|
|
y: window.innerHeight / 4,
|
|
width: isMobile ? window.innerWidth : window.innerWidth / 2, // Full width on mobile, else 1/2 of screen width
|
|
height: window.innerHeight / 2,
|
|
};
|
|
let submitButton;
|
|
let formattedDateTime;
|
|
let shortUniqueID;
|
|
let scoreTotal = 0;
|
|
let resultView;
|
|
let topLogoWidth;
|
|
let muteIconWidth;
|
|
let resetIconWidth;
|
|
let tickIconWidth;
|
|
let cancelIconWidth;
|
|
|
|
if(isMobile){
|
|
topLogoWidth = 4.5;
|
|
muteIconWidth = 1.8;
|
|
resetIconWidth = 1.47;
|
|
tickIconWidth = 1.24;
|
|
cancelIconWidth = 1.08;
|
|
}else if(isTab){
|
|
topLogoWidth = 4.5;
|
|
muteIconWidth = 1.6;
|
|
resetIconWidth = 1.43;
|
|
tickIconWidth = 1.29;
|
|
cancelIconWidth = 1.18;
|
|
}else{
|
|
topLogoWidth = 6;
|
|
muteIconWidth = 1.3;
|
|
resetIconWidth = 1.26;
|
|
tickIconWidth = 1.222;
|
|
cancelIconWidth = 1.185;
|
|
}
|
|
|
|
if(isMobile){
|
|
noticeWidth = 100;
|
|
noticeHeight = 0;
|
|
buttonWidth = 67;
|
|
buttonHeight = 0;
|
|
retryButtonWidth = window.innerWidth / 2 - 50;
|
|
retryButtonHeight = window.innerHeight - 70;
|
|
} else {
|
|
noticeWidth = 100;
|
|
noticeHeight = 0;
|
|
buttonWidth = 100;
|
|
buttonHeight = 0;
|
|
retryButtonWidth = window.innerWidth / 2 - 50;
|
|
retryButtonHeight = window.innerHeight - 70;
|
|
}
|
|
gameResult = [];
|
|
window.onload = function() {
|
|
// Get the current date and time
|
|
currentDate = new Date();
|
|
|
|
// Format the date and time as a string
|
|
formattedDateTime = currentDate.toLocaleString();
|
|
|
|
// Log the formatted date and time to the console
|
|
// // console.log("Page loaded on: " + formattedDateTime);
|
|
};
|
|
function generateShortUniqueID(length) {14
|
|
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
let result = '';
|
|
for (let i = 0; i < length; i++) {
|
|
const randomIndex = Math.floor(Math.random() * characters.length);
|
|
result += characters.charAt(randomIndex);
|
|
}
|
|
return result;
|
|
};
|
|
shortUniqueID = generateShortUniqueID(10); // Change 10 to the desired length
|
|
let blockMatches;
|
|
|
|
const targetZones = [
|
|
{
|
|
x: 0,
|
|
y: 170,
|
|
name: "target1",
|
|
block: null,
|
|
},
|
|
{
|
|
x: 0,
|
|
y: 340,
|
|
name: "target2",
|
|
block: null,
|
|
},
|
|
{
|
|
x: 0,
|
|
y: 510,
|
|
name: "target3",
|
|
block: null,
|
|
},
|
|
{
|
|
x: 0,
|
|
y: 680,
|
|
name: "target4",
|
|
block: null,
|
|
},
|
|
];
|
|
// console.log(blockMatches.blockName, blockMatches.targetName)
|
|
var assetsList = {}
|
|
const params = new URLSearchParams(window.location.search);
|
|
const paramsID = params.get('id');
|
|
const data = fetch(`https://game-du.teachertrainingkolkata.in/items/drag_phonics/${encodeURIComponent(paramsID)}?filter[status][_eq]=published`)
|
|
.then(response => response.json())
|
|
.then(({data}) => {
|
|
const {left_image1, left_image2, left_image3, left_image4, right_image1, right_image2, right_image3, right_image4} = data;
|
|
if(isMobile){
|
|
imageCustomWidth = "?width=100";
|
|
} else{
|
|
imageCustomWidth = "?width=100";
|
|
}
|
|
const assetsURL = "https://game-du.teachertrainingkolkata.in/assets/"
|
|
assetsList.left_image1 = assetsURL + left_image1 + imageCustomWidth;
|
|
assetsList.left_image2 = assetsURL + left_image2 + imageCustomWidth;
|
|
assetsList.left_image3 = assetsURL + left_image3 + imageCustomWidth;
|
|
assetsList.left_image4 = assetsURL + left_image4 + imageCustomWidth;
|
|
assetsList.right_image1 = assetsURL + right_image1 + imageCustomWidth;
|
|
assetsList.right_image2 = assetsURL + right_image2 + imageCustomWidth;
|
|
assetsList.right_image3 = assetsURL + right_image3 + imageCustomWidth;
|
|
assetsList.right_image4 = assetsURL + right_image4 + imageCustomWidth;
|
|
const config = {
|
|
type: Phaser.AUTO,
|
|
width: window.innerWidth,
|
|
height: window.innerHeight,
|
|
backgroundColor: '#ffffff',
|
|
parent: "phaser-example",
|
|
scale: {
|
|
mode: Phaser.Scale.FIT,
|
|
autoCenter: Phaser.Scale.CENTER_HORIZONTALLY,
|
|
},
|
|
scene: MyGame,
|
|
};
|
|
const game = new Phaser.Game(config);
|
|
|
|
})
|
|
.catch(error => {
|
|
|
|
console.error('Error fetching initial data:', error);
|
|
});
|
|
class MyGame extends Phaser.Scene {
|
|
constructor() {
|
|
super();
|
|
}
|
|
preload() {
|
|
var progressBar = this.add.graphics();
|
|
var progressBox = this.add.graphics();
|
|
progressBox.fillStyle(0x222222, 0.8);
|
|
progressBox.fillRect(240, 270, 320, 50);
|
|
|
|
var width = this.cameras.main.width;
|
|
var height = this.cameras.main.height;
|
|
var loadingText = this.make.text({
|
|
x: width / 2,
|
|
y: height / 2 - 50,
|
|
text: 'Loading...',
|
|
style: {
|
|
font: '20px monospace',
|
|
fill: '#ffffff'
|
|
}
|
|
});
|
|
loadingText.setOrigin(0.5, 0.5);
|
|
var percentText = this.make.text({
|
|
x: width / 2,
|
|
y: height / 2 - 5,
|
|
text: '0%',
|
|
style: {
|
|
font: '18px monospace',
|
|
fill: '#ffffff'
|
|
}
|
|
});
|
|
percentText.setOrigin(0.5, 0.5);
|
|
var assetText = this.make.text({
|
|
x: width / 2,
|
|
y: height / 2 + 50,
|
|
text: '',
|
|
style: {
|
|
font: '18px monospace',
|
|
fill: '#ffffff'
|
|
}
|
|
});
|
|
assetText.setOrigin(0.5, 0.5);
|
|
this.load.on('progress', function (value) {
|
|
percentText.setText(parseInt(value * 100) + '%');
|
|
progressBar.clear();
|
|
progressBar.fillStyle(0xffffff, 1);
|
|
progressBar.fillRect(250, 280, 300 * value, 30);
|
|
});
|
|
this.load.on('fileprogress', function (file) {
|
|
assetText.setText('Loading asset: ' + file.key);
|
|
});
|
|
this.load.on('complete', function () {
|
|
progressBar.destroy();
|
|
progressBox.destroy();
|
|
loadingText.destroy();
|
|
percentText.destroy();
|
|
assetText.destroy();
|
|
});
|
|
// this.load.image('logo', 'zenvalogo.png');
|
|
for (var i = 0; i < 5; i++) {
|
|
this.load.image('logo'+i, '/assets/background.jpg');
|
|
}
|
|
this.load.image("topMatch", "/assets/top_match.jpg");
|
|
this.load.image("topLogo", "/assets/top_logo.jpg");
|
|
this.load.image("tick", '/assets/tick.png');
|
|
this.load.image("topMatch", "/assets/top_match.jpg");
|
|
this.load.image("topLogo", "/assets/top_logo.jpg");
|
|
this.load.image("tickIcon", '/assets/svg/tick2.svg');
|
|
this.load.image("muteIcon", '/assets/svg/mute.svg');
|
|
this.load.image("cancelIcon", '/assets/svg/cancel.svg');
|
|
this.load.image("resetIcon", '/assets/svg/reset.svg');
|
|
this.load.image("border", '/assets/svg/pointer.svg');
|
|
this.load.spritesheet("target1", assetsList.right_image1,{
|
|
frameWidth: 100,
|
|
frameHeight: 100,
|
|
});
|
|
this.load.spritesheet("target2", assetsList.right_image2,{
|
|
frameWidth: 100,
|
|
frameHeight: 100,
|
|
});
|
|
this.load.spritesheet("target3", assetsList.right_image3,{
|
|
frameWidth: 100,
|
|
frameHeight: 100,
|
|
});
|
|
this.load.spritesheet("target4", assetsList.right_image4,{
|
|
frameWidth: 100,
|
|
frameHeight: 100,
|
|
});
|
|
|
|
this.load.spritesheet("blocks1", assetsList.left_image1,{
|
|
frameWidth: 100,
|
|
frameHeight: 100,
|
|
});
|
|
this.load.spritesheet("blocks2", assetsList.left_image2, {
|
|
frameWidth: 100,
|
|
frameHeight: 100,
|
|
});
|
|
this.load.spritesheet("blocks3", assetsList.left_image3, {
|
|
frameWidth: 100,
|
|
frameHeight: 100,
|
|
});
|
|
this.load.spritesheet("blocks4", assetsList.left_image4, {
|
|
frameWidth: 100,
|
|
frameHeight: 100,
|
|
});
|
|
}
|
|
create() {
|
|
const params = new URLSearchParams(window.location.search);
|
|
const paramsID = params.get('id');
|
|
fetch(`https://game-du.teachertrainingkolkata.in/items/drag_phonics/${encodeURIComponent(paramsID)}?filter[status][_eq]=published`)
|
|
.then(response => response.json())
|
|
.then(({ data }) => {
|
|
// console.log(data) right_match
|
|
blockMatches = [
|
|
{
|
|
blockName: "blocks1",
|
|
targetName: `target${data.right_match1}`,
|
|
},
|
|
{
|
|
blockName: "blocks2",
|
|
targetName: `target${data.right_match2}`,
|
|
},
|
|
{
|
|
blockName: "blocks3",
|
|
targetName: `target${data.right_match3}`,
|
|
},
|
|
{
|
|
blockName: "blocks4",
|
|
targetName: `target${data.right_match4}`,
|
|
},
|
|
];
|
|
let wrapWidth;
|
|
let textSizeScale;
|
|
if(isMobile){
|
|
wrapWidth = 10;
|
|
textSizeScale = 540
|
|
}else{
|
|
wrapWidth = 200;
|
|
textSizeScale = 940
|
|
};
|
|
|
|
const screenCenterX = this.cameras.main.worldView.x + this.cameras.main.width / 2;
|
|
const baseFontSize = 24;
|
|
const responsiveFontSize = (window.innerWidth / textSizeScale) * baseFontSize;
|
|
const descrptText = this.add.text(screenCenterX, 85, data.description, { font: `${responsiveFontSize}px quicksand`, fill: '#60C6CB', align: "center", wordWrap: {width: window.innerWidth-wrapWidth}}, ).setOrigin(0.5);
|
|
// this.add.text(displayW / 14 - 15, 50, data.LearningArea, {font: `20px`}).setTint(0x7c4c23);
|
|
// this.add.text(displayW / 14 - 15, 70, data.LearningSubArea_copy, {font: `19px`}).setTint(0x7c4c23);
|
|
// Left Image Name
|
|
this.add.text(displayW / 14 - 15, 240, data.left_image1_name).setTint(0x7c4c23);
|
|
this.add.text(displayW / 14 - 15, 409, data.left_image2_name).setTint(0x7c4c23);
|
|
this.add.text(displayW / 14 - 15, 579, data.left_image3_name).setTint(0x7c4c23);
|
|
this.add.text(displayW / 14 - 15, 750, data.left_image4_name).setTint(0x7c4c23);
|
|
|
|
//Right Image Name
|
|
this.add.text(displayW * 0.9-80, 240, data.right_image1_name).setTint(0x7c4c23);
|
|
this.add.text(displayW * 0.9-80, 409, data.right_image2_name).setTint(0x7c4c23);
|
|
this.add.text(displayW * 0.9-80, 579, data.right_image3_name).setTint(0x7c4c23);
|
|
this.add.text(displayW * 0.9-80, 750, data.right_image4_name).setTint(0x7c4c23);
|
|
})
|
|
.catch(error => {
|
|
console.error('Error fetching initial data:', error);
|
|
});
|
|
const displayW = window.innerWidth;
|
|
// const url = window.location.href;
|
|
// const gameName = url.split('/');
|
|
// let userData = {
|
|
// 'user': 'drawing@beanstalkedu.com',
|
|
// 'game_name': gameName[3],
|
|
// 'starts': formattedDateTime,
|
|
// // 'game_start' : gameStartTime,
|
|
// };
|
|
// function submitUserData() {
|
|
// fetch(`https://2016.dev2-cs.siliconpin.com/save/`, {
|
|
// method: 'POST',
|
|
// headers: {
|
|
// 'Content-Type' : 'application/json'
|
|
// },
|
|
// body: JSON.stringify(userData)
|
|
// })
|
|
// .then(response => {
|
|
// if(response.ok){
|
|
// // console.log('Data Saved', response)
|
|
// } else{
|
|
// // console.log('Something Wrong', response)
|
|
// }
|
|
// })
|
|
// .catch(error => {
|
|
// console.error('An error occured', error)
|
|
// });
|
|
// };
|
|
this.add.image(displayW / topLogoWidth, 30, "topLogo").setScale();
|
|
this.add.image(displayW / muteIconWidth, 30, "muteIcon").setScale();
|
|
const retryButton = this.add.image(displayW / resetIconWidth, 30, "resetIcon").setScale();
|
|
submitButton = this.add.image(displayW / tickIconWidth, 30, "tickIcon").setScale();
|
|
this.add.image(displayW / cancelIconWidth, 30, "cancelIcon").setScale();
|
|
this.add.image(displayW * 0.9-32, 170, "target1");
|
|
// this.add.image(displayW * 0.9-33, 170, "border").setAlpha(1).setScale(1).setDepth(-1);
|
|
this.add.image(displayW * 0.9-32, 340, "target2");
|
|
// this.add.image(displayW * 0.9-33, 340, "border").setAlpha(1).setScale(1).setDepth(-1);
|
|
this.add.image(displayW * 0.9-32, 510, "target3");
|
|
// this.add.image(displayW * 0.9-33, 510, "border").setAlpha(1).setScale(1).setDepth(-1);
|
|
this.add.image(displayW * 0.9-32, 680, "target4");
|
|
// this.add.image(displayW * 0.9-33, 680, "border").setAlpha(1).setScale(1).setDepth(-1);
|
|
|
|
|
|
const graphics = this.add.graphics();
|
|
const x = 0; const y = 54;
|
|
const lineWidth = window.innerWidth;
|
|
graphics.lineStyle(1, 0x0348A8);
|
|
graphics.setAlpha(0.2);
|
|
graphics.beginPath();
|
|
graphics.moveTo(x, y);
|
|
graphics.lineTo(x + lineWidth, y);
|
|
graphics.strokePath();
|
|
submitNotic = this.add.text(window.innerWidth / 2 - noticeWidth, window.innerHeight / 2 - noticeHeight, 'Submitted Successfully', { font: '600 20px Quicksand', fill: 'blue'}).setDepth(1).setVisible(false);
|
|
|
|
// submitButton = this.add.text(window.innerWidth / 2 - buttonWidth, window.innerHeight / 2 - buttonHeight, "Submit", {
|
|
// font: '600 30px Quicksand',
|
|
// fill: '#fff',
|
|
// backgroundColor: 'blue',
|
|
// padding: { x: 20, y: 10 },
|
|
// }).setDepth(1);
|
|
// submitButton.setVisible(false);
|
|
submitButton.setInteractive().on('pointerdown', () => {
|
|
// console.log('Clicked');
|
|
// submitButton.setVisible(false);
|
|
// window.location.reload();
|
|
// windowLoad();
|
|
submitUserData(this);
|
|
})
|
|
|
|
const blocks = [
|
|
{
|
|
x: displayW / 15 - 15,
|
|
y: 120,
|
|
textureKey: "blocks1",
|
|
id: "block1",
|
|
blockPointer: 'border',
|
|
},
|
|
{
|
|
x: displayW / 15 - 15,
|
|
y: 280,
|
|
textureKey: "blocks2",
|
|
id: "block2",
|
|
blockPointer: 'border',
|
|
},
|
|
{
|
|
x: displayW / 15 - 15,
|
|
y: 460,
|
|
textureKey: "blocks3",
|
|
id: "block3",
|
|
blockPointer: 'border',
|
|
},
|
|
{
|
|
x: displayW / 15 - 15,
|
|
y: 640,
|
|
textureKey: "blocks4",
|
|
id: "block4",
|
|
blockPointer: 'border',
|
|
},
|
|
];
|
|
this.graphics = this.add.graphics();
|
|
const droppedBlocks = [];
|
|
const targetZoneBorders = [];
|
|
targetZones.forEach((targetZone) => {
|
|
// const targetImage = this.add.image(targetZone.x, targetZone.y, targetZone.name).setAlpha(1);
|
|
const targetBorder = this.add.image(targetZone.x = displayW * 0.9 - 140, targetZone.y, "border").setAlpha(1).setScale(1);
|
|
targetZoneBorders.push(targetBorder);
|
|
targetZone.block = null;
|
|
}),
|
|
|
|
blocks.forEach((block, index) => {
|
|
const newBlock = this.add.sprite(block.x, block.y, block.textureKey, 1).setOrigin(0, 0).setInteractive({ draggable: true });
|
|
this.add.sprite(block.x+100, block.y+35, block.blockPointer, 1).setOrigin(0, 0).setInteractive({ draggable: true });
|
|
|
|
this.add.sprite(block.x, block.y, block.textureKey, 1).setOrigin(0, 0).setAlpha(0.3);
|
|
newBlock.on("drag", (pointer, dragX, dragY) => {
|
|
newBlock.setScale(1.3);
|
|
newBlock.x = dragX;
|
|
newBlock.y = dragY;
|
|
});
|
|
newBlock.on("dragend", () => {
|
|
newBlock.setScale(1.0);
|
|
let droppedOnTargetZone = false;
|
|
let targetZoneMatched = null;
|
|
|
|
targetZones.forEach((targetZone, targetIndex) => {
|
|
if (
|
|
Phaser.Geom.Intersects.RectangleToRectangle(
|
|
newBlock.getBounds(),
|
|
new Phaser.Geom.Rectangle(targetZone.x, targetZone.y, 200, 100)
|
|
)
|
|
) {
|
|
droppedOnTargetZone = true;
|
|
targetZoneMatched = targetZone;
|
|
targetZoneBorders[targetIndex].setAlpha(1);
|
|
return;
|
|
}
|
|
});
|
|
|
|
if (droppedOnTargetZone) {
|
|
// Draw a line from the dragged block to the targetZone
|
|
this.graphics.lineStyle(6, 0xFF0000); // Red color
|
|
this.graphics.moveTo(block.x + 105, block.y + 47);
|
|
this.graphics.lineTo(targetZoneMatched.x, targetZoneMatched.y);
|
|
this.graphics.strokePath();
|
|
|
|
newBlock.setPosition(targetZoneMatched.x - 50, targetZoneMatched.y - 50);
|
|
newBlock.disableInteractive();
|
|
targetZoneMatched.block = newBlock;
|
|
droppedBlocks.push(newBlock);
|
|
|
|
if (isMatch(newBlock.texture.key, targetZoneMatched.name)) {
|
|
// Handle matching logic
|
|
}
|
|
} else {
|
|
newBlock.setPosition(block.x, block.y);
|
|
}
|
|
|
|
if (droppedBlocks.length === targetZones.length) {
|
|
// Display result or perform any other actions
|
|
displayResult(droppedBlocks);
|
|
}
|
|
});
|
|
});
|
|
// let retryButton = this.add.text(retryButtonWidth, retryButtonHeight, 'Reset', {
|
|
// font: '600 30px Quicksand',
|
|
// fill: '#fff',
|
|
// backgroundColor: 'blue',
|
|
// padding: { x: 20, y: 10 },
|
|
// })
|
|
retryButton.setInteractive().on('pointerdown', () => {
|
|
window.location.reload();
|
|
})
|
|
let score = 0;
|
|
let counter = 0;
|
|
|
|
const isMatch = (blockName, targetName) => {
|
|
if(isMatch){
|
|
counter++;
|
|
// console.log(counter)
|
|
}
|
|
const match = blockMatches.find((m) => m.blockName === blockName && m.targetName === targetName);
|
|
// console.log(match)
|
|
if(match !== undefined){
|
|
scoreTotal++;
|
|
// console.log("Score Total", scoreTotal)
|
|
resultView = this.add.text(window.innerWidth / 2 - 100, window.innerHeight / 2 - 100, `Your Score: ${scoreTotal}`,{font: `24px`, fill: `#7c4c23`}).setVisible(false);
|
|
}
|
|
if(counter === 4){
|
|
const overlap = document.getElementById("overlap");
|
|
overlap.style.display = "block";
|
|
// console.log(counter)
|
|
submitButton.setVisible(true);
|
|
resultView.setVisible(true);
|
|
}
|
|
};
|
|
}
|
|
}
|
|
// let hideButton = this.add.text(helpButtonWidth, helpButtonHeight, "Let`s Do", {
|
|
// font: '900 24px quicksand',
|
|
// fill: '#05b3a4',
|
|
// backgroundColor: '#7c4c23',
|
|
// padding: { x: 20, y: 10 },
|
|
// borderRadius: '15px', // Border radius
|
|
// shadow: {
|
|
// offsetX: 2, // X offset for the shadow
|
|
// offsetY: 2, // Y offset for the shadow
|
|
// color: '#000', // Shadow color
|
|
// blur: 5, // Shadow blur
|
|
// fill: true // Apply shadow to fill (background color)
|
|
// }
|
|
// });
|
|
const displayResult = (droppedBlocks) => {
|
|
// const overlap = document.getElementById("overlap");
|
|
// overlap.style.display = "block";
|
|
// let finalDom;
|
|
droppedBlocks.forEach((block) => {
|
|
const targetZone = targetZones.find((zone) => zone.name === block.texture.key);
|
|
});
|
|
};
|
|
|
|
</script>
|
|
<style href="https://fonts.googleapis.com/css?family=Quicksand&display=swap" rel="stylesheet" >
|
|
* {
|
|
margin: 0;
|
|
padding: 0;
|
|
cursor: -webkit-grab; cursor: grab;
|
|
font-family: quicksand;
|
|
}
|
|
/* body {
|
|
margin: 0;
|
|
background: #020202;
|
|
cursor: crosshair;
|
|
} */
|
|
/* canvas{display:block} */
|
|
/* h1 {
|
|
position: absolute;
|
|
top: 20%;
|
|
left: 50%;
|
|
transform: translate(-50%, -50%);
|
|
color: #fff;
|
|
font-family: "Source Sans Pro";
|
|
font-size: 5em;
|
|
font-weight: 900;
|
|
-webkit-user-select: none;
|
|
user-select: none;
|
|
} */
|
|
#overlap {
|
|
display: none;
|
|
margin: 0;
|
|
position: absolute;
|
|
top: 50%;
|
|
left: 50%;
|
|
transform: translate(-50%, -50%);
|
|
color: #7c4c23;
|
|
text-align: center;
|
|
margin-top: 7%;
|
|
}
|
|
#overlap .verryGood{
|
|
display: flex;
|
|
flex-direction: column;
|
|
place-items: center;
|
|
font-size: 40px;
|
|
font-weight: bolder;
|
|
height: fit-content;
|
|
}
|
|
#overlap .good{
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
place-items: center;
|
|
font-size: 40px;
|
|
font-weight: bolder;
|
|
}
|
|
#overlap .lost{
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
place-items: center;
|
|
font-size: 40px;
|
|
font-weight: bolder;
|
|
}
|
|
.displayNone {
|
|
display: none;
|
|
}
|
|
#result {
|
|
font-size: 30px;
|
|
font-weight: bold;
|
|
}
|
|
</style> |