问题描述
usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespace贪吃蛇{publicpartialclassForm1:Form{constintgz格子宽度=40;constintgz格子行数=15;constintgz格子列数=20;publicenumgz格子类型{空,蛇头,蛇身,蛇尾,果子}publicForm1(){InitializeComponent();}privatevoidForm1_Load(objectsender,EventArgse){}privatevoidForm1_Paint(objectsender,PaintEventArgse){Graphicsg=e.Graphics;绘制格线(gz格子宽度,gz格子行数,gz格子列数,g);ht绘图(g,i蛇头位置,j蛇头位置,gz格子类型.蛇头);//gz绘图(g,3,j蛇身位置,gz格子类型.蛇身);//gz绘图(g,3,j蛇尾位置,gz格子类型.蛇尾);ht绘图(g,7,7,gz格子类型.果子);}privatevoidht绘图(Graphicsg,inti,intj,gz格子类型gz类型){Brushbrush;switch(gz类型){casegz格子类型.果子:brush=newSolidBrush(Color.Red);g.FillRectangle(brush,gz格子宽度*j,gz格子宽度*i,40,40);break;casegz格子类型.蛇头:brush=newSolidBrush(Color.CadetBlue);g.FillEllipse(brush,gz格子宽度*j,gz格子宽度*i,40,40);break;casegz格子类型.蛇身:brush=newSolidBrush(Color.CadetBlue);g.FillRectangle(brush,gz格子宽度*j,gz格子宽度*i,40,40);break;casegz格子类型.蛇尾:brush=newSolidBrush(Color.CadetBlue);g.FillRectangle(brush,gz格子宽度*j,gz格子宽度*i,40,40);break;}}privatestaticvoid绘制格线(intgz格子宽度,intgz格子行数,intgz格子列数,Graphicsg){Penpen粗笔=newPen(Color.FromArgb(255,0,0,0),2);for(inti=0;i<gz格子行数+1;++i){g.DrawLine(pen粗笔,gz格子宽度,gz格子宽度*i+gz格子宽度,gz格子宽度*gz格子列数+gz格子宽度,gz格子宽度*i+gz格子宽度);}for(intj=0;j<gz格子列数+1;++j){g.DrawLine(pen粗笔,gz格子宽度*j+gz格子宽度,gz格子宽度,gz格子宽度*j+gz格子宽度,gz格子宽度*gz格子行数+gz格子宽度);}pen粗笔.Dispose();}publicenumFX方向{不动,上,下,左,右}inti蛇头位置=3,j蛇头位置=4,i蛇身位置,j蛇身位置=3,i蛇尾位置,j蛇尾位置=2;privatevoidtimer1_Tick(objectsender,EventArgse){j蛇头位置++;if(j蛇头位置==gz格子列数+1){j蛇头位置=1;}Refresh();}FX方向fx方向;privatevoidForm1_KeyPress(objectsender,KeyPressEventArgse){switch((Keys)e.KeyChar){caseKeys.Up:fx方向=FX方向.上;break;caseKeys.Down:fx方向=FX方向.下;break;caseKeys.Left:fx方向=FX方向.左;break;caseKeys.Right:fx方向=FX方向.右;break;}}}}求在timer1_Tick里实现接收键盘事件的语句
解决方案
解决方案二:
可以在键盘事件里将信息写到一个地方,timer1_Tick事件从那个地方读,读后清除这个信息。
解决方案三:
求几行代码--新手不懂啊