




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include<iostream>#include<stdlib.h>#include<windows.h>#include<time.h>#include<conio.h>usingnamespacestd;HANDLEMutex=CreateMutex(NULL,FALSE,NULL);//互斥对象intGameOver=0;intlevel=0;intmap[23][23];//坦克种类,Normal为玩家坦克#defineNormal0#defineRed1#defineBlue2#defineGreen3//方向的宏定义#defineUp0#defineDown1#defineLeft2#defineRight3//地图标记的宏定义#defineEmpty0#definePlayer1#definePlayerBullet2#defineEnemyBullet3#defineEnemy4intKill;intKillRed;intKillGreen;intEnemyExist;voidSetPos(inti,intj)//设定光标位置{ﻩCOORDpos={i,j}; HANDLEOut=GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorPosition(Out,pos);}voidHideCurSor(void)//隐藏光标{ CONSOLE_CURSOR_INFOinfo={1,0};ﻩHANDLEOut=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorInfo(Out,&info);}intsharp[4][12]={ﻩ{0,1,1,0,1,1,1,2,2,0,2,2},ﻩ{0,0,0,2,1,0,1,1,1,2,2,1},ﻩ{0,1,0,2,1,0,1,1,2,1,2,2},ﻩ{0,0,0,1,1,1,1,2,2,0,2,1},};//此数组用来保存坦克各个方向的形状信息DWORDWINAPIBulletfly(LPVOIDlpParameter);//子弹函数申明voidUpdata();//更新界面信息函数申明classTank//坦克类{private:ﻩintDirection;//方向 inthotpoint[2];//活动点 intSpeed;//速度ﻩintFirePower;//火力public: Tank(intdir,inthot1,inthot2,inttyp,intspe,intfirepow)//构造函数ﻩ{ﻩ Direction=dir; ﻩhotpoint[0]=hot1;ﻩ hotpoint[1]=hot2; Type=typ; ﻩSpeed=spe; FirePower=firepow;ﻩ} intType;//坦克的种类(详见宏定义) intID;//坦克在MAP中的标记(详见宏定义) intFireEnable;//是否可以开火 intLife;//生命值ﻩvoidRunning();//运营函数 intJudge(intx,inty,intID);//判断是否可以绘制坦克 voidDrawTank();//重绘坦克 voidRedraw();//擦除坦克 intGetSpeed()//获取速度 {ﻩ returnSpeed; } intGetFire()//获取火力ﻩ{ﻩﻩreturnFirePower;ﻩ}ﻩintGetDirection()//获取方向 {ﻩ returnDirection;ﻩ}ﻩintGetHotX()//获取活动点坐标ﻩ{ returnhotpoint[0];ﻩ} intGetHotY() { ﻩreturnhotpoint[1]; }ﻩvoidIncreaseFire()//火力+ﻩ{ FirePower++;ﻩ} voidIncreaseSpeed()//速度+ { ﻩSpeed++;ﻩ}ﻩvoidChangeDirection(intnewD)//改变方向ﻩ{ Direction=newD; } voidChangePos(intx,inty)//改变活动点 {ﻩﻩhotpoint[0]=x; ﻩhotpoint[1]=y;ﻩ}};Tankplayer(Right,0,0,Normal,1,1);//玩家Tankenemy(Left,20,0,Red,1,1);//敌人voidTank::DrawTank()//绘制坦克{ﻩinti;ﻩintnx,ny;ﻩif(Type==Red) ﻩ SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED); elseif(Type==Blue) ﻩﻩSetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_BLUE); elseif(Type==Green)ﻩﻩ SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN); elseif(Type==Normal) ﻩSetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);ﻩfor(i=0;i<6;i++)ﻩ{ ﻩnx=hotpoint[0]+sharp[Direction][i*2]; ﻩny=hotpoint[1]+sharp[Direction][i*2+1]; ﻩSetPos((ny+1)*2,nx+1);//运用sharp数组相对于点x,y绘制形状ﻩ map[nx][ny]=ID;ﻩﻩcout<<"■";ﻩ}}voidTank::Redraw()//擦除坦克,原理同上{ﻩinti; intnx,ny; for(i=0;i<6;i++)ﻩ{ nx=hotpoint[0]+sharp[Direction][i*2]; ﻩny=hotpoint[1]+sharp[Direction][i*2+1]; map[nx][ny]=Empty; ﻩSetPos((ny+1)*2,nx+1); cout<<"";ﻩ}}intTank::Judge(intx,inty,intdir)//判断当前是否可以绘制坦克{ﻩinti; intnx,ny;ﻩfor(i=0;i<6;i++)ﻩ{ nx=x+sharp[dir][i*2]; ﻩny=y+sharp[dir][i*2+1];ﻩ if(nx<0||nx>=23||ny<0||ny>=23||map[nx][ny]!=Empty)//不能绘制,返回1 ﻩﻩreturn1;ﻩ}ﻩreturn0;}voidTank::Running()//坦克运营函数{ﻩintnewD;ﻩ//坦克的运营ﻩwhile(1) {ﻩ if(Life==0) ﻩ{ ﻩ EnemyExist=0;//敌人不存在 ﻩ return;ﻩﻩ}ﻩ if(GameOver==1) ﻩﻩreturn;ﻩ if(FireEnable==1&&GameOver==0)//假如可以开火ﻩﻩ{ ﻩﻩWaitForSingleObject(Mutex,INFINITE);//线程拥有互斥对象ﻩ ﻩFireEnable=0;//设为不可开火ﻩﻩﻩHANDLEbullet=CreateThread(NULL,0,Bulletfly,&ID,0,NULL);//创建子弹线程 ﻩ CloseHandle(bullet); ﻩReleaseMutex(Mutex);//释放互斥对象ﻩ Sleep(100);ﻩﻩ} WaitForSingleObject(Mutex,INFINITE);//线程拥有互斥对象 ﻩsrand((int)time(0));ﻩnewD=rand()%4;ﻩ if(newD==Up)//随机出新的方向并重新绘制坦克ﻩﻩ{ ﻩRedraw();ﻩﻩﻩif(Judge(hotpoint[0]-1,hotpoint[1],newD)==0)ﻩ ﻩ{ ﻩ hotpoint[0]--; ﻩDirection=newD; ﻩ} ﻩelse ﻩ { ﻩﻩﻩif(Judge(hotpoint[0],hotpoint[1],newD)==0) ﻩﻩﻩﻩDirection=newD;} ﻩ}ﻩﻩelseif(newD==Down) ﻩ{ﻩﻩﻩRedraw(); ﻩ if(Judge(hotpoint[0]+1,hotpoint[1],newD)==0)ﻩ ﻩ{ ﻩ hotpoint[0]++;ﻩ Direction=newD;ﻩ } elseﻩ { ﻩ ﻩif(Judge(hotpoint[0],hotpoint[1],newD)==0) ﻩﻩﻩDirection=newD;}ﻩ }ﻩﻩelseif(newD==Left)ﻩﻩ{ﻩﻩ Redraw();ﻩ ﻩif(Judge(hotpoint[0],hotpoint[1]-1,newD)==0) ﻩ{ﻩ ﻩﻩhotpoint[1]--; ﻩﻩ Direction=newD;ﻩﻩ }ﻩﻩ else ﻩﻩ{ﻩﻩﻩ if(Judge(hotpoint[0],hotpoint[1],newD)==0) ﻩ Direction=newD;}ﻩﻩ}ﻩﻩelseif(newD==Right)ﻩﻩ{ ﻩ Redraw();ﻩﻩ if(Judge(hotpoint[0],hotpoint[1]+1,newD)==0)ﻩﻩﻩ{ﻩﻩ hotpoint[1]++; ﻩ Direction=newD; ﻩ} else ﻩ { ﻩ if(Judge(hotpoint[0],hotpoint[1],newD)==0) ﻩ ﻩﻩDirection=newD;} ﻩ}ﻩ if(GameOver==0&&Life!=0)ﻩﻩDrawTank();ﻩﻩReleaseMutex(Mutex);//释放互斥对象ﻩ Sleep(500-80*Speed);ﻩ}}/*********************子弹线程函数*******************/DWORDWINAPIBulletfly(LPVOIDlpParameter){ int*ID=(int*)lpParameter;//ID用来获取发射子弹坦克的IDﻩintPos[2];//子弹活动点 intdirection;ﻩintSpeed; inttype;ﻩinthit=0;//击中标记 intoldx,oldy;//旧活动点 intflag=0;//子弹是否有移动的标记 if(*ID==Player)//假如是玩家坦克ﻩ{ﻩﻩtype=PlayerBullet;ﻩﻩdirection=player.GetDirection();ﻩﻩSpeed=player.GetFire(); Pos[0]=player.GetHotX();ﻩﻩPos[1]=player.GetHotY();ﻩ}elseif(*ID==Enemy)//假如是敌人坦克ﻩ{ type=EnemyBullet;ﻩ direction=enemy.GetDirection(); ﻩSpeed=enemy.GetFire(); ﻩPos[0]=enemy.GetHotX(); ﻩPos[1]=enemy.GetHotY(); }ﻩif(direction==Up)//根据坦克的位置和方向拟定子弹的初始坐标ﻩ{ﻩﻩPos[0]--;ﻩ Pos[1]++;ﻩ} elseif(direction==Down) { Pos[0]+=3;ﻩﻩPos[1]++;ﻩ} elseif(direction==Left) {ﻩ Pos[0]++;ﻩ Pos[1]--; } elseif(direction==Right) { ﻩPos[0]++; Pos[1]+=3;ﻩ} //子弹的运营 while(1)ﻩ{ﻩﻩWaitForSingleObject(Mutex,INFINITE);//这个不再注释了。。。。。ﻩ if(flag==1&&hit!=1)//擦除原位置 {ﻩmap[oldx][oldy]=Empty; ﻩSetPos((oldy+1)*2,oldx+1);ﻩﻩcout<<"";ﻩ } ﻩif(GameOver==1)ﻩﻩﻩreturn0;ﻩﻩif(hit==1||Pos[0]<0||Pos[0]>22||Pos[1]<0||Pos[1]>22)//假如击中 ﻩ{ ﻩ ReleaseMutex(Mutex); ﻩ Sleep(500);ﻩ if(type==PlayerBullet)ﻩﻩ player.FireEnable=1;ﻩ ﻩelseif(type=EnemyBullet) ﻩﻩ enemy.FireEnable=1;ﻩﻩﻩbreak;ﻩﻩ} switch(map[Pos[0]][Pos[1]])//子弹通过的MAP的标记 ﻩ{ﻩ ﻩ caseEmpty://假如是空位置就绘制子弹 ﻩ map[Pos[0]][Pos[1]]=type; ﻩ ﻩSetPos((Pos[1]+1)*2,Pos[0]+1);ﻩ SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE); ﻩcout<<"■";ﻩ break;ﻩﻩcasePlayer://假如是玩家位置 ﻩ if(type!=PlayerBullet) ﻩ{ﻩ ﻩplayer.Life--;//生命减少 ﻩ ﻩif(player.Life<=0) ﻩ ﻩGameOver=1; ﻩ}ﻩﻩﻩUpdata(); ﻩ hit=1;ﻩ ﻩbreak;ﻩﻩcaseEnemy://假如是敌人位置 ﻩif(type!=PlayerBullet) ﻩhit=1; ﻩﻩelse ﻩﻩﻩ{ ﻩﻩhit=1;ﻩ ﻩKill++; ﻩﻩ if(Kill%20==0&&player.Life<5)//击杀数++ ﻩplayer.Life++;ﻩﻩﻩ ﻩif(enemy.Type==Red)//假如击杀红坦克ﻩﻩﻩ {ﻩ ﻩKillRed++;ﻩ ﻩﻩﻩﻩif(KillRed%10==0&&player.GetFire()<5) ﻩﻩ ﻩﻩplayer.IncreaseFire();ﻩﻩﻩﻩﻩ} ﻩif(enemy.Type==Green)///假如击杀绿坦克 ﻩ{ ﻩﻩﻩ KillGreen++; ﻩ ﻩif(KillGreen%10==0&&player.GetSpeed()<5)ﻩﻩﻩﻩ ﻩplayer.IncreaseSpeed(); ﻩ ﻩ}ﻩ ﻩ enemy.Redraw();//擦除敌人 ﻩﻩ ﻩenemy.Life=0;//敌人死亡ﻩ ﻩ}ﻩﻩﻩﻩUpdata(); break;ﻩﻩ}ﻩ oldx=Pos[0];ﻩﻩoldy=Pos[1]; ﻩif(direction==Up)//子弹移动ﻩﻩPos[0]--;ﻩelseif(direction==Down)ﻩ Pos[0]++; elseif(direction==Left) ﻩPos[1]--; elseif(direction==Right) ﻩPos[1]++;ﻩﻩReleaseMutex(Mutex);ﻩﻩflag=1; ﻩSleep(60-10*Speed);}ﻩreturn0;}/*************************敌人线程函数***************************/DWORDWINAPITankRuning(LPVOIDlpParameter){ﻩSleep(400); intPos;ﻩintStart[2];//敌人起始地址ﻩinttyp;ﻩintfire;ﻩintspe;ﻩwhile(1)ﻩ{ﻩ if(GameOver==1)ﻩ ﻩreturn0; srand((int)time(0));//随机出敌人起始地址 Pos=rand()%4; if(Pos==0)ﻩ{ﻩﻩStart[0]=2; ﻩStart[0]=2;ﻩ}ﻩelseif(Pos==1)ﻩ{ ﻩStart[0]=2;ﻩ Start[1]=18;ﻩ} elseif(Pos==2)ﻩ{ ﻩStart[0]=18; ﻩStart[1]=2; } elseif(Pos==3) { Start[0]=18; ﻩStart[1]=18; } if(player.Judge(Start[0],Start[1],Down)==0)ﻩ break; }ﻩWaitForSingleObject(Mutex,INFINITE);ﻩsrand((int)time(0)); typ=rand()%3+1;//随机出敌人的种类 if(typ==Blue) { ﻩspe=1+level; fire=1+level; }ﻩelseif(typ==Red)ﻩ{ﻩﻩspe=1+level;ﻩ fire=3+level; }ﻩelseif(typ==Green) { ﻩspe=3+level;ﻩ fire=1+level;ﻩ}enemy=Tank(Down,Start[0],Start[1],typ,spe,fire);//重新生成敌人坦克 enemy.ID=Enemy; enemy.Life=1; enemy.FireEnable=1; ReleaseMutex(Mutex);ﻩenemy.Running();ﻩreturn0;}voidInit()//初始化函数{ Kill=0;ﻩKillRed=0;ﻩKillGreen=0;ﻩplayer=Tank(Left,0,0,Normal,1,1);ﻩenemy=Tank(Left,0,0,Red,1,1); player.Life=2;ﻩplayer.FireEnable=1;ﻩenemy.Life=0; enemy.FireEnable=1; player.ID=Player; enemy.ID=Enemy; EnemyExist=0;}voidUpdata()//更新界面信息{ SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);ﻩinti;ﻩSetPos(53,0); cout<<"生命值:";ﻩSetPos(53,1); for(i=0;i<5;i++) {ﻩ if(i<player.Life)ﻩ cout<<"■";ﻩ else cout<<"";ﻩ}ﻩSetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN); SetPos(53,3); cout<<"移动速度:"; SetPos(53,4);ﻩfor(i=0;i<5;i++) {ﻩﻩif(i<player.GetSpeed()) cout<<"■";ﻩ elseﻩ ﻩcout<<"";ﻩ} SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED); SetPos(53,5);ﻩcout<<"火力:"; SetPos(53,6);ﻩfor(i=0;i<5;i++)ﻩ{ if(i<player.GetFire()) ﻩ cout<<"■"; else cout<<""; }SetPos(53,8); SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE); cout<<"杀敌数:"<<Kill; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED);ﻩSetPos(53,9); cout<<"杀死红坦克:"<<KillRed;ﻩSetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_GREEN);ﻩSetPos(53,10);ﻩcout<<"杀死绿坦克:"<<KillGreen;}voidDrawMap()//画界面{ SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);ﻩsystem("cls");ﻩinti; for(i=0;i<25;i++)ﻩ{ ﻩSetPos(i*2,0);ﻩﻩcout<<"■";ﻩ}ﻩfor(i=1;i<25;i++)ﻩ{ﻩﻩSetPos(0,i);ﻩ cout<<"■"; SetPos(24*2,i);ﻩ cout<<"■"; } for(i=0;i<25;i++) { ﻩSetPos(i*2,24);ﻩﻩcout<<"■"; }ﻩ Updata(); }voidWelcome()//欢迎界面{ﻩintx;ﻩsystem("cls");ﻩSetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE); SetPos(10,5);ﻩcout<<"■■■■■■■■■■■■■■■■■■■■■■■■";ﻩSetPos(10,6);ﻩcout<<"■坦克大战控制台版■"; SetPos(10,7); cout<<"■■■■■■■■■■■■■■■■■■■■■■■■"; SetPos(10,8);ﻩcout<<"■方向键移动,空格键射击■"; SetPos(10,9);ﻩcout<<"■敌人分为3种,蓝色为普通敌人■";ﻩSetPos(10,10); cout<<"■红色敌人高射速,绿色敌人高机动性■"; SetPos(10,11); cout<<"■每杀死10个红坦克,玩家射速提高(最高五级)■"; SetPos(10,12); cout<<"■每杀死10个绿坦克,玩家移动性提高(最高五级)■";ﻩSetPos(10,13);ﻩcout<<"■每杀死20个坦克,玩家生命+1(最高五格)■"; SetPos(10,14); cout<<"■■■■■■■■■■■■■■■■■■■■■■■■"; ﻩSetPos(10,15); cout<<"■何某作(百度ID:HapHapYear)■"; SetPos(10,16); cout<<"■按1-3选择难度■"; SetPos(10,17); cout<<"■■■■■■■■■■■■■■■■■■■■■■■■"; while(1)ﻩ{ x=getch();ﻩﻩif(x<='3'&&x>='1') ﻩbreak; }ﻩlevel=x-'0'-1;}intmain(){ Init(); HideCurSor(); Welcome(); DrawMap(); HANDLEtemp;ﻩintnewD;ﻩplayer.DrawTank(); while(GameOver==0)ﻩ{ﻩﻩif(GetAsyncKeyState(VK_UP))//按键上 ﻩ{ ﻩWaitForSingleObject(Mutex,INFINITE);ﻩﻩﻩnewD=Up;ﻩﻩ player.Redraw(); if(player.Judge(player.GetHotX()-1,player.GetHotY(),newD)==0)//移动玩家坦克,原理和敌人函数同样ﻩﻩﻩ{ﻩ ﻩ player.ChangePos(player.GetHotX()-1,player.GetHotY());ﻩﻩﻩﻩplayer.ChangeDirection(newD); ﻩ } ﻩﻩelse ﻩ{ ﻩif(player.Judge(player.GetHotX(),player.GetHotY(),newD)==0)ﻩ ﻩplayer.ChangeDirection(newD);} ﻩif(GameOver==0)ﻩﻩﻩplayer.DrawTank();ﻩﻩﻩReleaseMutex(Mutex);ﻩﻩﻩSleep(200-player.GetSpeed()*20);//按键延迟,决定玩家坦克的速度ﻩﻩ} ﻩelseif(GetAsyncKeyState(VK_DOWN))//按键下,同上 ﻩ{ ﻩWaitForSingleObject(Mutex,INFINITE); ﻩnewD=Down; player.Redraw(); ﻩif(player.Judge(player.GetHotX()+1,player.GetHotY(),newD)==0) ﻩﻩ{ ﻩ player.ChangePos(player.GetHotX()+1,player.GetHotY());ﻩﻩﻩﻩplayer.ChangeDirection(newD);ﻩﻩﻩ} else {ﻩ ﻩﻩif(player.Judge(player.GetHotX(),player.GetHotY(),newD)==0) ﻩﻩ player.ChangeDirection(newD);} ﻩﻩif(GameOver==0)ﻩ player.DrawTank();ﻩ ReleaseMutex(Mutex);ﻩﻩﻩSleep(200-player.GetSpeed()*20); ﻩ}ﻩﻩelseif(GetAsyncKeyState(VK_RIGHT))//按键右,同上ﻩ {ﻩﻩ WaitForSingleObject(Mutex,INFINITE);ﻩﻩ newD=Right;ﻩ ﻩplayer.Redraw();ﻩﻩ if(player.Judge(player.GetHotX(),player.GetHotY()+1,newD)==0)ﻩﻩﻩ{ ﻩ ﻩplayer.ChangePos(player.GetHotX(),player.GetHotY()+1);ﻩ ﻩﻩplayer.ChangeDirection(newD);ﻩﻩﻩ}ﻩﻩﻩelse {ﻩﻩﻩ if(player.Judge(player.GetHotX(),player.GetHotY(),newD)==0) ﻩ ﻩplayer.ChangeDirection(newD);} ﻩﻩif(GameOver==0)ﻩ ﻩ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 军婚财务管理办法
- 农场国土管理办法
- 农村书屋管理办法
- 农村帐目管理办法
- 农田耕牛管理办法
- 农资散户管理办法
- 冰川遗迹管理办法
- 减免税管理办法
- 出版印刷管理办法
- 出资金不管理办法
- 2025年湖北省中考英语试题(附答案)
- 老人噎食急救处理
- 2025年国有企业管理者考试试卷及答案
- 2025至2030年中国特种化学品行业市场竞争现状及前景战略研判报告
- 成人重症患者颅内压增高防控护理专家共识
- 花岗岩循环荷载作用下的力学性能研究
- vda6.3vda6.5考试试题及答案
- 红娘合伙人协议书
- 《2025年CSCO肾癌诊疗指南》解读
- 2025年全国保密教育线上培训考试试题库(含答案)含答案详解
- 清洗储水罐服务合同协议
评论
0/150
提交评论