河北联合大学汇编课设报告正文

上传人:无*** 文档编号:127317225 上传时间:2022-07-29 格式:DOC 页数:22 大小:341KB
收藏 版权申诉 举报 下载
河北联合大学汇编课设报告正文_第1页
第1页 / 共22页
河北联合大学汇编课设报告正文_第2页
第2页 / 共22页
河北联合大学汇编课设报告正文_第3页
第3页 / 共22页
资源描述:

《河北联合大学汇编课设报告正文》由会员分享,可在线阅读,更多相关《河北联合大学汇编课设报告正文(22页珍藏版)》请在装配图网上搜索。

1、汇编语言(双语)一、软件背景介绍1.1背景知识俄罗斯方块原本是前苏联科学家阿列克谢帕基特诺夫所开发的教育用软件,之后开始提供授权给各个游戏公司,造成各平台上软件大量发行的现象。Game Boy版的俄罗斯方块在日本卖出424万套,是Game Boy史上卖最好的游戏。海湾战争时,也是前线美军最常拿消磨时间的游戏之一。由于俄罗斯方块具有的数学性、动态性与知名度,也经常拿来作为游戏程序设计的练习题材。俄罗斯方块曾经造成的轰动与带来的经济价值,可以说是世界游戏史上的一个奇迹。它看似简单却又变化无穷,令人上瘾。相信大多数用户都还记得为它痴迷得“茶不思饭不想”的那个俄罗斯方块时代。俄罗斯方块上手极其简单,但

2、是要熟练地掌握其中的操作与摆放技巧,难度却不低。作为家喻户晓老少皆宜的大众游戏,其普及程度可以说是史上任何一款游戏都无法相比的。俄罗斯方块(Tetris, 俄文:)是一款风靡全球的电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克谢帕基特诺夫发明,故得此名。俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。由于上手简单、老少皆宜,从而家喻户晓,风靡世界。 俄罗斯方块原名是俄语(英语是Tetris),这个名字来源于希腊语tetra,意思是“四”,而游戏的作者最喜欢网球(tennis)。于是,他把两个词tetra和tennis合而为一,命名为Tetr

3、is,这也就是俄罗斯方块名字的由来。 1.2基本功能部分游戏有单格方块,可以穿透固定的方块到达最下层空位。其他的改版中出现更多特别的造型。方块会从区域上方开始缓慢继续落下。玩家可以做的操作有:以90度为单位旋转方块,以格子为单位左右移动方块,让方块加速落下。方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处,而新的方块出现在区域上方开始落下。当区域中某一列横向格子全部由方块填满,则该列会消失并成为玩家的得分。同时删除的列数越多,得分指数上升。当固定的方块堆到区域最上方而无法消除层数时,则游戏结束。1.3运行截图图1 运行截图图2 运行截图图3 运行截图二、核心算法思想游戏区域由许

4、多等面积的小方块构成,这些区域状态只有满或空两种。将空间以静态二维数组实现,并预先定义其状态值。满为1,空为0,以此来完成游戏地图区域的空间分配。小方块的实现是由一个4*2的小数组表示,用四个存储单位空间存储当前下坠物的每一个子块的位置来对整个下坠物件的位置进行标识,每个存储空间的大小就是一个点的坐标。每个方块都有其对应的编号,编号按由上到下,由左到右的顺序编排。有了这些编号,方块的变换实现起来就方便多了。再由一个宏去标识下坠物的位置。 游戏进程需要定时器的驱动,所以很有必要在程序当中加入一个定时器机制。如此对游戏的开始,暂停,结束控制便能够得到实现。游戏开始后便开始掉落方块,并且会在游戏区域

5、上方出现下一个下坠物的形态,因此有随机物件产生这个操作。此时用户可根据需要来变换方块,向左或向右移动来调整方块位置,然后通过按下使方块加速下落。这就涉及到了四个主要操作。当方块向左或向右移动时,需要判定方块是否达到了游戏区域的边界;当方块下落时需要判定方块是否到了游戏区域的底部,或是碰到了别的方块。这样游戏内部便引入众多相关函数。对这些函数进行实现和细化之前,需要对整个游戏运行期间的概要流程有所了解。本游戏界面简洁明了,没有什么花哨的东西。菜单栏功能并不复杂,仅有游戏控制和选项设置两项。进入游戏后的窗口背景是黑色调,游戏区域是灰色调,这些都可以通过选项进行调整。游戏区域有20列,10行,这样设

