gametest

(function () {

const screenWidth = document.documentElement.clientWidth;

const cloudFrequency = 30;

const cloudSpeed = 2;

let lastCreateTime = 0;

function createCloud() {

let now = new Date().getTime()

if (now - lastCreateTime > 3000) {

// 创建云朵

let cloudItem = document.createElement('div')

cloudItem.className = 'cloud-item'

// 设置云朵变化系数

cloudItem.cloudScale = Math.random()

// 设置云朵大小

cloudItem.style.transform = 'scale(' + cloudItem.cloudScale + ')'

// 设置云朵透明度

cloudItem.style.opacity = cloudItem.cloudScale

// 设置云朵位置

let _left = screenWidth

cloudItem.style.left = _left + 'px'

let _top = Math.random() * 400

cloudItem.style.top = _top + 'px'

const cloudWrap = document.getElementsByClassName('cloud-container')[0];

cloudWrap.appendChild(cloudItem)

// 云朵移动

let cloudMove = () => {

// 云朵越大,移动速度越快

let moveX = cloudSpeed * cloudItem.cloudScale

let _left = +cloudItem.style.left.slice(0, -2)

cloudItem.style.left = _left - moveX + 'px'

// 如果云朵距离屏幕顶部距离大于等于屏幕高度,则移除此云朵

if (cloudItem.offsetLeft < (-cloudItem.offsetWidth)) {

cloudWrap.removeChild(cloudItem)

} else {

requestAnimationFrame(cloudMove)

}

}

cloudMove()

cloudMove()

lastCreateTime = now

}

requestAnimationFrame(createCloud)

};

createCloud();

})()

function createStore(params) {

let state = { ...params };

let listeners = [];

function subscribe(fn) {

listeners.push(fn);

}

function getState() {

return state;

}

function dispatch() {

for (let i = 0; i < listeners.length; i++) {

const listener = listeners[i];

listener(state);

}

}

function setState(newState, isDispatch = true) {

state = { ...newState };

isDispatch && dispatch();

}

const store = {

subscribe,

getState,

setState,

dispatch,

}

return store;

}

const store = createStore({ state: 'stand' });

let canOperate = true;

document.addEventListener('keydown', (e) => {

if (canOperate) {

canOperate = false;

if (e.key === 'w') {

store.setState({ state: 'jump' });

setTimeout(() => {

store.setState({

state: 'run'

})

canOperate = true;

}, 700);

} else if (e.key === 's') {

store.setState({ state: 'slide' });

setTimeout(() => {

store.setState({

state: 'run'

})

canOperate = true;

}, 700);

}

}

})

export default store;

import store from './createStore.js';

(function() {

store.subscribe((state) => {

if (state.gameState === 'fail') {

} else {

}

})

})()

(function () {

const speed = 1;

let total;

function groundScroll() {

let ground = document.querySelector('.ground-wrap');

let _left = 0

ground.style.backgroundPositionX = _left + 'px';

let cityMove = () => {

if (_left <= -600) {

_left = 0

}

_left -= speed * 3

total += (speed / 10)

if (total >= 40000) {

speed = 6

} else if (total >= 4000) {

speed = 5.5

} else if (total >= 2000) {

speed = 5

} else if (total >= 1000) {

speed = 4.5

} else if (total >= 500) {

speed = 4

} else if (total >= 200) {

speed = 3.5

}

ground.style.backgroundPositionX = _left + 'px';

groundMoveInterval = requestAnimationFrame(cityMove)

}

cityMove()

}

groundScroll();

})()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值