`
sdh88hf
  • 浏览: 70530 次
  • 性别: Icon_minigender_1
  • 来自: 绍兴
社区版块
存档分类
最新评论

js 贪食蛇-双蛇抢食

    博客分类:
  • JS
 
阅读更多
最近在看javascript权威指南,真是写的好啊,在没看html5之前先写个小游戏练练手,看完全部以后策划一个html5游戏,这个游戏断断续续写了大概一周时间,采用面向对象的方式开发的,完成以后还是发现有很多之前设计不足的情况,在下个游戏中一定要改进,有兴趣的朋友给提点意见

1.0js 贪食蛇初稿,上下左右控制方向 空格暂定 回去继续搞..

1.1 面向对象开发的魅力,马上转双蛇抢食,后续开发拦杀

1.2 拦杀已开发完成

本地IE8 火狐17.0 谷歌23.0已测试通过

var SnakeGame = function(options) {
		//游戏配置项
		this.level = 5;//第几关 与速度相关
		this.blockWidth = 13;//身体食物面积(推荐10-20,耐玩性高)
		this.initBodyNum = 5;//初始身体长度
		
		if (options) {//加载控制器 食物 和身体颜色
			this.controler = options.controler;
			this._fm = options.fm;
			this.color = options.color;
		}

	};

	SnakeGame.prototype = {
		start : function() {//开始游戏
			//随机分配一个初始位置
			this.initBodyPos = this.getRnadPos(this.refsnakes);
			
			//创建身体管理器
			this.setBodyManager(new SnakeGame.BodyManager({
				speed : 500 / this.level,
				blockWidth : this.blockWidth,
				initBodyNum : this.initBodyNum,
				initBodyPos : this.initBodyPos
			}));

			//初始化身体
			this._bm.initBody(this._fm);
			
			//绑定鼠标事件
			this.keyBind();
		},
		getRnadPos : function(num){
			var pos = parseInt(Math.random()*(getWindowHeight()/this.blockWidth))*this.blockWidth;
			if(num&&num[0]["initBodyPos"]==pos)
				return this.getRnadPos();
			return pos;
		},
		setBodyManager : function(manager) {
			this._bm = manager;
			this._bm._parent = this;
		},
		setFoodManager : function(manager) {
			this._fm = manager;
		},
		keyBind : function() {
			var me = this;
			var _keyback = document.onkeydown;
			document.onkeydown = function(e) {
				if (_keyback) {
					_keyback(e);
				}

				var event = e || window.event;
				switch (event.keyCode) {
				case me.controler["left"]:
					me._bm.moveDir = 4;
					break;
				case me.controler["top"]:
					me._bm.moveDir = 1;
					break;
				case me.controler["buttom"]:
					me._bm.moveDir = 3;
					break;
				case me.controler["right"]:
					me._bm.moveDir = 2;
					break;
				case 32:
					me._bm.spendMove();
					break;
				}

			};
		},
		setRefSnakeBody : function(snake){//管理所有身体对象
			//被注掉的部分可以减少调用时的代码 但是不利于扩展分辨敌我
			/* if(!this.refsnakes){debugger;
				this.refsnakes = [snake];
				snake.setRefSnakeBody(this);
			}else{
				var flag = true;
				for(var i = 0;i<this.refsnakes.length;i++){
					if(snake===this.refsnakes[i]){
						flag =  false;
					}
				}
				if(flag){
					this.refsnakes.push(snake);
					for(var i = 0;i<this.refsnakes.length;i++){
						this.refsnakes[i].setRefSnakeBody(snake);
					}
				}
			} */
			
			this.refsnakes = snake;
		}
	};

	//身体管理器
	SnakeGame.BodyManager = function(options) {
		this.bodyArr = [];//存放bady的数组

		this.moveDir = 2;//下一步方向 1上 2右 3下 4左

		this.nowDir = 0; //正在移动的方向

		this.gameOptions = options;
	};SnakeGame.BodyManager.prototype = {

		initBody : function(manager) {//初始化身体
			this.setFoodManager(manager);

			for ( var i = 0; i < this.gameOptions["initBodyNum"]; i++) {
				var style = this._parent.color||"red";
				if (i == 0) {
					style = "black";
				}
				this.createBody({
					position : "absolute",
					width : this.gameOptions["blockWidth"],
					height : this.gameOptions["blockWidth"],
					top : this._parent.initBodyPos,
					backgroundColor : style,
					border : '1px',
					left : 0//this.gameOptions["initBodyPos"]
							//- (i * this.gameOptions["blockWidth"])
				});
			}

			this.startMove();
		},
		createBody : function(options) {//创建一块身体

			var _body = document.createElement("div");
			_body.style.position = "absolute";
			_body.style.width = options["width"] + "px";
			_body.style.height = options["height"] + "px";
			_body.style.top = options["top"] + "px";
			_body.style.left = options["left"] + "px";
			_body.style.background = options["backgroundColor"];
			_body.style.display = options["display"] || "block";
			_body.style.border = "1px solid";
			this.bodyArr.push(_body);

			document.body.appendChild(_body);

			return _body;
		},
		moveBody : function(num) {//移动身体
			if (this.nowDir != 0
					&& Math.abs(this.moveDir - this.nowDir) % 2 == 0) {//控制限制,例:在方向为左时 按左或右无效
				this.moveDir = this.nowDir;
			}
			var lastPosition = {};
			for ( var i = 0; i < this.bodyArr.length; i++) {
				this.bodyArr[i].style.display = "block";//显示身体

				var _l = getElementPos(this.bodyArr[i]).x;//获取身体坐标
				var _t = getElementPos(this.bodyArr[i]).y;
				var _cssparam = {
					left : _l,
					top : _t
				};
				var _dw = parseInt(this.bodyArr[i].offsetWidth,
						10);//获取块的宽度,因为是正方形所以高度也一样
				if (i == 0) {//是头的情况下
					var _dir, _len;//方向 和 移动的距离
					if (this.moveDir == 1 || this.moveDir == 3) {//1或3是垂直移动
						_dir = "top";
						if (this.moveDir == 1) {
							num = 0 - num;
						}
						_len = getElementPos(this.bodyArr[i]).y + num;
						if (_len<0 || _len>getWindowHeight()) {
							this.stopMove();
							return;
						}
					} else {//2或4是水平移动
						_dir = "left";
						if (this.moveDir == 4) {
							num = 0 - num;
						}
						_len = getElementPos(this.bodyArr[i]).x + num;
						if (_len<0 || _len+_dw>getWindowWidth()) {
							this.stopMove();
							return;
						}
					}

					_cssparam[_dir] = _len;

					for ( var j = 1; j < this.bodyArr.length; j++) {//如果头部撞到了自己的身体
						var _l2 = getElementPos(this.bodyArr[j]).x;
						var _t2 = getElementPos(this.bodyArr[j]).y;

						if (_l2 == _cssparam["left"] && _t2 == _cssparam["top"]) {
							this.stopMove();
							return;
						}
					}
					
					if(this._parent.refsnakes&&this._parent.refsnakes.length>0){//判断是否撞到对手的身体上
						for(var h = 0;h<this._parent.refsnakes.length;h++){
							var refbodys = this._parent.refsnakes[h]._bm["bodyArr"];
							for(var f = 0;f<refbodys.length;f++){
								if(refbodys[f].offsetLeft == _cssparam["left"] && refbodys[f].offsetTop == _cssparam["top"]){
									if(f==0){//如果撞的对手的头,那么同归
										this._parent.refsnakes[h]._bm.stopMove(true);
										this.stopMove();
										alert("打和");
										return;
									}
									this.stopMove();
									return;
								}
							}
							
						}
						
					}

				} else {//不是头部的话 只要照着上一个块的位置移动就行了
					_cssparam["left"] = lastPosition.x;
					_cssparam["top"] = lastPosition.y;
				}

				this.bodyArr[i].style.left = _cssparam["left"] + "px";
				this.bodyArr[i].style.top = _cssparam["top"] + "px";

				//记录上一个块
				lastPosition.x = _l;
				lastPosition.y = _t;
			}

			//头部位置
			var _hpl = this.bodyArr[0].style.left;
			var _hpt = this.bodyArr[0].style.top;

			//如果头部吃到食物
			if (this._fm && _hpl == this._fm.pos["x"] + "px"
					&& _hpt == this._fm.pos["y"] + "px") {
				this.createBody({//创建一个隐藏的身体,身体会马上根据上一个块的坐标把他带上去
					position : "absolute",
					width : this.gameOptions["blockWidth"],
					height : this.gameOptions["blockWidth"],
					top : -10,
					backgroundColor : this._parent.color,
					border : '1px',
					left : -10,
					display : "none"
				});
				this._fm.randomPosi();
				//this.changeSpeed(1);
			}

			this.nowDir = this.moveDir;
		},
		startMove : function() {//开始移动
			var me = this;
			function intervalCall() {//将移动方法闭包起来
				me.moveBody(me.gameOptions["blockWidth"]);
			}
			this.moveTimer = setInterval(intervalCall,//根据速度开始执行
					this.gameOptions["speed"]);
		},
		changeSpeed : function(num) {//加速的方法
			this.gameOptions["speed"] = this.gameOptions["speed"] - num;
			this.spendMove();
			this.startMove();
		},
		spendMove : function() {//暂定
			var me = this;
			if (!this.moveTimer) {
				me.startMove();
			} else {
				clearInterval(this.moveTimer);
				this.moveTimer = null;
			}
		},
		setFoodManager : function(manager) {//提供食物管理器
			this._fm = manager;
		},
		stopMove : function(flag) {//发生碰撞即将停止
			clearInterval(this.moveTimer);
			for ( var j = 0; j < this.bodyArr.length; j++) {//当前身体清空掉
				this.bodyArr[j].parentNode.removeChild(this.bodyArr[j]);
			}
			if(this._parent.refsnakes){
				if(this._parent.refsnakes.length==1){//如果一只有个对手,那么这个对手赢了
					if(!flag){
						alert(this._parent.refsnakes[0].color+" 赢");
					}
					
					var reload = function(){
						window.location.reload();
					}
					setTimeout(reload,3000);//3秒后重新游戏
				}
				
				for(var i = 0;i<this._parent.refsnakes.length;i++){//把自己从别人的对手列表中清除
					var subref = this._parent.refsnakes[i].refsnakes;
					
					for(var j = 0;j<subref.length;j++){
						if(subref[j]==this._parent){
							subref.splice(j,1);
						}
					}
				}
			}
		}
	};

	//食物管理器
	SnakeGame.FoodManager = function(options) {
		this.gameOptions = options;
		var me = this;

		this.foodDom;

		this.getRandomPos = function() {
			var _rw = parseInt(Math.random()
					* (getWindowWidth() / me.gameOptions["blockWidth"] - 1));
			var _rh = parseInt(Math.random()
					* (getWindowHeight() / me.gameOptions["blockWidth"] - 1));

			return {
				x : _rw * me.gameOptions["blockWidth"],
				y : _rh * me.gameOptions["blockWidth"]
			}

		}
		this.pos = this.getRandomPos();
		this.initFood({
			backgroundColor : "blue",
			left : this.pos["x"],
			top : this.pos["y"],
			width : this.gameOptions["blockWidth"],
			height : this.gameOptions["blockWidth"]
		});
	}

	SnakeGame.FoodManager.prototype = {
		initFood : function(options) {
			this.foodDom = document.createElement("div");
			this.foodDom.style.position = "absolute";
			this.foodDom.style.width = options["width"] + "px";
			this.foodDom.style.height = options["height"] + "px";
			this.foodDom.style.top = options["top"] + "px";
			this.foodDom.style.left = options["left"] + "px";
			this.foodDom.style.background = options["backgroundColor"];

			document.body.appendChild(this.foodDom);
		},
		randomPosi : function() {
			this.pos = this.getRandomPos();
			this.foodDom.style.top = this.pos["y"] + "px";
			this.foodDom.style.left = this.pos["x"] + "px";
		}

	}
	var param = new SnakeGame();

	//构造食物管理器
	var fm = new SnakeGame.FoodManager({
		blockWidth : param.blockWidth
	});

	
	//两条蛇 有不同的控制方式 相同的食物管理器
	var snake1 = new SnakeGame({
		controler : {
			buttom : 83,
			left : 65,
			top : 87,
			right : 68
		},
		fm : fm,
		color : 'red'
	});

	
	var snake2 = new SnakeGame({
		controler : {
			buttom : 40,
			left : 37,
			top : 38,
			right : 39
		},
		fm : fm,
		color : 'green'
	});
	
	/* var snake3 = new SnakeGame({
		controler : {
			buttom : 40,
			left : 37,
			top : 38,
			right : 39
		},
		fm : fm,
		color : 'yellow'
	}); */
	snake1.setRefSnakeBody([snake2/* ,snake3 */]);//配置对手列表,由此来分辨是敌是友
	snake2.setRefSnakeBody([snake1/* ,snake3 */]);
	//snake3.setRefSnakeBody([snake2,snake1]);
	
	snake1.start();
	snake2.start();
	//snake3.start();

  • 大小: 16.5 KB
分享到:
评论

相关推荐

    Android毕设实战项目基于Android的医院挂号系统.zip

    【项目资源】: 适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    (源码)基于CC++的简易聊天室系统.zip

    # 基于CC++的简易聊天室系统 ## 项目简介 这是一个简单易用的聊天室练手项目,主要用于提高开发者对CC++与网络编程的理解。虽然该聊天室是运行在shell上的命令行程序,但项目致力于提升其易用性和用户体验,帮助CC++初学者和使用者摆脱命令行界面简陋、交互体验差的固有印象。此程序客户端和服务端一体,服务端对环境有数据库相关要求,客户端可能需安装dl库,同时引入了jsoncpp、sqlite3等第三方库。 ## 项目的主要特性和功能 ### 特性 客户端和服务端一体设计。 尽可能简化客户端操作,提高易用性。 运用菜单形式,减少用户手动输入操作。 对用户密码进行不可逆加密,保障信息安全。 ### 功能 支持用户注册、登录,可选择保存账号密码实现免密登录。 提供全局广播模式,支持私聊、群聊功能。 允许用户添加、删除好友,设置特别关心和黑名单。 能够创建群组、加入群组,并对群员进行管理。

    ITIL 术语和缩写中文(简体).pdf

    ITIL 术语和缩写中文

    毕业设计物联网实战项目基于ESP8266的三路86面板智能开关.zip

    【项目资源】: 物联网项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    毕设单片机实战项目基于 STM32F407+ESP8266+RFID 的模拟公交车刷卡收费系统(物联网版).zip

    【项目资源】: 单片机项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    《人工智能在智能客服领域的应用方案》

    《人工智能在智能客服领域的应用方案》:在当今数字化时代,企业与客户之间的互动日益频繁,客户服务的质量和效率成为企业竞争的关键因素之一。传统的客服模式面临着诸多挑战,如人工客服成本高昂、工作时间受限、服务质量参差不齐、难以应对大量并发的客户咨询等问题。随着人工智能技术的飞速发展,智能客服应运而生,它能够为企业提供高效、便捷、低成本的客户服务解决方案,极大地提升客户体验和企业运营效率。无论是电商、金融、电信、教育等行业,都可以通过对客服数据的分析,优化自身的业务流程和服务质量,提升企业的竞争力。

    毕业设计物联网实战项目基于云端语音识别的智能控制设备,类似于天猫精灵,小爱同学。采用的芯片为stm32f407,wm8978,esp8266。.zip

    【项目资源】: 物联网项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    【光电技术领域】基于单片机的音乐梦幻灯与USB转接器设计:电子琴硬件组成及仿真电路实现

    内容概要:本文档是上海理工大学光电信息与计算机工程学院学生周文龙撰写的《光电融合集成电路路技术》设计报告,指导教师为隋国荣。报告分为两个部分:一是音乐梦幻灯设计,二是USB转接器仿真设计。音乐梦幻灯设计部分,以单片机为核心,通过硬件电路和软件编程实现简易电子琴,能够自动播放音乐并在电源接通时显示LED灯,详细介绍了硬件组成、原理图、元件清单及调试过程;USB转接器仿真设计部分,旨在搭建USB转接器电路,熟悉AD和嘉立创EDA等仿真平台的操作,绘制并验证电路原理图和PCB制版图,掌握焊接工艺和电路测试,为未来从事电工电子技术行业打下基础。 适合人群:电气工程、自动化、计算机等相关专业的大专院校学生,以及对单片机应用和电子电路设计感兴趣的初学者。 使用场景及目标:①学习单片机控制电子琴的原理和实现方法,包括硬件设计和软件编程;②掌握USB转接器电路的设计流程,包括原理图绘制、仿真、PCB制版图设计和电路板焊接;③提升实际动手能力和解决实际问题的能力,为未来从事相关行业打下基础。 阅读建议:本报告详细记录了设计过程中的每一个环节,包括理论知识的应用和实际操作的经验,建议读者在阅读过程中结合实际操作,逐步理解和掌握每个步骤的具体实现方法。同时,可以参考报告中提到的相关文献和工具,加深对单片机和电子电路设计的理解。

    毕设单片机实战项目基于ESP8266的可充电天气小时钟.zip

    【项目资源】: 单片机项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    毕业设计物联网实战项目基于PHP7的物联网管理系统ThinkIMF ,PHP IOT FRAMEWORK.zip

    【项目资源】: 物联网项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    (源码)基于C语言的简单计算器.zip

    # 基于C语言的简单计算器 ## 项目简介 这是一个基于C语言的简单计算器项目,借助命令行界面为用户提供基本数学运算功能。项目运用标准C库,无需额外依赖。 ## 项目的主要特性和功能 1. 具备命令行界面,用户可在命令行输入数字和运算符,程序负责解析并执行。 2. 支持加法、减法、乘法和除法等基本数学运算。 3. 能进行错误处理,遇到不合法输入(如非数字字符或错误运算符)时,会提示用户重新输入。 4. 采用交互式设计,用户可随时退出程序或继续计算新表达式。 ## 安装使用步骤 假设用户已下载并解压了项目的源码文件,按以下步骤操作 1. 编译源代码使用C编译器(如GCC)编译项目中的 calculator.c 文件,命令为 gcc calculator.c o calculator。 2. 运行程序在终端或命令行界面中,输入 .calculator 运行程序。 3. 输入表达式按照提示输入表达式,例如 5 + 3,然后按回车键。

    VB珠宝首饰店管理系统设计(源代码+系统+开题报告+答辩PPT).zip

    摘 要 面对信息时代的机遇与挑战,利用高科技手段来提高企业的管理水平无疑是一条行之有效的途径。利用计算机管理可以最大限度的发挥准确、快捷、高效等作用, 在越来越激烈的珠宝行业中,计算机管理技术对珠宝首饰公司的服务管理提供强有力的支持。因此,利用全新的计算机网络和珠宝首饰管理系统,已成为提高珠宝首饰公司的管理效率,改进服务水准的重要手段之一。本系统应用Visual Basic 6.0 中文版开发前台,用Microsoft Access 作后台服务器,采用客户机/服务器(C/S)管理思想来对珠宝首饰进销存管理。 关键词:管理水平, 管理效率,服务水准,珠宝首饰管理系统,客户机/服务器,管理思想

    (源码)基于C语言的调试终端及格式化输出系统.zip

    # 基于C语言的调试终端及格式化输出系统 ## 项目简介 本项目是一个基于C语言的调试终端及格式化输出系统,专为嵌入式系统或其他资源受限的环境设计。它提供了类似C标准库中printf函数的功能,支持格式化输出字符串、整数、浮点数等数据类型,适用于TI的C2000 MCU tms320f280049,使用CCS V8.1 IDE进行开发。 ## 项目的主要特性和功能 1. 调试终端初始化通过DebugTerminalInit函数初始化调试终端,配置GPIO引脚和SCIA模块,实现数据回显。 2. 格式化输出提供printf、vsprintf、vsnprintf和vscnprintf函数,支持格式化输出字符串、整数、浮点数等数据类型。 3. 数字输出number函数支持多种进制和标志位的数字格式化输出。 4. 指针地址输出pointer函数支持不同类型的指针地址格式化输出。

    机械工程PT5000汽轮机滑动轴承系统模拟试验台:动态行为与振动控制研究

    内容概要:PT5000汽轮机滑动轴承系统模拟试验台是一个类似于电厂汽轮机发电机的缩小模型,旨在帮助用户获取汽轮机转子动态行为和滑动轴承油膜现象的实际经验,并研究振动控制方法。该试验台模拟两级涡轮机(低压和中压),每级转子两侧各有8个叶片,共计16个叶片。通过电机驱动而非涡轮发电机,可以进行启停机测试,识别共振现象。试验台还支持多种实验,如不平衡/现场动平衡、轴不对中实验、摩擦实验、油膜故障试验、轴颈轴承实验以及根据油压和温度进行的转子动力学试验。试验台配备了多种传感器和控制系统,包括电涡流传感器、温度传感器、压力传感器等,用于监测和记录实验数据。 适合人群:从事汽轮机设计、制造、维护的技术人员,以及相关专业的高校师生和研究人员。 使用场景及目标:①研究汽轮机转子的动态行为和滑动轴承的油膜现象;②进行振动控制方法的研究;③模拟再现油膜涡动转和油膜震荡,研究其控制条件;④进行不平衡、不对中、摩擦等常见故障的模拟和分析;⑤通过调整油压、温度和预加载力,研究轴的行为变化。 其他说明:该试验台不仅适用于教学和科研,还可用于工业领域的培训和技术验证。试验台具有丰富的配置和可选配件,可以根据具体需求进行定制。试验台的机械和电气参数详细列出,确保用户能够全面了解设备性能。

    【更新至2023年】2000-2023年中国气候政策不确定性指数(全国、省、市三个层面)

    【更新至2023年】2000-2023年中国气候政策不确定性指数数据(全国、省、市三个层面) 1.时间:2000-2023年 2.来源:使用人工审计和深度学习算法MacBERT模型,基于中国《人民日报》《光明日报》《经济日报》《环球时报》《科技日报》《中国新闻社》等6家主流报纸中的1,755,826篇文章,构建了2000年1月至2023年12月的中国全国、省份和主要城市层面的CCPU指数。研究框架包括六个部分:数据收集、清洗数据、人工审计、模型构建、指数计算与标准化以及技术验证。 3.范围:中国、省、市三个层次 4.参考文献:Ma, Y. R., Liu, Z., Ma, D., Zhai, P., Guo, K., Zhang, D., & Ji, Q. (2023). A news-based climate policy uncertainty index for China. Scientific Data, 10(1), 881. 5.时间跨度:全国层面:日度、月度、年度;省级层面:月度、年度;地级市层面:月度、年度

    Android毕设实战项目pc+android 教务询查系统.zip

    【项目资源】: 适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    【telesky旗舰店】ACS712 5-30A通用.zip

    【telesky旗舰店】ACS712 5-30A通用.zip

    (源码)基于GD32F30x微控制器的USB设备驱动程序.zip

    # 基于GD32F30x微控制器的USB设备驱动程序 ## 项目简介 本项目聚焦于GD32F30x微控制器,开发了一套USB设备驱动程序,可实现USB设备的初始化、配置、数据传输以及中断处理等功能,涵盖主机模式下的枚举过程管理与设备模式的数据传输及中断处理。 ## 项目的主要特性和功能 1. USB设备驱动支持GD32F30x微控制器的USB设备模式,能完成设备初始化、端点配置、数据传输和中断处理等操作。 2. 枚举过程管理在主机模式下,对USB设备的枚举过程进行管理,包含获取设备描述符、设置地址和配置等步骤。 3. 数据传输支持USB设备的数据接收和发送。 4. 中断处理处理USB设备的各类中断事件,如传输完成、挂起、唤醒等。 5. 电源管理具备设备的挂起和唤醒等电源管理功能。 ## 安装使用步骤 1. 环境准备确保已安装GD32F30x微控制器的开发环境,包含IDE和必要的驱动库。 2. 代码下载从指定路径下载USB设备驱动代码。

    房地产开发行业深度:商业地产REITs支持文件落地,助推存量盘活提振消费-20230513-国信证券-49页.pdf

    房地产开发行业深度:商业地产REITs支持文件落地

Global site tag (gtag.js) - Google Analytics