6、计是为了让方框有足够的高度,可以让玩家有充足的反应时间来处理掉落的方块。游戏开始后默认的方块是具有立体感的红色方块,其颜色和质感都是经过精心设计的。而在上方会显示将要落下的方块,让玩家做好迎接挑战的心理准备,下方则显示分数。游戏的操作主要由鼠标和键盘来完成。鼠标点击开始后便可用键盘上的“上下左右”来对方块进行操作。方块的实现七种下坠物都有一个共同点,就是它们占据的空间一样,都是由四个等面积的小方块构成,因此用一个整型的数组来存储每个下坠物的四个小方块的坐标位置。每个下坠物中的方块都有编号,编号按从左到右,从上到下的顺序排列。从代码中可以看出程序首先获取了当前下坠物的四个小方块坐标,然后所有纵坐

7、标递减一格,由函数计算出改变数据的区域。这样便可完成左移命令。右移和下移的道理也是一样。但是这里涉及到一个问题,就是要对移动是否到达游戏区域的边界做出判断。左、右移的限制原理是一样的,只是方向和坐标数据有点区别。根据各种不同形态的下坠物最左边的小方块的正左(右)方区域是否为非被占用状态来判断它是否可以移动。而下移的限制涉及到消行判断,这些将在后面做具体分析。方块的旋转操作需要考虑到两个问题,一个是如何实现旋转,另一个是判断能否旋转。为了实现旋转,首先获取当前下坠物的四个小方块的坐标位置。由于每种方块变形后的状态都不同,因此需要对下坠物的不同形态进行编号。三、 核心算法流程图进入程序后先进行屏幕

8、初始化,之后显示调用显示边框函数,再显示新方块。检测按键状态,之后再度检测键盘状态。 图4 流程控制算法流程图为了保证整个程序结构性能良好,不会出现与其他函数体同时用一个寄存器而使得程序跑飞。在进入程序后先将几个主要寄存器推入堆栈,当程序退出时,又将寄存器值从堆栈中送回。堆栈采用的是先进后出的算法,所以应当注意顺序。这样接口,便于向后兼容,使用起来方便。 图5 流程控制算法流程图四、源代码下面给出的是用俄罗斯游戏实现程序的源代码:;游戏状态 GS_RUNNING equ 0 GS_PAUSED equ 1 GS_OVER equ 2 ;最高可达到的关数 LEVEL_LIMITT equ 15

9、;游戏区域起始位置及大小 GM_LEFT equ 25 GM_TOP equ 4 GM_WIDTH equ 12 GM_HEIGHT equ 20 GM_MASK equ (1 SHL GM_WIDTH-1) ;功能键扫描码 KEY_ESC equ 1h ;ESC KEY_LEFT equ 4bh ;LEFT KEY_RIGHT equ 4dh ;RIGHT KEY_ROLATE equ 48h ;UP KEY_DOWN equ 50h ;DOWN KEY_QUICKLY equ 3dh ;F3 KEY_SLOW_DOWN equ 3ch ;F2 KEY_TURN equ 4fh ;End K

10、EY_PAUSE equ 53h ;Delete KEY_CHANG_MODE equ 3bh ;F1 CHAR_CLEAR equ ;擦除字符,ascii CHAR_BRICK equ 2 ;方块外形,ascii ;0黑 1深蓝 2绿 3蓝 4红 5紫 6黄 7灰白,最高位置1则高亮显示 COLOR_CLEAR equ 0h COLOR_DIED_BRICK equ 08h COLOR_TITTLE equ 7; COLOR_NUMBER equ 3 or 8 ;屏幕上各说明文字或装饰物的坐标,皆为相对游戏场地左上角 X_NEXT_BRICK equ -5 Y_NEXT_BRICK equ

