《太空战机实验报告》由会员分享,可在线阅读,更多相关《太空战机实验报告(56页珍藏版)》请在人人文库网上搜索。

1、太空战机实验报告1. 实验截图图一开始游戏图二我方战机,敌方战机出现。敌方战机随机发射子弹,并上下浮动。背景音乐响起。图三射杀战机,积分增加。敌机与子弹碰撞,消失。图四被敌机射杀,血量减少为02. 游戏功能游戏规则1. 按下空格键游戏开始。2. 通过WSAD 键控制玩家飞机移动上下左右移动,但不能飞出边境。3. 当玩家按下空格键时,玩家飞机发射子弹。4. 玩家飞机被敌机碰到后,生命值会减少,生命值变为0的时候,游戏结束。5. 在游戏右方会一直出现电脑飞机(敌机),敌机分为超大、大、中、小四种类型,越大的飞机出现的几率越小。6. 敌机被玩家飞机击中后,生命值会减少,生命值变为0时,该敌机被摧毁,。

2、玩家得分。越大的飞机越难击毁,击毁后玩家得分也越多。7. 敌机飞到界面左方时,删除敌机。8. 敌方飞机的子弹分为两种,一种为普通子弹,另一种子弹为高级子弹,当敌方飞机的普通子弹与玩家飞机的子弹碰撞时相互抵消,敌方飞机的高级子弹不会与玩家飞机的子弹抵消9. 在界面外用一个文本显示玩家游戏得分。3. 流程图4. 数据结构创建5个继承类:我方战机类CMyFighter、子弹类CBullet、敌方战机类CEnemyFighter类、链表类CSpriteList、精灵父类CGameSprite。1. 我方战机类CMyFighter:m_fVelocityLeft;/ 控制飞机飞行的速度上下左右。m_fV。

3、elocityRight;m_fVelocityUp;m_fVelocityDown;m_fBulletCreateTime; /表示子弹的发射间隔.m_bCanFire; /表示判断是否开火2. 子弹类CBullet:m_iType; /表示该子弹是谁发射的变量3. 敌方战机类CEnemyFighter:m_fCreateTime;/ 创建敌机的时间见隔m_iCreatedSpriteCount;/表示创建战机数量m_fCanFireAfterCreated; /判断敌机创建后能否开火m_fBulletCreateTime; /子弹发射时间间隔m_fFloatTime; /战机飞行时上下浮动。

4、的时间间隔m_bFloatUp; /战机飞行时是上浮还是下浮4.链表类CSpriteList:structSpriteStruct /一个精灵结构体SpriteStruct;CSprite*pSprite; SpriteStruct*pNext; SpriteStruct*pPrev; ;SpriteStruct *m_pListHeader; /一个头节点指针int m_iListSize; /表示链表节点数的私有成员变量CSprite*m_pSpriteList; /精灵指针5. 精灵父类CGameSprite:virtualCGameSprite(); /get方法6. lessen.x。

5、类:m_iGameState; / 游戏状态0:结束或者等待开始1:初始化2游戏进行中.CSprite*m_pGameBegin; /游戏开始文字精灵 CMyFighter* m_pMyFighter; /战机类指针float m_iCreatedSpriteCount; /创造精灵数量CSpriteList m_SpriteList; /链表类精灵CSpriteList diji; /链表类敌机CEffect* die_texiao; /特效类精灵5. 算法描述在外星球上,玩家通过键盘WSAD键控制己方战机,通过空格键发射子弹消灭外星球的邪恶战机。游戏状态m_iGameState分为三种状态。

6、0,1,2 ,其中0表示游戏结束状态,1表示游戏初始化,2则表示游戏运行状态;0 1的转换为“空格开始”,初始化函数为GameInit函数;播放背景音乐。1 2的转换自然发生,即游戏初始化函数后会自动将游戏状态从1置为22 表示游戏运行状态,在该状态,敲击空格发射子弹消灭敌机,消灭敌机分数增加,被敌机打中自身的血量减少。2 0的转换是游戏结束。CGameMain:CGameMain()构造函数完成初始化工作初始化状态为0设置开始按钮我方战机初始化为空创造精灵数量初始化为0CGameMain:GameMainLoop(floatfDeltaTime )游戏的主循环,根据游戏的状态切换逻辑1、 当。

