`
ibelieve1314love
  • 浏览: 19656 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

俄罗斯方块--javascript实现

阅读更多

以前上中专的时候,在学校机房练习时,就看有些同学用c还是qbasic做的俄罗斯方块,当时感觉这些人真厉害,啥时候我也能亲手写一个就好了。只不过当时的我,不管再怎么努力,也还是写不出来,也就带着那个遗憾毕业了。之后阴差阳错的去了大连培训,学了c++,java.c++也就学到能写简单的类,简单的程序,能看懂代码的程度,java学得倒还行。后面学到了java的Swing组件,awt组件,就想着,要不就用java写个俄罗斯方块作为java课的毕业成果吧。当时也是努力的写,写了改,改了写,最后总算凑合着写出来了,在当时毕业的同学里面,还算是不错的吧,只不过只有我自己知道,那里面的代码写得有多烂,bug有多少,java老师也是简单运行了一下,玩了玩,就给了我一个优秀,呵呵。后来工作了,那份代码也没太珍惜,就慢慢的没了。现在觉得,不管哪个程序多简单,或是多复杂,也许在别人眼里根本什么都不是,但却是自己年轻时一个小小的梦想,我想亲手把这个小梦想实现。

 

好了,废话不多说了,贴我写的代码吧。代码感觉写得有点多,但这是按我自己的想法实现的。

 

觉得html和javascript分开贴比较好点。

先来html

 

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script language="javascript">
...
</script>
<style>
body {
	margin: 0 auto;
	font-size: 12px;
	font-family: Verdana;
	line-height: 1.5;
}
ul, dl, dd, h1, h2, h3, h4, h5, h6, form, p {
	padding: 0;
	margin: 0;
}
ul {
	list-style: none;
}
table{border-collapse:collapse;}
td{width:20px; height:20px;border-left:0;border-top:0;border-right:1px solid #00cd11;border-bottom:1px solid #00cd11;border-collapse:collapse;}
.td_bg { background-color:#eee;}
.td_fullrow { background-color:#FF0;}
.td_block{background-color:red;}
.btn{display:block; width:150px;height:30px; margin:10px;}
#main{float:left; padding:15px; border:1px solid #eee; background-color:#000;height:510px;}
#control_side{float:left;padding-top:15px; margin:0 auto;width:200px; height:525px;border:1px solid #eee;background-color:#444;}
#nextzone{ padding:15px;margin: 0px auto; }
#gameControl{ padding:15px;}
#pointDisplay{ padding:5px 10px 10px 15px;color:#FFF;}
#levelDisplay{ padding:5px 10px 10px 15px;color:#FFF;}
#manual{ margin:0 auto;padding:5px 15px 0px 25px;color:#FFF;font-size:16px;}

#point{ font-size:18px;font-weight:bold; height:40px; color:#F00;text-align:center; border:1px solid #FFF;}
#level{ font-size:18px;font-weight:bold; height:40px; color:#F00;text-align:center;border:1px solid #FFF;}
</style>
</head>
<body onload="initGame();">
<div id="main">
	<div id="gamezone">
	</div>
</div>
<div id="control_side">
	<div id="nextzone">
	</div>
	<div>
		<div id="gameControl">
			<input type="button" name="start" value="开始" id="btnPlay" onclick="play()" class="btn" />
			<input type="button" name="start" value="暂停" id="btnPause" onclick="pause()" class="btn" />
			<input type="button" name="start" value="重新开始" id="btnRestart" onclick="restart()" class="btn" />
		</div>
		<div id="pointDisplay">
			<span>目前得分:</span>
			<div id="point">
				<span id="curPoint"></span>
			</div>
		</div>
		
		<div id="levelDisplay">
			<span>目前等级:</span>
			<div id="level">
				<span id="curLevel"></span>
			</div>
		</div>
		
		<div id="manual">
			<ul>
				<li>→ 向右移动</li>
				<li>← 向左移动</li>
				<li>↓ 加速向下</li>
				<li>空格 变换</li>
			</ul>
		</div>
	</div>
</div>
</body>
</html>

 

 

下面是javascript,代码有点多,呵呵

 

//游戏区大小定义
var zone_row_max = 25;
var zone_col_max = 10;
//下一方块预览区大小定义
var next_row_max = 4;
var next_col_max = 4;

//当前分数
var point = 0;
//消除一行的得分数
var get_point_per = 100;
//等级提高一级需要的分数
var level_point_per = 1000;
var level = 1;
//不同等级对应的游戏速度
var pointLevel = [0,800, 600, 400, 200, 100, 50];

var contrllor = null;
var contrllor_next = null;
var elGameZone =null;
var elNextZone = null;
var timer = null;

var isPaused = false;

//游戏初始化
function initGame(){

	elGameZone = document.getElementById('gamezone');
	elNextZone = document.getElementById('nextzone');
	elGameZone.innerHTML = createGameZone(zone_row_max, zone_col_max,false);
	elNextZone.innerHTML = createGameZone(next_row_max, next_col_max,true);	
	
	//firefox下,不支持innerText,只支持textContent
	if(document.getElementById("curLevel").innerText != undefined){
		document.getElementById("curPoint").innerText = "0";
		document.getElementById("curLevel").innerText = "1";
	}else{
		document.getElementById("curPoint").textContent = "0";
		document.getElementById("curLevel").textContent = "1";
	}
	
	
	document.getElementById("btnPause").disabled = true;
}

//开始
function play(){
	
	if(!isPaused){
		
		//游戏区
		contrllor = new Controller(elGameZone,false);
		contrllor.generateBlock(0,4,-1);
		//预览区
		contrllor_next = new Controller(elNextZone,true);
		contrllor_next.generateBlock(0,0,-1);
	}
	
	document.onkeydown = gameControl;
	timer = window.setInterval(start, pointLevel[level]);
	
	
	document.getElementById("btnPlay").disabled = true;
	document.getElementById("btnPause").disabled = false;	
	
	//点击按钮后,焦点转移到了暂停按钮上,导致操作区不响应键盘事件
	
	if (document.activeElement) {
		document.activeElement.blur();
	}
	
	
}

//暂停
function pause(){
	isPaused = true;
	document.getElementById("btnPlay").disabled = false;
	document.getElementById("btnPause").disabled = true;
	
	timer = window.clearInterval(timer);
	document.onkeydown = null;
	
}
//重新开始
function restart(){
	contrllor = null;
	contrllor_next = null;
	elGameZone =null;
	elNextZone = null;
	window.clearInterval(timer);
	point = 0;
	level = 1;
	isPaused = false;
	
	initGame();
	play();
}

//键盘控制
function gameControl(event){	
	//在IE9下面,event为未定义,必须从window.event中才能取到。
	var key = window.event ? window.event.keyCode : (event.which ? event.which : event.charCode);	
	if(key == 38){
		//上
	}else if(key == 40){
		//下
		contrllor.moveDown();
	}else if(key == 37){
		//左
		contrllor.moveLeft();
	}else if(key == 39){
		//右
		contrllor.moveRight();
	}else if(key == 32){
		//空格 变形
		contrllor.transform();
	}	
}
//游戏主控逻辑
function start(){
	if(contrllor.canMoveDown()){
		contrllor.moveDown();
	}else{
		//行消除及下落处理
		contrllor.processRows();
		//生成新的方块元素
		if(contrllor.block.getTop() <=0){
			alert("Game Over!");
			window.clearInterval(timer);
			document.onkeydown = null;
			return;
		}
		contrllor.block = null;
		contrllor.generateBlock(0,4,contrllor_next.block.block_type);
		
		//预览区元素擦除
		contrllor_next.easerBlock();
		window.clearInterval(timer);
		//预览区生成新的预览元素
		contrllor_next.generateBlock(0,0,-1);
		timer = window.setInterval(start, pointLevel[level]);
		
	}
}
//创建游戏区和预览显示区
function createGameZone(row,col,isNext){
	var data = new Array();
	
	data.push('<table border="1"><tbody>');
	for(var i=0; i < row; i++){
		if(!isNext){
			data.push('<tr id="row_' + i + '">');
		}else{
			data.push('<tr id="next_row_' + i + '">');
		}
		for(var j=0; j< col; j++){
			if(!isNext){
				data.push('<td id="row_' + i + 'col_' + j + '" class="td_bg"></td>');
			}else{
				data.push('<td id="next_row_' + i + 'col_' + j + '" class="td_bg"></td>');
			}
		}
		data.push('</tr>');
	}
	data.push('</tbody></table>');
	
	return data.join('');
}

//俄罗斯方块元素
function Block(row, col, block_type){

	this.r = row;
	this.c = col;
	this.block_type = block_type;	
	this.transform = 0;
	this.boxes = new Array();
	
	this.createBoxes = function(boxes_data){
		if(boxes_data != null && boxes_data.length > 0){
			for(var i=0; i< 4;i++){
				this.boxes[i] = new Box(boxes_data[i][0], boxes_data[i][1]);
			}		
		}
	}
	
	this.generateBoxes = function(){
		var boxes_data = {};
		var tf = this.transform % 4;
		switch(block_type){
			case 0:// ■ ■ ■ ■
				if(tf == 0 || tf == 2){
					boxes_data = [[this.r, this.c],[this.r, this.c+1],[this.r, this.c+2],[this.r, this.c+3]];
				}else if(tf == 1 || tf == 3){
					boxes_data = [[this.r, this.c],[this.r+1, this.c],[this.r+2, this.c],[this.r+3, this.c]];
				}
				break;			
			case 1:
			//■ ■
			//■ ■
				boxes_data = [[this.r, this.c],[this.r, this.c+1],[this.r+1, this.c],[this.r+1, this.c+1]];
				break;
			case 2:// ■ ■ ■ 
				   //   ■
				if(tf == 0){
					boxes_data = [[this.r, this.c],[this.r, this.c+1],[this.r, this.c+2],[this.r+1, this.c+1]];
				}else if(tf == 1){
					//  ■
					//■ ■
					//  ■
					boxes_data = [[this.r, this.c+1],[this.r+1, this.c],[this.r+1, this.c+1],[this.r+2, this.c+1]];
				}else if(tf == 2){
					//  ■
					//■ ■ ■
					boxes_data = [[this.r, this.c+1],[this.r+1, this.c],[this.r+1, this.c+1],[this.r+1, this.c+2]];				
				}else if(tf == 3){
					//  ■
					//  ■ ■
					//  ■
					boxes_data = [[this.r,this.c],[this.r+1, this.c],[this.r+1, this.c+1],[this.r+2, this.c]];	
				}
				break;
			case 3:// ■ ■
				   //   ■ ■
				if(tf == 0 || tf == 2){
					boxes_data = [[this.r, this.c],[this.r, this.c+1],[this.r+1, this.c+1],[this.r+1, this.c+2]];
				}else if(tf == 1 || tf == 3){
					//  ■
					//■ ■
					//■
					boxes_data = [[this.r, this.c+1],[this.r+1, this.c],[this.r+1, this.c+1],[this.r+2, this.c]];
				}				
				break;
			case 4://   ■ ■
				   // ■ ■
				if(tf == 0 || tf == 2){
					boxes_data = [[this.r, this.c+1],[this.r, this.c+2],[this.r+1, this.c],[this.r+1, this.c+1]];
				}else if(tf == 1 || tf == 3){
					//  ■
					//  ■ ■
					//    ■
					boxes_data = [[this.r, this.c],[this.r+1, this.c],[this.r+1, this.c+1],[this.r+2, this.c+1]];
				}
				break;
			case 5://   ■ 
				   //   ■
				   // ■ ■
				if(tf == 0){
					boxes_data = [[this.r, this.c+1],[this.r+1, this.c+1],[this.r+2, this.c+1],[this.r+2, this.c]];
				}else if(tf == 1){
					//  
					//■
					//■ ■ ■
					boxes_data = [[this.r, this.c],[this.r+1, this.c],[this.r+1, this.c+1],[this.r+1, this.c+2]];
				}else if(tf == 2){
					// ■ ■
					// ■
					// ■
					boxes_data = [[this.r, this.c],[this.r, this.c+1],[this.r+1,this.c],[this.r+2, this.c]];				
				}else if(tf == 3){
					// ■ ■ ■
					//     ■
					boxes_data = [[this.r, this.c],[this.r, this.c+1],[this.r, this.c+2],[this.r+1, this.c+2]];	
				}				
				break;
			case 6://   ■ 
				   //   ■
				   //   ■ ■
				if(tf == 0){
					boxes_data = [[this.r, this.c],[this.r+1,this.c],[this.r+2, this.c],[this.r+2, this.c+1]];
				}else if(tf == 1){
					//  
					//■ ■ ■
					//■ 
					boxes_data = [[this.r, this.c],[this.r, this.c+1],[this.r, this.c+2],[this.r+1, this.c]];
				}else if(tf == 2){
					//■ ■ 
					//  ■
					//  ■
					boxes_data = [[this.r, this.c],[this.r, this.c+1],[this.r+1, this.c+1],[this.r+2, this.c+1]];				
				}else if(tf == 3){
					//     ■ 
					// ■ ■ ■
					//     
					boxes_data = [[this.r, this.c+2],[this.r+1, this.c],[this.r+1, this.c+1],[this.r+1, this.c+2]];	
				}
				break;
		}
		
		return boxes_data;
		
	}
	
	this.mvR = function(){
		if(this.boxes != null){
			for(var i=0,length=this.boxes.length; i<length; i++){
				this.boxes[i].mvR();
			}
			this.c++;
		}
	}
	
	this.mvD = function(){
		if(this.boxes != null){
			for(var i=0,length=this.boxes.length; i<length; i++){
				this.boxes[i].mvD();
			}
			this.r++;
		}
		
	}
	
	this.mvL = function(){
		if(this.boxes != null){
			for(var i=0,length=this.boxes.length; i<length; i++){
				this.boxes[i].mvL();
			}
			this.c--;
		}
	}
	//最左边
	this.getLeft = function(){
		return Math.min(Math.min(this.boxes[0].col, this.boxes[1].col),Math.min(this.boxes[2].col, this.boxes[3].col));
	}
	//最右边
	this.getRight = function(){
		return Math.max(Math.max(this.boxes[0].col, this.boxes[1].col),Math.max(this.boxes[2].col, this.boxes[3].col));
	}
	//最底边
	this.getBottom = function(){
		return Math.max(Math.max(this.boxes[0].row, this.boxes[1].row),Math.max(this.boxes[2].row, this.boxes[3].row));
	}
	//最顶边
	this.getTop = function(){
		return Math.min(Math.min(this.boxes[0].row, this.boxes[1].row),Math.min(this.boxes[2].row, this.boxes[3].row));
	}
	//是否当前Block的Box
	this.isCurBox = function(row, col){
		for(var i=0; i < this.boxes.length; i++){
			if(this.boxes[i].row == row && this.boxes[i].col == col){
				return true;
			}
		}
		
		return false;
		
	}
}

//Box 方块元素中的其中一个元素
function Box(row, col){
	this.row = row;
	this.col = col;
	
	this.mvR = function(){
		this.col++;
	}
	this.mvD = function(){
		this.row++;
	}
	this.mvL = function(){
		this.col--;
	}
	
}

function Controller(domEle,isNext){
	this.domEle = domEle;
	this.block = null;
	this.isNext = isNext;	
	
	//生成方块元素
	this.generateBlock = function(row, col,type){
		var block_type;
		//第一次随机生成,以后按照预览区方块生成
		if(type == -1){
			block_type = parseInt(Math.random() * (6-0+1) + 0);
		}else{
			block_type = type;
		}
		this.block = new Block(row, col, block_type);
		this.block.createBoxes(this.block.generateBoxes());
		this.dispBlock();
		
		
	}
	
	//变形
	this.transform = function(){
		if(this.block != null){
			if(this.canTransform()){
				this.easerBlock();
				this.block.transform++;
				this.block.createBoxes(this.block.generateBoxes());
				this.dispBlock();
			}
		}
		
	}
	
	//预生成一个变形后的Boxes数据,判断其所在的方格是否有方块,判断完后恢复原始的变形计数
	this.canTransform = function(){
		var org_tf = this.block.transform;
		this.block.transform++;
		var new_boxes_data = this.block.generateBoxes();
		
		for(var i=0; i< 4;i++){
			
			var r = new_boxes_data[i][0];
			var c = new_boxes_data[i][1];
			
			//变形后的方块超出边界,变形不可,返回
			if(r >= zone_row_max || r < 0 || c >= zone_col_max || c < 0){
				this.block.transform = org_tf;     
				return false;
			}
			
			id = "row_" + r + "col_" + c;
			if(!this.block.isCurBox(r,c)){
				if(document.getElementById(id)){
					if(document.getElementById(id).className == "td_block"){
						this.block.transform = org_tf;     
						return false;
					}
				}
			}
		}	
		
		this.block.transform = org_tf;
		return true;
	}
	
	//方块显示
	this.dispBlock = function(){
		if(this.block != null){
			for(var i=0; i < this.block.boxes.length; i++){
				var r = this.block.boxes[i].row;
				var c = this.block.boxes[i].col;
				var id="";
				if(!isNext){
					id = "row_" + r + "col_"+ c;
				}else{
					id = "next_row_" + r + "col_"+ c;
				}
				document.getElementById(id).className = "td_block";
			}
		}
	}
	//擦除方块
	this.easerBlock = function(){
		if(this.block != null){
			for(var i=0; i < this.block.boxes.length; i++){
				var r = this.block.boxes[i].row;
				var c = this.block.boxes[i].col;
				var id="";
				if(!isNext){
					id = "row_" + r + "col_"+ c;
				}else{
					id = "next_row_" + r + "col_"+ c;
				}
				document.getElementById(id).className = "td_bg";
			}
		}
	}
	//下移
	this.moveDown = function(){
		if(this.block != null){
			if(this.canMoveDown()){
				this.easerBlock();
				this.block.mvD();
				this.dispBlock();
			}
		}
	}
	this.canMoveDown = function(){
		var canMovedown = this.block.getBottom() < (zone_row_max-1);
		if(!canMovedown) return false;
		//下一行如果有方块,不能移动		
		return this.canMove('D');
	}
	//能否向右,向下,向左移动
	this.canMove = function(side){
		var canMovedown = true;
		var boxes = this.block.boxes;
		for(var i=0; i < boxes.length; i++){
			var r = boxes[i].row;
			var c = boxes[i].col;
			var id  = "";
			switch(side){
				case "D":
					id = "row_" + (r+1) + "col_" + c;
					r = r+1;
					break;
				case "R":
					id = "row_" + r + "col_" + (c+1);
					c = c + 1;
					break;
				case "L":
					id = "row_" + r + "col_" + (c-1);
					c = c - 1;
					break;
			}	
			
			if(!this.block.isCurBox(r,c)){
				if(document.getElementById(id).className == "td_block"){
					return false;
				}else{
					canMovedown = canMovedown && true;
				}
			}
		}
		
		return canMovedown;
	}
	//右移
	this.moveRight = function(){
		if(this.block != null){
			if(this.canMoveRight()){
				this.easerBlock();
				this.block.mvR();
				this.dispBlock();
			}
		}
	}
	this.canMoveRight = function(){
		var canMovedown = this.block.getRight() < (zone_col_max-1);
		if(!canMovedown) return false;
		//右边如果有方块,不能移动		
		return this.canMove('R');
	}
	//左移
	this.moveLeft = function(){
		if(this.block != null){
			if(this.canMoveLeft()){
				this.easerBlock();
				this.block.mvL();
				this.dispBlock();
			}
		}
	}
	this.canMoveLeft = function(){
		var canMovedown = this.block.getLeft() > 0;
		if(!canMovedown) return false;
		//左边如果有方块,不能移动		
		return this.canMove('L');
	}
	
	//行消除及下落
	this.processRows = function(){
		for(var r=zone_row_max-1; r >=0; r--){
			//可以消除
			if(this.isFullRow(r)){
				//消除
				this.delRow(r);
				//积分计算
				point += get_point_per;
				//等级计算
				level = parseInt((point / level_point_per) + 1);
				level = (level > (pointLevel.length -1)) ? (pointLevel.length-1) : level;
				
				if(document.getElementById("curLevel").innerText != undefined){
					document.getElementById("curPoint").innerText =  "" + point;
					document.getElementById("curLevel").innerText = "" + level;
				}else{
					document.getElementById("curPoint").textContent = "" + point;
					document.getElementById("curLevel").textContent = "" + level;
				}
				
				//方块下落处理
				for(var i=r; i >=1; i--){ 
					var j = (i-1)>0 ? (i-1) : 0;
					for(var m = 0; m < zone_col_max; m++){
						var des_id = "row_" + i + "col_" + m;
						var org_id = "row_" + j + "col_" + m;
						
						document.getElementById(des_id).className = document.getElementById(org_id).className;
					}
				}
				
				r = r + 1;
			}
		}
	}
	
	this.delRow = function(row){
		for(var i=0; i < zone_col_max; i++){
			var id = "row_" + row + "col_" + i;
			document.getElementById(id).className = "td_bg";
		}
	}
	
	this.isThisRowHasBox = function(row){
		var hasBox = false;
		for(var i=0; i < zone_col_max; i++){
			var id = "row_" + row + "col_" + i;
			if(document.getElementById(id).className == "td_block"){
				return true;
			}
			
		}
		return hasBox;
	}
	
	this.isFullRow = function(row){
		var hasBox = true;
		for(var i=0; i < zone_col_max; i++){
			var id = "row_" + row + "col_" + i;
			if(document.getElementById(id).className != "td_block"){
				return false;
			}
			
		}
		return hasBox;
	}
	
}

 

经测试,在ie9,firefox17,chrome23下面运行都没有问题。拿出来和大家分享一下

6
11
分享到:
评论
6 楼 Draling_2012 2013-01-09  
太牛!!!
5 楼 javaboy2010 2012-12-31  
很不错啊! 非常感谢楼主啊.
4 楼 wolf2012 2012-12-30  
玩了一下,还跟以前玩得差不多,挺有意思的.
3 楼 jybbh 2012-12-30  
强。。。。。。
2 楼 guo333guo 2012-12-30  
1 楼 smilease 2012-12-30  
玩了下,挺不错,就是感觉点击向上的箭头时出发变形事件比较符合习惯

相关推荐

    基于java学生宿舍管理系统设计与实现.docx

    基于java学生宿舍管理系统设计与实现.docx

    2023-04-06-项目笔记 - 第二百六十一阶段 - 4.4.2.259全局变量的作用域-259 -2025.09.19

    2023-04-06-项目笔记-第二百六十一阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.259局变量的作用域_259- 2024-09-19

    小程序-轻客洗衣.zip

    小程序-轻客洗衣.zip

    基于java的海鲜自助餐厅系统设计与实现.docx

    基于java的海鲜自助餐厅系统设计与实现.docx

    基于java的英语单词学习网站设计与实现.docx

    基于java的英语单词学习网站设计与实现.docx

    基于java旅游信息网站设计与实现.docx

    基于java旅游信息网站设计与实现.docx

    ASP.NET基于web的订餐系统的设计与实现(源代码+论文).zip

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。、资源 5来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。、资 5源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。

    智能网联汽车数据要素流通研究

    内容概要:文中介绍了智能网联汽车(ICV)在全球范围内成为了汽车产业的热点,并且伴随车辆连通程度的上升而提升了基于数据分析的产品研发和服务扩展的比重,使得数据资产的重要性显著提高。在国家重视数据市场的发展之下,智能网联汽车的数据价值潜力巨大。本文从数据流通可能的应用情景切入,分析适用于ICV的资料元素规范,并诊断国内ICV资料流转面临的挑战并给出了改进对策。 适合人群:智能网联汽车领域内的从业人员,尤其是专注技术研发以及相关政策标准研究人员。 使用场景及目标:适用于从事智能网联汽车研发生产和数据应用的设计与规划,以及为未来的数据流动建立合理的模式。具体来讲,涵盖改善供应链信息流、优化交通管控、强化道路信息服务以及增强无人驾驶系统算法训练的效果等方面的工作。 其他说明:未来工作的重点领域集中在数据流通策略、技术验证和发展关键技术创新方面,以确保整个智能网联汽车行业可持续健康发展。

    绿色算力定义及关键技术发展研究

    本文对绿色算力的概念进行了阐述,认为绿色算力是算力基础设施与生态保护有机结合的综合能力,并将其划分为算力设施、设备、平台、应用‘四位一体’协调发展的方式。通过分析绿色算力的含义、研究现状及关键技术(涵盖算力设备绿色技术、节能减排技术等)对其未来做出预测并给出了建议。此外还探讨了如何通过技术创新提高效率及推动全行业的数字化绿色化进程。 适合人群:电信、互联网数据中心、云技术提供商相关人员,对数据中心能耗管控及可持续发展战略有兴趣的决策人员等。 使用场景及目标:①用于数据中心绿色技术的应用;②助力企业或组织机构打造高效且环境友好的算力基础设施和服务;③帮助政策决策者和标准制制机构理解和确立相关方针策略。 其他注意事项:绿色算力不仅有助于环境保护,而且有助于企业削减运营费用,提高市场竞争力。文中提及的各项新技术、新方法有望成为未来的热门话题及发展方向。

    【无人机路径规划】用于无人机路径规划的多目标 PSO实现Matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    基于深度确定性策略梯度的UAV辅助移动边缘计算计算卸载优化python源码.zip

    基于深度确定性策略梯度的UAV辅助移动边缘计算计算卸载优化python源码.zip基于深度确定性策略梯度的UAV辅助移动边缘计算计算卸载优化python源码.zip 个人大四的毕业设计、课程设计、作业、经导师指导并认可通过的高分设计项目,评审平均分达96.5分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 [资源说明] 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设或者课设、作业,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96.5分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),供学习参考。

    使用vue框架开发的网络教学平台web页面.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用

    #_ssm_133_mysql_校园招聘信息管理系统_.zip

    均包含代码,文章,部分项目包含ppt

    ASP.NET公文管理系统的设计与实现(源代码+论文).zip

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REaDME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。

    #_ssm_096_mysql_辅导员工作管理系统_.zip

    均包含代码,文章,部分项目包含ppt

    ASP.NET基于.NET的城市公交查询系统的设计与实现(源代码+论文).zip

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。

    网络管理是什么 网络管理做什么 网络管理长什么样 1.带机量(支持用户数) 2.端口数 3.吞吐量,并发连接数 4.

    关键字:UTM/企业防火墙/NGFW 功能:vpn,sdwan,无线控制器,ldap,双因子认证,nat/透明,终端控制,av防病毒,ips入侵检测,应用控制,web过滤, FortiGate UTM/NGFW产品 ①端口:8口、16口、24口、48口 ②层数:二层(接入层交换机、傻瓜式交换机)、三层(核心交换机、汇聚交换机) ③是否网管 网管: 非网管(傻瓜式交换机,即插即用) WEB网管(S1720GW系列) 全网管(S1720GFR系列,S2700以上的型号都为全网管) ④速率:百兆、千兆、万兆等 1.带机量(支持用户数) 2.端口数 3.吞吐量,并发连接数 4.功能 功能差异须知 NG-xxxx产品特有功能 TG-xxxx&NG-xxxx共有功能 TG-xxxx产品特有功能 FW:网络接入、安全防护、高可用性、身份认证、系统服务、系统管理 ●应用层DDOS攻击防护 负载均衡:多链路负载均衡与备份、多链路智能选路技术、多算法的服务器负载均衡 ●异常行为分析:内置统计只能算法,智能学习

    基于java的云趣科技客户管理系统设计与实现.docx

    基于java的云趣科技客户管理系统设计与实现.docx

    基于java的鲜花销售管理系统设计与实现.docx

    基于java的鲜花销售管理系统设计与实现.docx

    基于java的美食网站设计与实现.docx

    基于java的美食网站设计与实现.docx

Global site tag (gtag.js) - Google Analytics