11、3 Y_LBOUND_CHAR equ 17 Y_RBOUND_CHAR equ 16 Y_BOUND_COLOR equ 2 or 8;blue X_UBOUND_CHAR equ 15 X_DBOUND_CHAR equ 15 X_BOUND_COLOR equ 2 or 8;green X_START equ (GM_WIDTH-1)/2 Y_START equ -1 X_SCORE_STR equ -10 X_LEVEL_STR equ X_SCORE_STR X_adjustLevelDelt_STR equ X_SCORE_STR-4 X_MODE_STR equ X_SCORE_

12、STR-4 Y_SCORE_STR equ 5 Y_LEVEL_STR equ Y_SCORE_STR+2 Y_adjustLevelDelt_STR equ Y_LEVEL_STR+2 Y_MODE_STR equ Y_adjustLevelDelt_STR+2 X_SCORE_POS equ -3 X_LEVEL_POS equ X_SCORE_POS X_adjustLevelDelt_POS equ X_SCORE_POS X_MODE_POS equ X_SCORE_POS Y_SCORE_POS equ Y_SCORE_STR+1 Y_LEVEL_POS equ Y_LEVEL_S

13、TR+1 Y_adjustLevelDelt_POS equ Y_adjustLevelDelt_STR+1 Y_MODE_POS equ Y_MODE_STR+1 X_GAME_OVER equ -10 X_JUDGE_STR equ X_GAME_OVER+5 X_GAME_NAME equ GM_WIDTH/2-4 Y_GAME_NAME equ -1 Y_GAME_OVER equ -3 Y_JUDGE_STR equ Y_GAME_OVER+1 ;判断游戏区域(dl,dh)位置是否为空 ;in : dl-x, dh-y ;out : flag register isPosNotEmp

14、ty proc push dx push bx push ax push cx push di push si mov si,curMB mov si,(ManyBrick ptr si).mb_bCnt ;ax-mask,第dl位置1 mov ax,1 mov cl,dl shl ax,cl lea di,game.ga_map ;map+2*dh xor bh,bh mov bl,dh shl bl,1 only_one_brick: and ax,bx+di je is_pos_empty_out cmp si,1 jne is_pos_empty_out cmp bx,(2*GM_HE

15、IGHT-2) je is_pos_empty_out_pre add bx,2 jmp only_one_brick ;ensure the result is correct is_pos_empty_out_pre: cmp bx,0 is_pos_empty_out: pop si pop di pop cx pop ax pop bx pop dx ret isPosNotEmpty endp ;判断游戏是否结束 isGameOver proc push bx mov bx,curMB cmp (ManyBrick ptr bx).mb_sPos.pos_bY,Y_START jne

16、 still_alive ;游戏的确结束了 mov game.ga_state,GS_OVER call doGameOver still_alive: pop bx ret isGameOver endp ;游戏结束后,调用此过程,显示一些提示信息,待等用户下一步指示,重玩或退出 doGameOver proc call clrScreen call moreBeautiful mov si,offset gameOverStr mov cx,45 mov dl,X_GAME_OVER ;x mov dh,Y_GAME_OVER ;y call showStr mov ax,game.ga_

17、score mov cx,43 call AXModCX and ax,3 mov di,ax shl di,1 mov cx,judgeCntdi mov si,judgeTabledi mov dl,X_JUDGE_STR mov dh,Y_JUDGE_STR call showStr mov al,CHAR_BRICK wait_for_restart: call randomDraw call delay jmp wait_for_restart ret doGameOver endp ;in : ax-ax0, cx-cx0 ;out: ax=ax0/cx0, cx=ax0%cx0

18、AXModCX proc push dx xor dx,dx div cx mov cx,dx pop dx ret AXModCX endp randomDraw proc push dx push bx push ax call getRand mov cx,GM_WIDTH call AXModCX mov dl,cl call getRand mov cx,GM_HEIGHT call AXModCX mov dh,cl call getRand and al,7 or al,8 mov bl,al pop ax call drawBrick pop bx pop dx ret ran

19、domDraw endp ;游戏暂停时调用此过程,显示提示信息,按任意键继续 doGamePaused proc push si push cx push dx push ax mov si,offset gamePausedStr mov cx,46 ;46 chars mov dl,0 ;x mov dh,GM_HEIGHT/2;y call showStr call waitForKeyPress mov game.ga_state,GS_RUNNING mov dl,0 mov dh,GM_HEIGHT/2 mov al,CHAR_CLEAR mov cx,46 ;46 chars e

