See how DOONKLY transforms productivity across different roles and industries
AI can make mistakes. Information may be incomplete, outdated or incorrect. Always verify important details from reliable sources before making decisions.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>Dino Game (Minimal Clone)</title>
<style>
:root{--bg:#f7f7f7;--ground:#555;--dino:#222;--ob:#333;}
html,body{height:100%;margin:0;font-family:Inter,system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial}
.wrap{display:flex;align-items:center;justify-content:center;height:100%;background:linear-gradient(#e9f1ff,var(--bg));}
.game-card{width:900px;max-width:95vw;background:#fff;border-radius:12px;box-shadow:0 8px 30px rgba(0,0,0,0.08);padding:18px}
header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
header h1{font-size:16px;margin:0}
.controls{font-size:13px;color:#555}
canvas{display:block;width:100%;height:300px;background:linear-gradient(180deg,#9fd3ff 0%,#dbeeff 40%,#fff 100%);border-radius:8px}
.info{display:flex;gap:12px;align-items:center;margin-top:8px}
.btn{background:#0b74de;color:#fff;padding:8px 12px;border-radius:8px;border:0;cursor:pointer}
.meta{font-size:14px;color:#222}
footer{font-size:12px;color:#666;margin-top:8px}
@media (max-width:600px){canvas{height:220px}}
</style>
</head>
<body>
<div class="wrap">
<div class="game-card">
<header>
<h1>Chrome Dino Clone — HTML5 Game</h1>
<div class="controls">Press <strong>Space</strong> or tap to jump</div>
</header>
<canvas id="game" width="900" height="300"></canvas>
<div class="info">
<div class="meta">Score: <span id="score">0</span></div>
<div class="meta">Highscore: <span id="hi">0</span></div>
<button id="restart" class="btn">Restart</button>
</div>
<footer>Press Space or tap to jump • Score saved locally</footer>
</div>
</div>
<script>
const canvas = document.getElementById('game');
const ctx = canvas.getContext('2d');
const scoreEl = document.getElementById('score');
const hiEl = document.getElementById('hi');
const restartBtn = document.getElementById('restart');
const W = canvas.width;
const H = canvas.height;
let gameSpeed = 4;
let gravity = 0.7;
let isRunning = false;
let frame = 0;
let score = 0;
let highscore = parseInt(localStorage.getItem('dino_hi') || '0', 10);
hiEl.textContent = highscore;
const dino = {
x: 60,
y: H - 70,
w: 44,
h: 44,
vy: 0,
onGround: true,
jumpPower: -12,
ducking: false,
draw() {
ctx.save();
ctx.fillStyle = getComputedStyle(document.documentElement).getPropertyValue('--dino') || '#222';
const h = this.ducking ? this.h * 0.6 : this.h;
ctx.fillRect(this.x, this.y - h, this.w, h);
ctx.fillStyle = '#fff';
ctx.fillRect(this.x + this.w - 12, this.y - h + 10, 6, 6);
ctx.restore();
},
update() {
this.vy += gravity;
this.y += this.vy;
const groundY = H - 26;
if (this.y >= groundY - this.h) {
this.y = groundY - this.h;
this.vy = 0;
this.onGround = true;
} else {
this.onGround = false;
}
},
jump() {
if (this.onGround) {
this.vy = this.jumpPower;
this.onGround = false;
}
},
duck(set) {
this.ducking = !!set && this.onGround;
}
};
const obstacles = [];
function spawnObstacle() {
const h = 30 + Math.floor(Math.random() * 36);
obstacles.push({x: W + 20, y: H - 26 - h, w: 18 + Math.floor(Math.random()*12), h});
}
const ground = {x:0};
function onKey(e) {
if (e.code === 'Space') {
e.preventDefault();
if (!isRunning) startGame();
dino.jump();
}
if (e.code === 'ArrowDown') dino.duck(true);
}
function onKeyUp(e) { if (e.code === 'ArrowDown') dino.duck(false); }
function onPointer() { if (!isRunning) startGame(); dino.jump(); }
function onTouchStart(e) { e.preventDefault(); if (!isRunning) startGame(); dino.jump(); }
function collide(a, b) {
return a.x < b.x + b.w && a.x + a.w > b.x && a.y - a.h < b.y + b.h && a.y > b.y;
}
function resetGame() {
isRunning = false;
obstacles.length = 0;
gameSpeed = 4;
frame = 0;
score = 0;
dino.y = H - 70;
dino.vy = 0;
dino.duck(false);
scoreEl.textContent = 0;
}
function startGame() {
if (isRunning) return;
isRunning = true;
loop();
}
function loop() {
if (!isRunning) return;
frame++;
dino.update();
if (frame % Math.max(60 - Math.floor(gameSpeed), 40) === 0) spawnObstacle();
for (let i = obstacles.length -1; i >=0; i--) {
const o = obstacles[i];
o.x -= gameSpeed;
if (o.x + o.w < -50) obstacles.splice(i,1);
}
score += 1;
scoreEl.textContent = Math.floor(score/10);
if (score/10 > highscore) {
highscore = Math.floor(score/10);
hiEl.textContent = highscore;
}
for (const o of obstacles) {
const dinoBox = {x:dino.x, y:dino.y, w:dino.w, h:dino.ducking ? dino.h*0.6 : dino.h};
if (collide(dinoBox, o)) {
isRunning = false;
const sc = Math.floor(score/10);
if (sc > parseInt(localStorage.getItem('dino_hi') || '0',10)) localStorage.setItem('dino_hi', sc);
drawGame(true);
return;
}
}
drawGame(false);
requestAnimationFrame(loop);
}
function drawGame(gameOver) {
ctx.clearRect(0,0,W,H);
drawClouds();
const groundY = H - 26;
ctx.fillStyle = getComputedStyle(document.documentElement).getPropertyValue('--ground') || '#555';
ctx.fillRect(0, groundY, W, 26);
ctx.fillStyle = '#6a6a6a';
ground.x = (ground.x - gameSpeed) % 40;
for (let gx = ground.x; gx < W; gx += 40) ctx.fillRect(gx, groundY + 14, 24, 3);
dino.draw();
for (const o of obstacles) {
ctx.fillStyle = getComputedStyle(document.documentElement).getPropertyValue('--ob') || '#333';
ctx.fillRect(o.x, o.y, o.w, o.h);
}
ctx.fillStyle = '#111';
ctx.font = '18px system-ui';
ctx.fillText('Score: ' + Math.floor(score/10), W - 160, 28);
if (!isRunning) {
ctx.fillStyle = 'rgba(255,255,255,0.85)';
ctx.fillRect(0,0,W,H);
ctx.fillStyle = '#111';
ctx.font = '22px system-ui';
ctx.textAlign = 'center';
ctx.fillText(gameOver ? 'Game Over' : 'Press to Start', W/2, H/2 - 10);
ctx.font = '14px system-ui';
ctx.fillText('Press Space or tap to jump', W/2, H/2 + 18);
ctx.textAlign = 'start';
}
}
function drawClouds() {
ctx.save();
ctx.fillStyle = 'rgba(255,255,255,0.9)';
const t = frame/60;
for (let i=0;i<3;i++){
const cx = ((i*300)-(t*20))%(W+200)-100;
const cy = 40 + i*20;
ctx.beginPath();
ctx.ellipse(cx, cy, 36, 18, 0, 0, Math.PI*2);
ctx.ellipse(cx+24, cy+6, 28, 14, 0, 0, Math.PI*2);
ctx.fill();
}
ctx.restore();
}
window.addEventListener('keydown', onKey);
window.addEventListener('keyup', onKeyUp);
canvas.addEventListener('pointerdown', onPointer);
canvas.addEventListener('touchstart', onTouchStart, {passive:false});
restartBtn.addEventListener('click', ()=>{ resetGame(); startGame(); });
resetGame();
drawGame(false);
</script>
</body>
</html>
The text discusses the impact of geopolitical risk (GPR) and economic policy uncertainty (EPU) on financial markets, focusing on the U.S. and China. It highlights the significance of understanding how shifts in EPU and GPR affect risk transmission between these major powers. The research uses a dual methodology with VAR and Granger causality to study this dynamic, emphasizing the role of the U.S. and China as global and regional uncertainty leaders. The study contributes to the literature on international relations and financial stability by exploring U.S.-China frictions and their implications for systemic risk propagation.
Source: https://www.mdpi.com/1911-8074/18/11/596
Designing a winning business model for IT services that delivers value to clients while scaling profitably and sustainably involves a strategic approach that encompasses understanding market needs, leveraging technology, and maintaining operational efficiency. Here's a step-by-step breakdown of how to achieve this:
Objective: Understand the market demands, customer pain points, and competitive landscape.
Objective: Pinpoint a specific market segment and tailor your services to meet its unique needs.
Objective: Create a compelling reason for clients to choose your services over competitors.
Objective: Select a business model that aligns with your services, market needs, and scalability goals.
Objective: Develop a pricing strategy that balances competitiveness with profitability.
Objective: Utilize the best technology and infrastructure to deliver high-quality services efficiently.
Objective: Assemble a team that can effectively deliver your services and support growth.
Objective: Effectively market your services to reach and convert your target audience.
Objective: Provide exceptional customer service to retain clients and encourage referrals.
Objective: Ensure that your business model is scalable and can adapt to changes in the market.
A winning business model in IT services is not static but evolves continuously as you refine your understanding of the market, enhance your service offerings, and optimize your operations. Success lies in delivering undeniable value to your clients, maintaining flexibility to adapt to market changes, and scaling operations in a sustainable manner.
Creating a terms and conditions page is crucial for setting the rules and guidelines for users interacting with your IT services. Here's a general template you can modify according to your specific needs and legal requirements:
Welcome to [Your Company Name]. These terms and conditions outline the rules and regulations for the use of [Your Website URL] and our IT services. By accessing this website and using our services, you accept these terms and conditions in full. If you disagree with any part of these terms and conditions, do not use our website or services.
You agree to indemnify and hold the Company harmless from any claims, damages, liabilities, and expenses arising out of your use of our services or breach of these terms.
Your privacy is important to us. Please review our [Privacy Policy] to understand how we collect, use, and protect your personal information.
These terms and conditions are governed by the laws of [Your Jurisdiction], and any disputes will be resolved in the courts of [Your Jurisdiction].
We reserve the right to update these terms and conditions at any time. Changes will be posted on this page, and your continued use of our services after any changes signifies your acceptance of the new terms.
For any questions about these terms and conditions, please contact us at [Your Contact Information].
Note: This template is a general guideline and may need to be adjusted to fit the specific legal and business needs of your company. It's advisable to consult with a legal professional to ensure compliance with applicable laws and regulations.