小游戏网站源码分享大全?小游戏 网站

大家好,今天给各位分享小游戏网站源码分享大全的一些知识,其中也会对小游戏 网站进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!

每天一个C语言小项目,提升你的编程能力!

今天用C语言来实现一个打飞机的游戏!准确的说应该叫《防空车打飞机》一辆车在下面,三种类型的飞机在上空随机速度飞过(不断出现),而且飞机飞过的时候会往下方扔炸弹,在游戏上方也设置了分数和车的生命值,如果你被炸到了那么就会生命值-1,打死一架飞机分数就会加一,飞机不一样得分也会不一样。

游戏说明:

在游戏中,你操控你的防空车尽可能的多击落飞机,躲避飞机扔的炸弹。

游戏结束后,你可以选择重新开始游戏。

以下是游戏截图:

简单了解游戏后我们就来试试吧!

本项目编译环境:VisualStudio2019/2022,EasyX插件

代码展示:(直接上源码,大家可以看注释)

///////////////////////////////////\n//程序名称:防空车打飞机\n//操作方式:左左走右右走空格发射子弹\ninclude<vector>\ninclude<cmath>\n34;MSIMG32.lib&defineKEY_DOWN(vk_c)(GetAsyncKeyState(vk_c)&0x8000?1:0)\nusingnamespacestd;\n\n//IMAGE\nIMAGEbuffer(500,400),background,player,missile,planes[3],planebomb;\n\n//玩家x坐标,玩家y坐标,装弹剩余时间,生命值,得分\nintplayerx=0,playery=286,firereload=5,strength=50,score=0;\n\n//玩家防空导弹\nstructPLAYERMISL\n{\nintx;\ninty;\n};\n\n//飞机类型\nstructBOMBPLANE\n{\nintspeed;//飞机速度\nintwidth;//飞机宽度\nintheight;//飞机高度\n}bombplane[3]={{15,85,22},{12,81,22},{8,105,50}};\n\n//炸弹\nstructBOMB\n{\nintx;\ninty;\n};\n\n//飞机\nstructPLANE\n{\nintx;\ninty;\ninttype;\nintreload;//还有多少帧重新扔炸弹\n};\n\nvector<PLAYERMISL>misl;\nvector<PLANE>plane;\nvector<BOMB>bomb;\n\n\n//封装好的透明贴图函数\nvoidputpicture(intx,inty,IMAGEimg)\n{\nHDCdstDC=GetImageHDC(&buffer);\nHDCsrcDC=GetImageHDC(&img);\nTransparentBlt(dstDC,x,y,img.getwidth(),img.getheight(),srcDC,0,0,img.getwidth(),img.getheight(),RGB(40,112,162));\n}\n\n\n//精确延时\nvoidsleep(intms)\n{\nstaticclock_toldclock=clock();//静态变量,记录上一次tick\noldclock+=ms*CLOCKS_PER_SEC/1000;//更新tick\nif(clock()>oldclock)//如果已经超时,无需延时\n{\noldclock=clock();\n}\nelse\nwhile(clock()<oldclock)//延时\n{\nSleep(1);//释放CPU控制权,降低CPU占用率\n}\n}\n\n\n//矩形碰撞检测函数\nboolcollision(intx1,inty1,intw1,inth1,intx2,inty2,intw2,inth2)\n{\nif((abs((x1+w1/2)-(x2+w2/2))<(w1+w2)/2)&&abs((y1+h1/2)-(y2+h2/2))<(h1+h2)/2)\n{\nreturntrue;\n}\nelse\n{\nreturnfalse;\n}\n}\n\n\n//创建一颗防空导弹\nvoidcreatemisl()\n{\nPLAYERMISLplayermisl;\nplayermisl.x=playerx+12;\nplayermisl.y=playery-4;\nmisl.push_back(playermisl);\n}\n\n\n//创建一颗炸弹\nvoidcreatebomb(PLANEp)\n{\nBOMBb;\nb.x=p.x+bombplane[p.type].width/2-4;\nb.y=p.y+bombplane[p.type].height+2;\nbomb.push_back(b);\n}\n\n\n//创建一架飞机\nvoidcreateplane()\n{\nPLANEnewplane;\nnewplane.x=500;\nnewplane.y=rand()%181+20;\nnewplane.type=rand()%3;\nnewplane.reload=10;//炸弹发射间隔时间为10帧\nplane.push_back(newplane);\n}\n\n\n//加载图片资源\nvoidloadres()\n{\nloadimage(&background,&34;,&34;);\nloadimage(&player,&34;,&34;);\nloadimage(&planebomb,&34;,&34;);\nloadimage(&missile,&34;,&34;);\ncharfilename[10];\nfor(inti=0;i<3;i++)\n{\nsprintf(filename,&34;,i);\nloadimage(&planes[i],&34;,filename);\n}\n}\n\n\n//每帧绘图\nvoidrender()\n{\ncharinfo[25];\nSetWorkingImage(&buffer);//先在缓冲区绘图\nputimage(0,0,&background);\nputpicture(playerx,playery,player);//显示防空车\nvector<PLAYERMISL>::iteratorit1;\nvector<PLANE>::iteratorit2;\nvector<BOMB>::iteratorit3;\nfor(it1=misl.begin();it1!=misl.end();it1++)\n{\nputpicture(it1->x,it1->y,missile);//显示防空导弹\n}\nfor(it2=plane.begin();it2!=plane.end();it2++)\n{\nputpicture(it2->x,it2->y,planes[it2->type]);//显示飞机\n}\nfor(it3=bomb.begin();it3!=bomb.end();it3++)\n{\nputpicture(it3->x,it3->y,planebomb);//显示炸弹\n}\nsprintf(info,&34;,strength,score);\nouttextxy(0,0,info);//显示游戏数据\nSetWorkingImage();\nputimage(0,0,&buffer);//把缓冲区绘图内容一次性绘制上去,这样能消除闪烁\n}\n\n\nintWINAPIWinMain(HINSTANCE,HINSTANCE,LPSTR,int)\n{\nsrand(time(NULL));\nloadres();\ninitgraph(500,400);\nsetbkmode(TRANSPARENT);\nvector<PLAYERMISL>::iteratorit1;\nvector<PLANE>::iteratorit2;\nvector<BOMB>::iteratorit3;\n\ngamestart:\nbooleraseyes=false;\nwhile(true)\n{\nif(strength<1)\n{\nbreak;\n}\nif(plane.size()<3)\n{\ncreateplane();\n}\nfor(it1=misl.begin();it1!=misl.end();)\n{\nit1->y-=10;\nif(it1->y<0)\n{\nit1=misl.erase(it1);\n}\nelse\n{\n++it1;\n}\n}\nfor(it2=plane.begin();it2!=plane.end();)\n{\nit2->x-=bombplane[it2->type].speed;\nif(it2->x+bombplane[it2->type].width<0)\n{\nplane.erase(it2);\n}\nelse\n{\nif(it2->reload==0)\n{\nit2->reload=10;\ncreatebomb(*it2);\n}\nelse\n{\nit2->reload-=1;\n}\n++it2;\n}\n}\nfor(it2=plane.begin();it2!=plane.end();)\n{\nfor(it1=misl.begin();it1!=misl.end();)\n{\nif(collision(it1->x,it1->y,5,7,it2->x,it2->y,bombplane[it2->type].width,bombplane[it2->type].height))\n{\nmisl.erase(it1);\nplane.erase(it2);\neraseyes=true;\nscore+=1;\n}\nelse\n{\n++it1;\n}\n}\nif(eraseyes==false)\n{\nit2++;\n}\nelse\n{\neraseyes=false;\n}\n}\nfor(it3=bomb.begin();it3!=bomb.end();)\n{\nit3->y+=5;\nif(it3->y>400)\n{\nit3=bomb.erase(it3);\n}\nelse\n{\n++it3;\n}\n}\nfor(it3=bomb.begin();it3!=bomb.end();)\n{\nif(collision(it3->x,it3->y,5,7,playerx,playery,58,49))\n{\nbomb.erase(it3);\nstrength-=1;\n}\nelse\n{\n++it3;\n}\n}\nif(KEY_DOWN(VK_LEFT)&&playerx>=10)\n{\nplayerx-=10;\n}\nif(KEY_DOWN(VK_RIGHT)&&playerx<=384)\n{\nplayerx+=10;\n}\nif(KEY_DOWN(VK_SPACE)&&firereload==0)\n{\ncreatemisl();\nfirereload=5;\n}\nif(firereload>=1)\n{\nfirereload-=1;\n}\nrender();\nsleep(33);\n}\n\ncharresult[50];\nsprintf(result,&34;,score);\nif(MessageBox(GetHWnd(),result,&34;,MB_YESNO)==IDYES)\n{\nplayerx=0;\nplayery=286;\nstrength=50;\nscore=0;\nfirereload=5;\nmisl.clear();\nplane.clear();\nbomb.clear();\ngotogamestart;\n}\n\nreturn0;\n}\n

大家赶紧去动手试试吧!

此外,我也给大家分享我收集的其他资源,从最零基础开始的教程到C语言C++项目案例,帮助大家在学习C语言的道路上披荆斩棘!

编程学习书籍分享:

编程学习视频分享:

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)最重要的是你可以在群里面交流提问编程问题哦!

对于C/C++感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!

关于小游戏网站源码分享大全和小游戏 网站的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平