100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 赛车小游戏c语言代码 网页赛车小游戏(纯JavaScript编写)

赛车小游戏c语言代码 网页赛车小游戏(纯JavaScript编写)

时间:2022-03-16 13:43:13

相关推荐

赛车小游戏c语言代码 网页赛车小游戏(纯JavaScript编写)

赛车(改良版)

利用js实现以下功能:

在四个赛道随记生成路障,其移动速度随用户生存的时间增加而增加

用户可以通过方向键或者A、D键控制用户小车左右移动,躲避路障

当路障与用户小车碰撞,游戏结束

实时记录和显示生存时间以及所得分数

效果展示

在这里插入图片描述

源代码

html

Document

Score: 0

Time: 0s

css

* {

margin: 0;

padding: 0;

}

body {

text-align: center;

}

#background {

margin: 0 auto;

width: 1000px;

background: url(../img/bg.jpg) no-repeat #5f5762;

background-position: center;

border-radius: 50px;

}

#band {

margin: 0 auto;

margin-top: 15px;

width: 300px;

height: 100px;

background-color: #333;

border-radius: 15px;

font-size: 25px;

line-height: 50px;

font-family: 'Times New Roman', Times, serif;

font-weight: bold;

color: #fff;

}

#bgImg {

position: relative;

}

#bg {

position: relative;

margin: 0px auto;

width: 320px;

background-color: #5d7182;

overflow: hidden;

/* background: url(../img/racing.png) repeat-y; */

opacity: 0.98;

}

.box, #mybox {

position: absolute;

width: 45px;

height: 60px;

background-color: #333;

/* opacity: 1; */

}

#mybox {

/* background-color: red; */

background: url(../img/mycar.png);

}

javascript