7、当游戏状态为0时,主循环一直循环,但不做处理,而是等待空格键按下,开始游戏。调用背景音乐。2、 当游戏状态为1时,调用GameInit()方法初始化游戏,然后置游戏状态为2。当游戏状态为2时,调用GameRun(fDeltaTime)方法,在CGameMain类的GameRun方法中,遍历链接中的每个节点,获得所有敌方战机的节点,让战机执行LoopTick方法,实现战机发射子弹和上下浮动。3、 游戏结束时会执行GameEnd且置状态为0。CGameMain:GameInit()完成对各种精灵的初始化1. 播放放在bin中的游戏背景音乐。2. 初始化我方战机为战机类指针”ControlSprit。

8、e”.设计我方战机的世界边界限制。3. 初始化分数为0.4. 初始化血量为100.CGameMain:GameRun(floatfDeltaTime )对于游戏进行的设置1.如果是我的战机,我方战机初始化2.敌方战机引用函数CEnemyFighter:ClassTick( fDeltaTime )进行引用。3.当游戏状态为2时,调用GameRun(fDeltaTime)方法,在CGameMain类的GameRun方法中,遍历链接中的每个节点,获得所有敌方战机的节点,让战机执行LoopTick方法,实现战机发射子弹和上下浮动。CGameMain:OnKeyDown(constintiKey,co。

9、nstboolbAltPress, constboolbShiftPress, constboolbCtrlPress )游戏开始和控制按钮1、 如果空格按下时,游戏未开始,即游戏状态为0,则将游戏状态改为1,运行游戏初始化函数(GameInit)。隐藏文字精灵“开始游戏”。2、 如果游戏状态是2时,设置战机移动,调用函数OnMove3、 如果空格按下时,战机为空。则调用函数SetCanFire,按下空格键即可发送子弹。void CGameMain:OnSpriteColSprite( const char *szSrcName, const char *szTarName )设置碰撞的发送方。

10、与接收方1. 调用匹配函数cemcmp(szSrcName,”,strlen(“”)=0),如果对象是子弹则继续判断2. 假若是我方战机被子弹击中则血量减少0.5.显示当前血量。3. 假如是对方战机被击中,则得分增加10分,更新显示我方分数。void CMyFighter:OnMove(bool bKeyDown, int iKey)设置战机飞行速度编写CMyFighter类OnMove方法代码。首先判断当前按键是按下还是松开的,其次判断是哪个按键的消息,根据这两个判断,为4个方向的速度矢量赋值。再次算出X后和Y轴上的速度,并设置战机的速度。m_pMyFighter-SetSpriteWorl。

11、dLimit(WORLD_LIMIT_STICKY,CSystem:GetScreenLeft()-10.f,CSystem:GetScreenTop(),CSystem:GetScreenRight() + 200.f, )设置战机的世界边界其次在构造函数中将m_pMyFighter赋予NULL的初始值。再次在GameInit方法中初始化m_pMyFighter。因为我们用new方法创建了m_pMyFighter对象,分配了内存,所以我们在CGameMain类的析构函数中需要调用delete方法将 m_pMyFighter使用的内存释放掉。m_CurScoreText-SetTextValu。

12、e(0);m_MaxScoreText-SetTextValue(0);/更新当前等级/HP显示在CGameMain类的GameInit方法中显示当前积分和最高积分 void CMyFighter:LoopTick( float fDeltaTime )/ 处理子弹的发射CMyFighter添加m_fBulletCreateTime,表示子弹的发射间隔,注意在构造函数中初始化为0.3。然后添加LoopTick方法,处理子弹的发射。参数为游戏的时间间隔;void CGameMain:CreateBullet( const float fPosX, const float fPosY )CGame。