20、rase_paused_words: mov bl,COLOR_CLEAR call drawBrick inc dl loop erase_paused_words call moreBeautiful call drawMap call ManyBrick_drawSelf pop ax pop dx pop cx pop si ret doGamePaused endp ;clear the screen clrScreen proc push ax mov ah,00h mov al,03h int 10h pop ax ret clrScreen endp ;游戏完成时跳转到此,表示

21、对极富耐心者的景仰_,并退出游戏 doGameFinished: call clrScreen call moreBeautiful mov si,offset gameFinishedStr mov cx,58 ;58 chars mov dl,-GM_LEFT+5 mov dh,-2 call showStr dGF_keybuf_empty: call getRand call randomDraw mov ah,1 int 16h jz dGF_keybuf_empty jmp main_quit ;等待直到有键被按下 waitForKeyPress proc push ax key_

22、buf_empty: mov ah,1 int 16h jz key_buf_empty ;ignore the key just press mov ah,0 int 16h pop ax ret waitForKeyPress endp ;方块下落停止时,设置当前下落方块所占用的地图位置,并消除满行 lastBattle proc call ManyBrick_setMap call checkFull ret lastBattle endp ;若map数组相应为置位 则在相应位置显示一个方块 drawMap proc push ax push dx push bx push cx pus

23、h si push di lea si,game.ga_map mov cx,GM_HEIGHT xor dh,dh drawMap_outer: push cx mov cx,GM_WIDTH xor dl,dl mov di,1 push si mov si,si mov ah,3 drawMap_inner: mov bl,3 sub bl,ah mov ah,bl test si,di jz clear_it ;draw a brick mov al,CHAR_BRICK mov bl,COLOR_DIED_BRICK jmp draw_map_over clear_it: cmp m

24、ode,2 jne ignor_background mov al,| mov bl,ah jmp draw_map_over ignor_background: mov al,CHAR_CLEAR mov bl,COLOR_CLEAR draw_map_over: call drawBrick inc dl shl di,1 loop drawMap_inner pop si pop cx add si,2 inc dh loop drawMap_outer pop di pop si pop cx pop bx pop dx pop ax ret drawMap endp ;检查是否有满行

25、的情况,满则消除,并增加得分. checkFull proc push ax push bx push cx push dx xor dx,dx ;此次能消除的行数 lea bx,game.ga_map add bx,2*(GM_HEIGHT-1) mov cx,GM_HEIGHT check_full_again: mov ax,bx cmp ax,GM_MASK jne brick_not_full inc dx call mapScrollDown loop check_full_again brick_not_full: sub bx,2 loop check_full_again t

26、est dx,dx jz get_zero_score ;此次得分:2*行数-1 shl dx,1 dec dx add game.ga_score,dx call calcLevel call showScore get_zero_score: pop dx pop cx pop bx pop ax ret checkFull endp ;根据得分计算当前关数 calcLevel proc push ax push bx push cx mov bx,offset levelScoreLast xor ah,ah mov cx,LEVEL_LIMITT add_level_again: mo

27、v al,bx cmp game.ga_score,ax jae calc_level_out dec bx loop add_level_again calc_level_out: mov level,cx cmp level,LEVEL_LIMITT jb game_unfinished add sp,6 jmp doGameFinished game_unfinished: call showLevel pop cx pop bx pop ax ret calcLevel endp ;显示当前关 showLevel proc push dx push bx push ax mov bl,

28、COLOR_NUMBER mov dl,X_LEVEL_POS mov dh,Y_LEVEL_POS mov ax,level call showInt pop ax pop bx pop dx ret showLevel endp ;显示当前得分 showScore proc push dx push bx push ax mov bl,COLOR_NUMBER mov dl,X_SCORE_POS mov dh,Y_SCORE_POS mov ax,game.ga_score call showInt pop ax pop bx pop dx ret showScore endp ;显示当

29、前自动提升的关数 showAdjustLevelDelt proc push dx push bx push ax mov bl,COLOR_NUMBER mov dl,X_adjustLevelDelt_POS mov dh,Y_adjustLevelDelt_POS mov ax,challenge call showInt pop ax pop bx pop dx ret showAdjustLevelDelt endp showMode proc push dx push bx push ax mov bl,COLOR_NUMBER mov dl,X_MODE_POS mov dh,Y