window.onload = function () {

alert('使用左右方向键或者A,D字母控制小车左右移动\n\n点击确定按钮开始游戏')

// 捕获背景(父元素)

var bg = this.document.getElementById('bg');

var background = this.document.getElementById('background');

var bgImg = this.document.getElementById('bgImg');

// 获取屏幕高度,赋予背景

var h = this.document.documentElement.clientHeight / 1.25;

var w = bg.clientWidth;

var carsBg = ['url(../img/block1.png)'];

bg.style.height = h + 'px';

bgImg.style.top = -(bgImg.clientHeight - h + 10) + 'px';

background.style.height = document.documentElement.clientHeight + 'px';

var score = this.document.getElementById('score');

var timeLast = this.document.getElementById('timeLast');

// 生成box

function createBox() {

var box = this.document.createElement('div')

box.setAttribute('class', 'box');

// 生成的位置---> 22;88;172;238 四个赛道随机生成

var randNum = Math.random();

var deltai = (((w - 20) / 4) - boxw) / 2;

var i = deltai + 10; // 起始横坐标

// console.log(randNum);

if (randNum < 0.25) {

box.style.left = i + 'px';

} else if (randNum >= 0.25 && randNum < 0.5) {

box.style.left = i + boxw + (2 * deltai) + 'px';

} else if (randNum >= 0.5 && randNum < 0.75) {

box.style.left = i + (2 * boxw) + (4 * deltai) + 'px';

} else {

box.style.left = i + (3 * boxw) + (6 * deltai) + 'px';

};

box.style.background = carsBg[Math.floor(Math.random() * carsBg.length)];

bg.appendChild(box);

moveBox(box); // 为每个box绑定对象

var carNum = document.querySelectorAll('.box').length;

if (carNum < 6) {

intervalTime -= 50;

clearInterval(timer);

if (intervalTime < 0) {

intervalTime = 10;

};

if (intervalTime > 0) {

timer = setInterval(add, intervalTime);

// console.log(intervalTime);

};

};

};

// 统计游戏时间

var timeLastNum = 0;

setInterval(function () {

timeLastNum++;

timeLast.innerHTML = 'Time: ' + timeLastNum + 's';

}, 1000)

// 当屏幕数量的车辆小于3辆时生成车辆

// 初始每隔1s判断数量,添加小车,每次最多添加3辆

// 每当车辆总数小于3时,同时减少生成车辆的时间间隔

var intervalTime = 2000;

// 需要正确关闭!!!

function add() {

createBox(); // 生成第1辆

createBox(); // 生成第2辆

createBox(); // 生成第3辆

};

var timer = setInterval(add, intervalTime);

// 设置移动背景

movebg();

function movebg() {

var timerS = setInterval(moveStreet, time);

function moveStreet() {

var pos = bgImg.offsetTop;

pos += deltaX;

if (pos > 0) {

bgImg.style.top = -(bgImg.clientHeight - h) + 'px';

} else {

clearInterval(timerS);

bgImg.style.top = pos + 'px';

timerS = setInterval(moveStreet, time);

}

}

}

// 使得每个box运动起来

var deltaX = 1;

var time = 5;

var scoreNum = 0;

function moveBox(obj) {

// bgImg.style.top = -(bgImg.clientHeight - h) + 'px';

deltaX += 0.01; // 加速度运动

var pos = 0;

var id = setInterval(move, time);

function move() {

if (pos > (h - boxh * 1.2)) {

pos = h - boxh * 1.2;

if (pos == (h - boxh * 1.2)) {

clearInterval(id);

bg.removeChild(obj); // 移除运动到底的box

scoreNum++;

score.innerHTML = 'Score: ' + scoreNum;

}

} else {

pos += deltaX;

obj.style.top = pos + 'px';

// 死亡判断!!!

// if (obj.offsetTop > h - 10 - 2 * boxh) {

// if ((mybox.offsetLeft > obj.offsetLeft - boxw) && (mybox.offsetLeft < obj.offsetLeft + boxw)) {

// alert('游戏结束\n最终得分:' + scoreNum + '分' + '\n存活时间:' + timeLastNum + 's');

// window.location.reload(true);

// }

// }

};

// bgImg.style.top = -(bgImg.clientHeight - h) + pos + 'px';

}

};

// 加入自定义小车

var mybox = this.document.getElementById('mybox');

var boxh = mybox.clientHeight;

var boxw = mybox.clientWidth;

// 指定初始位置

mybox.style.top = h - boxh - 10 + 'px';

mybox.style.left = w / 2 + 'px';

var speed = 10;

// 定义位移函数

// function moveUp() {

// // console.log('Up');

// mybox.style.top = mybox.offsetTop - speed + 'px';

// };

// function moveDown() {

// // console.log('Down');

// mybox.style.top = mybox.offsetTop + speed + 'px';

// };

function moveLeft() {

// console.log('Left');

if (mybox.offsetLeft >= 25) {

mybox.style.left = mybox.offsetLeft - speed + 'px';

}

};

function moveRight() {

// console.log('Right');

if (mybox.offsetLeft <= w - boxw - 20) {

mybox.style.left = mybox.offsetLeft + speed + 'px';

}

};

var sensitivity = 30; // 控制方向灵敏度,越小越灵敏

setInterval(function () {

switch (dir) {

// case 87:

// moveUp();

// break;

// case 38:

// moveUp();

// break;

// case 83:

// moveDown();

// break;

// case 40:

// moveDown();

// break;

case 65:

moveLeft();

break;

case 37:

moveLeft();

break;

case 68:

moveRight();

break;

case 39:

moveRight();

break;

}

}, sensitivity);

// 边缘判断 ——————> 已改良

// function getPos(obj) {

// // setInterval(function() {

// // var left = obj.offsetLeft;

// // var top = obj.offsetTop;

// // console.log(left+ ' '+top);

// // }, 10)

// }

// function end(obj) {

// var v = deltaX / time;

// var x = h - 10 - 2 * boxh;

// var t = x / v;

// setTimeout(function () {

// var deltaMin = obj.offsetLeft;

// var deltaMax = obj.offsetLeft + boxw;

// // console.log(deltaMin);

// // console.log(deltaMax);

// // console.log(mybox.offsetLeft);

// if (mybox.offsetLeft <= deltaMax && mybox.offsetLeft >= deltaMin) {

// alert('Game End');

// window.location.reload();

// }

// }, t + 300);

// };

// 绑定键盘事件

var dir = 0;

this.document.onkeydown = function (event) {

event = event || window.event;

// up 38 w 87;down 40 s 83;left 37 a 65;right 39 d 68

dir = event.keyCode;

};

this.document.onkeyup = function () {

dir = 0;

};

}

mycar.png

mycar.png

block1.png

block1.png

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。