本文實例為大家分享了C/C++實現貪吃蛇逐步運動效果的代碼,供大家參考,具體內容如下
主要使用結構數組和結構指針,再用easyx圖形庫進行的繪圖,以供討論和學習
#include <conio.h> //建立儲存蛇身的結構體struct snack{ int x; int y; };//決定方向int fangxiang=3;//w=0,s=1,a=2,d=3// 按鍵變量char anjian=0;//調整坐標關系int tiaozheng(struct snack *a);// 移動函數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; } } //清屏函數 cleardevice(); move(na); print(na); //避免程序運行過快 Sleep(60); tiaozheng(na); } closegraph(); return 0;} int tiaozheng(struct snack *a){ //從最后以個元素開始,依次進行坐標的傳遞 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++) { //進行繪圖 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) { //按鍵響應,并對超出界面的點進行重置 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來實現蛇身的長度的可控,僅使用初始值來實現,其次是未使用全局變量,整體比較凌亂,希望大家發現其他問題,歡迎指出?。?!
以上就是本文的全部內容,希望對大家的學習有所幫助。