13、Main类中添加m_iCreatedSpriteCount属性,表示游戏中发射子弹的数目注意在构造函数中初始化为0。然后添加CreateBullet方法,参数为子弹的X轴和Y轴坐标。并在该方法中创建一个子弹类,并设置子弹的位置和速度。因为模板子弹的方向是朝左,所以需要设置子弹按X轴对称旋转;IntiPosBase=CSystem:RandomRange(int)CSystem:GetScreenTop()+10,(int)CSystem:GetScreenBottom() - 10);创建战机时,只需要战机不显示在世界边界之外就可以,即Y轴坐标在比世界边界的上下边界稍微大一点的范围之间,在此我。

14、们设置比世界边界大10个世界坐标单位。void CEnemyFighter:LoopTick( float fDeltaTime )在函数中添加代码,当表示战机创建之后,隔多久才可以开始发射子弹的变量递减到小于等于0时,开始可以创建子弹,然后开始递减子弹的发射间隔变量,当递减到小于等于0时,战机发射子弹。if( m_bFloatUp )添加战机上下浮动的代码。当战机浮动时,首先累计浮动的时间,当浮动时间大于1和小于0时,修改上浮还是下浮的变量值。然后获得战机此时的Y轴坐标,我们设置上下浮动的速度为6,这样就可以计算出浮动后的Y轴坐标。void CGameMain:CreateBullet( i。

15、nt iType, const float fPosX, const float fPosY )为CBullet添加一个表示该子弹是谁发射的变量。if( 1 = iType ) /如果iType值为1,则说明子弹为敌方战机反射。SpriteStruct *CSpriteList:AddSprite( CSprite *pSprite )为链接类添加增加节点的方法void CSpriteList:DeleteSprite( const char *szName, bool bDeleteImage ) 添加根据精灵名称删除其在链接中的节点的方法。其中第二个参数表示是否将其在游戏中的精灵也删除。C。

16、Sprite *CSpriteList:GetSprite( const int iIndex )添加获得链接中某个节点的方法。首先根据索引获得精灵。void CSpriteList:DeleteSprite( const char *szName, bool bDeleteImage )根据名字删除精灵void CSpriteList:DeleteSprite( CSprite *pSprite, bool bDeleteImage )根据精灵对象删除精灵源代码Lessenx.hpublic:CGameMain(); /构造函数CGameMain(); /析构函数 / Get方法intGet。

17、GameState() return m_iGameState; / Set方法voidSetGameState( const int iState ) m_iGameState=iState; / 游戏主循环等voidGameMainLoop( floatfDeltaTime );voidGameInit();voidGameRun( float fDeltaTime );voidGameEnd();/ 事件函数void OnMouseMove( const float fMouseX, const float fMouseY );void OnMouseClick( const int i。

18、MouseType, const float fMouseX, const float fMouseY );void OnKeyDown( const int iKey, const bool bAltPress, const bool bShiftPress, const bool bCtrlPress );void OnKeyUp( const int iKey );void OnSpriteColSprite( const char *szSrcName, const char *szTarName );void OnSpriteColWorldLimit( const char *sz。

19、Name, const int iColSide );void CreateBullet( int iType, const float fPosX, const float fPosY );void AddSprite( CSprite *pSprite );CSprite* GetSprite(const char *szName)return m_SpriteList.GetSprite(szName);void DeleteSprite( CSprite *pSprite, bool bDeleteImage )m_SpriteList.DeleteSprite(pSprite,bDe。

20、leteImage);/ extern CGameMaing_GameMain;#endif / _LESSON_X_H_Lessenx.cpp/#include #include CommonClass.h#includeCSpriteList.h#include LessonX.h#includeCBullet.h#includeCEnemyFighter.h#include int a=100,b=0;CTextSprite* g_CurScoreText=new CTextSprite(CurScoreText);/显示当前积分CTextSprite* g_MaxScoreText=n。

