C/C++實現(xiàn)貪吃蛇逐步運動效果
本文實例為大家分享了C/C++實現(xiàn)貪吃蛇逐步運動效果的代碼,供大家參考,具體內(nèi)容如下
主要使用結(jié)構(gòu)數(shù)組和結(jié)構(gòu)指針,再用easyx圖形庫進(jìn)行的繪圖,以供討論和學(xué)習(xí)
#include <conio.h> //建立儲存蛇身的結(jié)構(gòu)體 struct snack { int x; int y; }; //決定方向 int fangxiang=3;//w=0,s=1,a=2,d=3 // 按鍵變量 char anjian=0; //調(diào)整坐標(biāo)關(guān)系 int tiaozheng(struct snack *a); // 移動函數(shù) int move(struct snack *a); //打印圖像 int print(struct snack *a); //速度 int v=10; int main() { initgraph(640, 480); struct snack na[10] ={0}; while(anjian!='q') { if(kbhit()) { anjian=getch(); switch(anjian) { //w=0,s=1,a=2,d=3 case 'w': if(fangxiang!=1) fangxiang=0; break; case 's': if(fangxiang!=0) fangxiang=1; break; case 'a': if(fangxiang!=3) fangxiang=2; break; case 'd': if(fangxiang!=2) fangxiang=3; break; default: break; } } //清屏函數(shù) cleardevice(); move(na); print(na); //避免程序運行過快 Sleep(60); tiaozheng(na); } closegraph(); return 0; } int tiaozheng(struct snack *a) { //從最后以個元素開始,依次進(jìn)行坐標(biāo)的傳遞 for(int i=9;i>0;i--) { a[i].x=a[i-1].x; a[i].y=a[i-1].y; } return 0; } int print(struct snack *a) { for(int i=0;i<10;i++) { //進(jìn)行繪圖 putpixel(a[i].x,a[i].y,RGB(100-10*i,255,100-10*i)); circle(a[i].x,a[i].y,5); } return 0; } int move(struct snack *a) { //w=0,s=1,a=2,d=3 switch(fangxiang) { //按鍵響應(yīng),并對超出界面的點進(jìn)行重置 case 0: a[0].y=a[0].y-v; if(a[0].y<0) a[0].y=480; break; case 1: a[0].y=a[0].y+v; if(a[0].y>480) a[0].y=0; break; case 2: a[0].x=a[0].x-v; if(a[0].x<0) a[0].x=640; break; case 3: a[0].x=a[0].x+v; if(a[0].x>640) a[0].x=0; break; default: break; } return 0; }
因時間有限,沒有考慮使用new來實現(xiàn)蛇身的長度的可控,僅使用初始值來實現(xiàn),其次是未使用全局變量,整體比較凌亂,希望大家發(fā)現(xiàn)其他問題,歡迎指出!?。?/p>
關(guān)于C++小游戲的更多精彩內(nèi)容請點擊專題: 《C++經(jīng)典小游戲》 學(xué)習(xí)了解
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++面試八股文之std::string實現(xiàn)方法
這篇文章主要介紹了C++面試八股文:std::string是如何實現(xiàn)的,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06java 中ArrayList與LinkedList性能比較
這篇文章主要介紹了java 中ArrayList與LinkedList性能比較的相關(guān)資料,需要的朋友可以參考下2017-03-03