30、_MODE_POS mov ax,mode call showInt call drawMap pop ax pop bx pop dx ret ret showMode endp ;在(dl,dh)为起始的位置显示ax中的一个整数 ;in : ax-the integer to be show ; dl-x , dh-y; showInt proc push cx push si push di xor di,di mov cx,10 show_int_again: inc di push dx xor dx,dx ;dx:ax /cx, ax ,dx div cx mov si,ax mo

31、v al,dl pop dx add al,30h call drawBrick dec dl mov ax,si cmp ax,0 jnz show_int_again cmp di,1 jne no_need_to_clear mov al,CHAR_CLEAR push bx mov bl,COLOR_CLEAR call drawBrick pop bx no_need_to_clear: pop di pop si pop cx ret showInt endp ;在(X_NEXT_BRICK,Y_NEXT_BRICK)处显示下一个将要下落的方块s drawNextBrick pro

32、c push bx push dx ;first clear the last draw mov bx,curMB mov dx,WORD ptr (ManyBrick ptr bx).mb_sPos.pos_bX mov (ManyBrick ptr bx).mb_sPos.pos_bX ,X_NEXT_BRICK mov (ManyBrick ptr bx).mb_sPos.pos_bY ,Y_NEXT_BRICK call ManyBrick_clearCur mov WORD ptr (ManyBrick ptr bx).mb_sPos.pos_bX,dx ;second draw t

33、he next-brick mov bx,nextMB mov dx,WORD ptr (ManyBrick ptr bx).mb_sPos.pos_bX mov (ManyBrick ptr bx).mb_sPos.pos_bX ,X_NEXT_BRICK mov (ManyBrick ptr bx).mb_sPos.pos_bY ,Y_NEXT_BRICK xchg bx,curMB call ManyBrick_drawSelf xchg curMB,bx mov WORD ptr (ManyBrick ptr bx).mb_sPos.pos_bX,dx pop dx pop bx re

34、t drawNextBrick endp ;游戏区域对应map数组在bx行处下卷,即清除bx所在行 ;in: bx -the line to be clear mapScrollDown proc push bx push ax push cx dec cx je scroll_over push si push di mov di,bx lea si,di-2 std rep movsw pop di pop si scroll_over: mov game.ga_map,0 call drawMap pop cx pop ax pop bx ret mapScrollDown endp ;

35、根据当前下落的方块所在位置设置游戏区域所代表的map数组 ManyBrick_setMap proc push ax push bx push cx push dx push si push di push bp lea di,game.ga_map mov bx,curMB mov cx,(ManyBrick ptr bx ).mb_bCnt lea si,(ManyBrick ptr bx ).mb_sBrick lea bp,(ManyBrick ptr bx).mb_sPos setMap_again: mov dh,(Brick ptr si).b_sPos.pos_bY add d

36、h,ds:(Pos ptrbp).pos_bY mov dl,(Brick ptr si).b_sPos.pos_bX add dl,ds:(Pos ptrbp).pos_bX call isPosLeagel js setMap_ignore cmp dh,0 js setMap_ignore ;mapdh mov bl,dh shl bl,1 xor bh,bh ;bx-&mapdh lea bx,bx+di mov ax,1 push cx mov cl,dl shl ax,cl pop cx or bx,ax setMap_ignore: add si,size Brick loop

37、setMap_again cmp mode,0 jz color_stay call drawMap color_stay: pop bp pop di pop si pop dx pop cx pop bx pop ax ret ManyBrick_setMap endp ;接受用户输入,并转化为内部数据,有的立即响应,如:ESC退出 processUserInput proc push ax push bx push cx mov ah,1 int 16h jz just_ignore cmp game.ga_state,GS_OVER jnz no_need_to_restart jmp

38、 restart_the_game no_need_to_restart: mov ah,0 int 16h cmp ah,KEY_ESC jnz gameCont ;quit the game jmp main_quit gameCont: cmp ah,KEY_PAUSE jz away_for_a_while cmp ah,KEY_QUICKLY jz go_quickly cmp ah,KEY_SLOW_DOWN jz go_slow_down cmp ah,KEY_LEFT jz set_dir_left cmp ah,KEY_RIGHT jz set_dir_right cmp a