21、ew CTextSprite(MaxScoreText);/ 显示最高分/CEffect* die_texiao=new CEffect(playerExplode);/CGameMaing_GameMain;/=/ 大体的程序流程为:GameMainLoop函数为主循环函数,在引擎每帧刷新屏幕图像之后,都会被调用一次。/=/ 构造函数CGameMain:CGameMain()m_iGameState=0;m_pGameBegin=new CSprite(GameBegin);m_pMyFighter=NULL;m_iCreatedSpriteCount=0;/=/ 析构函数CGameMain。

22、:CGameMain()delete m_pMyFighter;/=/ 游戏主循环,此函数将被不停的调用,引擎每刷新一次屏幕,此函数即被调用一次/ 用以处理游戏的开始、进行中、结束等各种状态. / 函数参数fDeltaTime : 上次调用本函数到此次调用本函数的时间间隔,单位:秒void CGameMain:GameMainLoop( floatfDeltaTime )switch( GetGameState() )/ 初始化游戏,清空上一局相关数据case 1:GameInit();SetGameState(2); / 初始化之后,将游戏状态设置为进行中break;/ 游戏进行中,处理各种。

23、游戏逻辑case 2:/ TODO 修改此处游戏循环条件,完成正确游戏逻辑if( true )GameRun( fDeltaTime );else / 游戏结束。调用游戏结算函数,并把游戏状态修改为结束状态SetGameState(0);GameEnd();break;/ 游戏结束/等待按空格键开始case 0:default:break;/=/ 每局开始前进行初始化,清空上一局相关数据void CGameMain:GameInit()PlaySound(yinyue,0,SND_FILENAME|SND_ASYNC|SND_LOOP);m_pMyFighter=NULL;if( NULL =。

24、 m_pMyFighter )m_pMyFighter=new CMyFighter(ControlSprite);m_pMyFighter-SetSpriteWorldLimit(WORLD_LIMIT_STICKY,CSystem:GetScreenLeft()-10.f,CSystem:GetScreenTop(),CSystem:GetScreenRight() + 200.f, CSystem:GetScreenBottom();g_CurScoreText-SetTextValue(100);g_MaxScoreText-SetTextValue(0);/=/ 每局游戏进行中voi。

25、d CGameMain:GameRun( float fDeltaTime )if( m_pMyFighter )m_pMyFighter-LoopTick( fDeltaTime );CEnemyFighter:ClassTick( fDeltaTime );intiListSize=m_SpriteList.GetListSize();for( int iLoop = 0; iLoop LoopTick( fDeltaTime );/=/ 本局游戏结束void CGameMain:GameEnd()void CGameMain:OnMouseMove( const float fMouse。

26、X, const float fMouseY )void CGameMain:OnMouseClick( const int iMouseType, const float fMouseX, const float fMouseY )void CGameMain:OnKeyDown( const int iKey, const bool bAltPress, const bool bShiftPress, const bool bCtrlPress )if( KEY_SPACE = iKey & 0 = m_iGameState )m_iGameState=1;m_pGameBegin-Set。

27、SpriteVisible(0);if( 2 = GetGameState() ) /当游戏状态为2时m_pMyFighter-OnMove(true,iKey);if( KEY_SPACE = iKey & NULL != m_pMyFighter )m_pMyFighter-SetCanFire(true );void CGameMain:OnKeyUp( const int iKey )if( 2 = GetGameState() )m_pMyFighter-OnMove(false,iKey);if( KEY_SPACE = iKey & NULL != m_pMyFighter )m。

28、_pMyFighter-SetCanFire( false );void CGameMain:OnSpriteColSprite( const char *szSrcName, const char *szTarName )/ 如果子弹if(memcmp(szSrcName,Bullet1_,strlen(Bullet1_)=0)if(memcmp(szTarName,ControlSprite,strlen(ControlSprite)=0)a=a-0.5;g_CurScoreText-SetTextValue(a);/CSprite*pSrcSprite=g_GameMain.GetSpr。

29、ite( szSrcName );/m_SpriteList.DeleteSprite(pSrcSprite,true);if(memcmp(szTarName,Horizont,strlen(Horizont)=0)b=b+10;g_MaxScoreText-SetTextValue(b);g_GameMain.DeleteSprite(g_GameMain.GetSprite(szTarName),true );void CGameMain:OnSpriteColWorldLimit( const char *szName, const int iColSide )void CGameMa。

30、in:CreateBullet( int iType, const float fPosX, const float fPosY )charszNameMAX_NAME_LEN;/ MAX_NAME_LE为CommonClass.h中宏定义 值为128sprintf( szName, Bullet1_%d, m_iCreatedSpriteCount );m_iCreatedSpriteCount+;CBullet *pBullet = new CBullet( iType,szName);pBullet-CloneSprite( Bullet1_Template );pBullet-SetS。

31、pritePosition( fPosX, fPosY );pBullet-SetSpriteLinearVelocityX( 60 );pBullet-SetSpriteWorldLimit(WORLD_LIMIT_NULL,CSystem:GetScreenLeft()-10.f,CSystem:GetScreenTop(),CSystem:GetScreenRight() + 200.f, CSystem:GetScreenBottom();if( 1 = iType ) /如果iType值为1,则说明子弹为敌方战机反射。pBullet-SetSpriteLinearVelocityX(。

32、 -30 );else/其他情况说明为我方战机反射pBullet-SetSpriteFlipX( true );pBullet-SetSpriteLinearVelocityX( 60 );float CEnemyFighter:m_fCreateTime = 0.f;int CEnemyFighter:m_iCreatedSpriteCount = 0;void CGameMain:AddSprite( CSprite *pSprite )m_SpriteList.AddSprite( pSprite );Myfighter.h#ifndef _CMYFIGHT_H#define _CMYF。

33、IGHT_H#include commonclass.hclass CMyFighter :public CSpriteprivate:floatm_fVelocityLeft;/ 控制飞机的上下左右速度floatm_fVelocityRight;floatm_fVelocityUp;floatm_fVelocityDown;float m_fBulletCreateTime;bool m_bCanFire;public:CMyFighter (const char* szName);CMyFighter(void);void OnMove(bool bKeyDown, int iKey);v。

34、oid SetCanFire( const bool bCan ) m_bCanFire = bCan; void CMyFighter:LoopTick( float fDeltaTime );#endifMyfighter.cpp#include .HeaderCMyFighter.h#includeLessonX.hCMyFighter: CMyFighter (const char* szName):CSprite(szName) /对构造函数进行实现floatm_fVelocityLeft;/ 控制飞机的上下左右速度floatm_fVelocityRight;floatm_fVelo。

35、cityUp;floatm_fVelocityDown;m_fVelocityLeft =0.f;m_fVelocityRight=0.f;m_fVelocityUp=0.f;m_fVelocityDown=0.f;m_fBulletCreateTime=0.3f;void CMyFighter:OnMove(bool bKeyDown, int iKey)if(bKeyDown)switch(iKey)case KEY_A: / 左m_fVelocityLeft =30.f;break;case KEY_D: / 右m_fVelocityRight =30.f;break;case KEY_。

36、W: / 上m_fVelocityUp =15.f;break;case KEY_S: / 下m_fVelocityDown =15.f;break;elseswitch(iKey)case KEY_A: / 左m_fVelocityLeft =0.f;break;case KEY_D: / 右m_fVelocityRight =0.f;break;case KEY_W: / 上m_fVelocityUp =0.f;break;case KEY_S: / 下m_fVelocityDown =0.f;break;float fVelX= m_fVelocityRight - m_fVelocit。

37、yLeft;float fVelY = m_fVelocityDown - m_fVelocityUp;SetSpriteLinearVelocity( fVelX,fVelY );/ 处理子弹的发射void CMyFighter:LoopTick( float fDeltaTime )m_fBulletCreateTime-= fDeltaTime;if( m_fBulletCreateTime #includeLessonX.hCEnemyFighter:CEnemyFighter(const char* szName):CSprite(szName)m_fBulletCreateTime。

38、=0.3;m_fFloatTime=0.5;m_bFloatUp=true;CEnemyFighter:CEnemyFighter(void)void CEnemyFighter:ClassTick( float fDeltaTime ) /创建敌方战机/ 是否到时间创建m_fCreateTime -= fDeltaTime;if( m_fCreateTime CloneSprite( HorizontalSprite_Template ); /克隆模板intiRandom=CSystem:RandomRange( iPosBase - 10, iPosBase + 10 ); floatfP。

39、osX=(int)CSystem:GetScreenRight() + 20.f;pSprite-SetSpritePosition( fPosX, (float)iRandom );pSprite-SetSpriteLinearVelocityX( -10.f );pSprite-SetSpriteWorldLimit(WORLD_LIMIT_NULL, CSystem:GetScreenLeft()-10.f,CSystem:GetScreenTop(),CSystem:GetScreenRight() + 200.f, CSystem:GetScreenBottom() );g_Game。

40、Main.AddSprite(pSprite);/在以下添加创建一架敌方战机的代码void CEnemyFighter:LoopTick( float fDeltaTime )m_fCanFireAfterCreated -= fDeltaTime;if( m_fCanFireAfterCreated = 1.f )m_bFloatUp = false;floatfPosY=GetSpritePositionY();fPosY+=6.f * fDeltaTime;SetSpritePositionY( fPosY );elsem_fFloatTime -= fDeltaTime;if( m_f。

41、FloatTime pSprite=pSprite;pPtr-pNext=NULL;pPtr-pPrev=NULL;/ 插入链表表尾if( NULL = m_pListHeader )m_pListHeader=pPtr;elseSpriteStruct*pTemp=m_pListHeader;while( NULL != pTemp-pNext )pTemp=pTemp-pNext;pPtr-pPrev=pTemp;pTemp-pNext=pPtr;m_iListSize+;return pPtr;void CSpriteList:DeleteSprite( const char *szNa。

42、me, bool bDeleteImage )SpriteStruct*pPtr=NULL;for( pPtr=m_pListHeader; NULL != pPtr; pPtr=pPtr-pNext )if( strcmp( szName, pPtr-pSprite-GetName() ) = 0 )/ 将本指针从链表中取出(即将链表中的前后指针重新指定)/ 假设目前链表如下:有ABC三个值,A B C,需要删除B/ 则需要将A的Next指向C,C的Prev指向A,删除后结果为A Cif( NULL != pPtr-pNext )pPtr-pNext-pPrev=pPtr-pPrev;if(。

43、 NULL != pPtr-pPrev )pPtr-pPrev-pNext=pPtr-pNext;/ 如果是表头if( pPtr = m_pListHeader )m_pListHeader=m_pListHeader-pNext;/ 删除Spriteif( bDeleteImage )pPtr-pSprite-DeleteSprite();/ 释放内存delete pPtr;m_iListSize-;return;CSprite *CSpriteList:GetSprite( const int iIndex )intiLoop=0;SpriteStruct*pPtr=m_pListHeader;while( NULL != pPtr )if( iLoop = iIndex )return pPtr-pSprite;iLoop+;pPtr=pPtr-pNext;return NULL。

太空战机c语言源码,太空战机实验报告相关推荐

  1. C语言学生学籍信息管理系统源码附赠实验报告

    一.课程设计目标 C语言课程设计的目的是通过课程设计的综合训练,培养学生实际分析问题.编程和动手能力,最终目标是通过这种形式,帮助学生系统掌握该门课程的主要内容,更好地完成教学任务.本课程设计具有如下 ...

  2. Go语言源码分析CAS的实现和Java如出一辙

    看了Go的源码CAS这块实现和java还是类似的. 关于Java的分析参考:Java使用字节码和汇编语言同步分析volatile,synchronized的底层实现 都是使用汇编指令:LOCK+CMP ...

  3. golang中文文档_【译】Go 语言源码贡献官方指导文档

    以前给 Go 语言项目源码提交过一些 commits,期间阅读他们的官方指导文档的时候觉得这篇指导文档可以作为绝佳的关于大型软件项目的规范管理的参考,因为最近又提交了几个 commits,就又把这篇文 ...

  4. 易语言php支付宝,支付宝填表登录易语言源码

    支付宝填表登录易语言源码 @MS_晨星天宇.版本 2 .支持库 spec .支持库 HtmlView .程序集 窗口程序集_窗口1 .子程序 _按钮1_被单击 调试输出 (开始登录 (超文本浏览框1, ...

  5. 技术宅的乐趣!网友编写出《流浪地球》“春节十二响”C语言源码

    [TechWeb]随着春节档科幻电影<流浪地球>的火爆,越来越多的网友对这部电影产生了浓厚的兴趣.电影中"春节十二响"的桥段相信会让每一个看过电影的观众记忆犹新. 近日 ...

  6. m3u8切片程序PHP视频切片软件转码系统易语言源码 云转码工具源码

    前端为易语言源码(含模块),后端为php源码[代码全开源 无加密]方便各种二开! 1.切片自动上传至你的服务器(m3u8链接) 2.切片完成后提示音 3.切片完成后(在软件上会自动显示地址) 4.批量 ...

  7. 易语言源码 VX多开 思路+源码

    介绍: 易语言源码 VX多开 思路+源码 网盘下载地址: http://kekewangLuo.cc/aOqsvkyTX0g 图片:

  8. C51单片机与PCF8591模块的交互:C语言源码解析

    目录 1. PCF8591模块简介 2. C51单片机与PCF8591的连接 3. C51单片机与PCF8591的C语言源码解析 4. 用法示例 5. 总结 6. 参考文献 在微控制器的世界中,C51 ...

  9. 【安全算法之SHA1】SHA1摘要运算的C语言源码实现

    [安全算法之SHA1]SHA1摘要运算的C语言源码实现 概述 头文件定义 C语言版本的实现源码 测试用例 github仓库 更多参考链接 概述 大家都知道摘要算法在安全领域,也是一个特别重要的存在,而 ...

最新文章

  1. 数据蒋堂 | 大清单报表的打印?
  2. numpy和scipy安装
  3. kaidi中 install cuda
  4. python的6种基本数据类型--集合
  5. “穿透”与“征兆”:长篇小说《环形女人》(一)
  6. 力扣268.丢失的数字
  7. AndroidICS4.0----LockScreen锁屏流程【Android源码解析九】
  8. 点云配准_各类ICP介及特征配准流程介绍
  9. IP路由原理 直连路由和静态路由 路由协议
  10. 2021 秋招算法岗人间地狱?人工智能方向年薪 60w 起!
  11. 8583报文格式介绍
  12. 【ER图】数据库实体关系图
  13. php缓冲区操作函数,PHP缓冲区的三个函数ob_start();ob_get_contents()
  14. 文本识别 OCR 浅析:特征篇
  15. 80年计算机专业硕士,多年多份多种多类的工作经验总结和分享,并提供技术咨询和培训、大学生志愿报考、专业学习及就业和面试指导
  16. 用Python写安卓APP,你怕不怕
  17. 超100家交易所高危漏洞导致50亿价值数字资产受威胁
  18. 2021计算智能期末复习
  19. selenium实战-同步网易云音乐歌单到qq音乐
  20. 搭建简易多人在线视频会议系统

热门文章

  1. 无线充线圈的一些特性
  2. HandBrake安装问题:提示安装frameworks .NET
  3. java雷电游戏源码项目
  4. 2021-2027全球及中国DVD刻录系统行业研究及十四五规划分析报告
  5. myeclipse 9.0 正式版破解激活完整图文教程
  6. 预约链接怎么做_分享微信公众号预约链接制作步骤
  7. 点读机一般具备以下几大特点
  8. 操作系统应该怎么学习?书籍、课程都整理好了
  9. ip4标准(ip4网段)
  10. 登记一个软件著作权要钱吗?要多少钱?去哪里登记?