39、h,KEY_DOWN jz set_dir_down cmp ah,KEY_TURN jz set_dir_turn cmp ah,KEY_CHANG_MODE jz set_mode cmp ah,KEY_ROLATE jnz just_ignore set_dir_rolate: mov dir,DIR_ROTATE jmp just_ignore set_dir_left: mov dir,DIR_LEFT jmp just_ignore set_dir_right: mov dir,DIR_RIGHT jmp just_ignore set_dir_turn: mov dir,DIR_

40、TURN jmp just_ignore set_mode: inc mode mov ax,mode mov cx,3 call AXModCX mov mode,cx call showMode jmp just_ignore go_slow_down: dec challenge jmp adjustLevelDelt_adjust go_quickly: inc challenge adjustLevelDelt_adjust: and challenge,0fh call showadjustLevelDelt jmp just_ignore away_for_a_while: mo

41、v game.ga_state,GS_PAUSED call doGamePaused jmp just_ignore set_dir_down: mov dir,DIR_DOWN_COMPLETE just_ignore: pop cx pop bx pop ax ret processUserInput endp ;判断方块下一步是否能继续,不能则转updateGameState Brick_goNext proc push ax push bx push cx push dx push di push si mov si,dir ;shl si,1 mov bx,curMB 五、开发中遇

42、到的问题1. 如何能够让下落的方块在检测到下方有原先掉下来的方块或者已经到达游戏界面的底部从而停下来呢?建立一个静态数据二维表与游戏界面映射。 栅格部分初始化为1,之后不对该静态数据位置操作。栅格部分是不会显示在屏幕上,只是在静态数据表中存在,以此方便对方块的出界,叠加等的判断。2. 当一格中的方块堆满后如何实现消除? 解决此问题的方法是用消行算法,当有出现方块不可动作,即NOT_DONE_CAN为1时,先将QUA_NOW当前位置在静态数据表中的映射数值置为1,之后判断静态数据表中是否有一整行为1,是则将该行以上数据整体下移一行,之后刷新显示,即通过判断静态数据表中的各个位置是否为1,为1则刷

43、新为洋红色否则刷为黑色;如若该行有0存在,则进行下一行的判断。3. 当一个或几个方块出界、叠加时候,如何判断这种情况?先将QUA_NOW传送给与其同类型,等长的一维数据表QUA_TEMP。当再将QUA_TEMP进行一次操作,比如向下操作:将QUA_TEMP中的Y轴坐标加1,X轴坐标不变,再调用NOT_DONE函数分别找到QUA_TEMP中四个方块位置在静态数据表中的映射,判断该位置数据是否为1,如若有一个1则,将NOT_DONE_CAN标志位置为1,即不可动作,否则将其置为0。DOWN_GOON函数则通过判断NOT_DONE_CAN标志位来选择是否将QUA_TEMP的值传送给QUA_NOW,如

44、若NOT_DONE_CAN为0,即可以动作,则传送数据,同时刷新显示。否则不可动作,则将QUA_NOW当前位置在静态数据表中的映射数据置为1,即跟新静态数据二维表。其他判断依此类推。 六、心得体会在这本次编写俄罗斯方块汇编游戏的中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找大量资料,请教老师和同学。使我再专业知识和动手实践方面都得了到很好的提升。在此次程序设计中,接触到了我们熟知的网络,在设计过程中总觉得好难实现,但在实现过程中,发现只要用心探索,一切皆有可能。通过课程设计,我对汇编语言有了更深一步的了解,发现其用起来不是十分的方便,但确实是比较适合我们初学者学习的语言。这次课程设计我对游戏编程有了一定的了解,虽然自己只用了汇编,但在实际操作的过程中,也和同学们交流探讨了好多其他语言关于游戏设计的思想,集思广益,拓宽了自己的眼界。增强了自己的实际动手能力,增加了学习计算机语言的兴趣,另外在课程设计中也得到了一定的成就感。决定再今后的学习中,多看一些这类方面的书籍,来进一步的了解相关的游戏编程知识,为以后的应用做准备。- 22 -

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!