C # Snake Game-interface layer (5)

Source: Internet
Author: User

The interface layer can call the methods defined by the logic layer, which is relatively simple. Simply post code!

The interface is currently designed to look like the above. It is not very beautiful. It is set according to your hobbies!

Mysnkeui. CS

Public partial class mysnkeui: Form <br/>{< br/> // game logic class <br/> gamelogic; <br/> // Game Information Access class <br/> savegameinfo saveinfo; <br/> int windoww = 250; <br/> int 20.wh = 350; <br/> bool isstop = false; <br/> // maximum point <br/> private int largescore; <br/> // stores role and Point Information <br/> private string [] scores; <br/> private timer gametimer; </P> <p> Public mysnkeui () <br/>{< br/> initializecomponent (); <br/> Pangameinfo. visible = false; <br/> saveinfo = new savegameinfo (); <br/> loadgameinfo (); <br/> gametimer = new timer (); <br/> gametimer. interval = (INT) snail kestate. normal; <br/> gametimer. tick + = new eventhandler (gametimer_tick); <br/>}</P> <p> private void gametimer_tick (Object sender, eventargs E) <br/> {<br/> gamelogic. snail move (); <br/> lbscore. TEXT = gamelogic. getfenshu (); <br/> If (gamelogic. GA Meover) <br/>{< br/> gametimer. Enabled = false; <br/> lbgover. Text = "game over! "; <Br/> lbgover. location = new point (panel1.width/2-35, panel1.height/2-40); <br/> lbgover. visible = true; <br/> cbboxbackw. enabled = true; <br/> cbboxbackh. enabled = true; <br/> cbbocspeed. enabled = true; <br/> btnok. enabled = true; <br/> btnstart. enabled = true; <br/> If (convert. toint16 (lbscore. text)> largescore) <br/>{< br/> lbgover. visible = false; <br/> pangameinfo. visible = true; <Br/> txtnewscore. TEXT = lbscore. text; <br/> btnsave. enabled = true; <br/> loadgameheros (); <br/>}</P> <p> // start the game <br/> Public void gamestart () <br/>{< br/> lbgover. TEXT = ""; <br/> lbgover. location = new point (180, 1); <br/> cbboxbackw. enabled = false; <br/> cbboxbackh. enabled = false; <br/> cbbocspeed. enabled = false; <br/> btnok. enabled = false; <br/> If (gamelogic! = NULL) <br/> gamelogic. crearall (); <br/> gamelogic = new gamelogic (Panel1, windoww, windowh); <br/> gamelogic. initgame (); <br/> gametimer. start (); <br/>}</P> <p> // <summary> <br/> // menu options <br/> /// </Summary> <br /> private void menubegin_click (Object sender, eventargs e) <br/>{< br/> gamestart (); <br/>}</P> <p> private void exits etoolstripmenuitem_click (Object sender, eventargs E) <br/>{< br/> T His. dispose (); <br/> application. exit (); <br/>}</P> <p> private void ranking ptoolstripmenuitem_click (Object sender, eventargs e) <br/>{ <br/> pangameinfo. visible = true; <br/> btnsave. enabled = false; <br/> loadgameheros (); <br/> lbgover. visible = false; <br/>}</P> <p> private void highest score htoolstripmenuitem_click (Object sender, eventargs e) <br/>{< br/> MessageBox. show ("highest score:" + "" + largescore. tostring () + "/N" + "Player:" + "" + lbplayer. text); <br/>}</P> <p> private void about the game gtoolstripmenuitem_click (Object sender, eventargs E) <br/>{< br/> aboutgame form = new aboutgame (); <br/> form. showdialog (); <br/>}</P> <p> // direction key <br/> private void mysnkeui_keydown (Object sender, keyeventargs E) <br/>{< br/> switch (E. keycode) <br/>{< br/> case keys. up: <br/> If (gamelogic. snail kedirection! = Snkedirection. down) <br/> gamelogic. snail kedirection = snail kedirection. up; <br/> break; <br/> case keys. down: <br/> If (gamelogic. snail kedirection! = Snkedirection. up) <br/> gamelogic. snail kedirection = snail kedirection. down; <br/> break; <br/> case keys. left: <br/> If (gamelogic. snail kedirection! = Snkedirection. right) <br/> gamelogic. snail kedirection = snail kedirection. left; <br/> break; <br/> case keys. right: <br/> If (gamelogic. snail kedirection! = Snkedirection. left) <br/> gamelogic. snail kedirection = snail kedirection. right; <br/> break; <br/> default: <br/> break; <br/>}</P> <p> // configure the speed <br/> private void cbbocspeed_selectedindexchanged (Object sender, eventargs E) <br/>{< br/> switch (cbbocspeed. selecteditem. tostring () <br/>{< br/> case "very slow": <br/> gametimer. interval = 150; <br/> break; <br/> case "slow": <br/> gametimer. interval = 100; <br/> break; <br/> case "fast": <br/> gametimer. interval = 70; <br/> break; <br/> case "soon": <br/> gametimer. interval = 50; <br/> break; <br/> case "super fast": <br/> gametimer. interval = 20; <br/> break; <br/> default: <br/> break; <br/>}</P> <p> // configure the game scenario <br/> private void btnok_click (Object sender, eventargs E) <br/>{< br/> If (cbboxbackw. selectedindex =-1) return; <br/> If (cbboxbackh. sel Ectedindex =-1) return; <br/> windoww = convert. toint16 (cbboxbackw. selecteditem. tostring (); <br/> 20.wh = convert. toint16 (cbboxbackh. selecteditem. tostring (); <br/> // slightly adjusted, barely <br/> panel1.width = (windoww = 250 | windoww = 300 )? Windoww + 7: (windoww = 350 )? Windoww + 15: windoww + 22; <br/> This. Height = (0000wh = 300 )? Wh + 51: (Wh = 350 )? When Wh + 57: When Wh + 62; <br/> This. width = panel1.width + 118; <br/>}</P> <p> // save information <br/> private void btnsave_click (Object sender, eventargs E) <br/>{< br/> saveinfo = new savegameinfo (); <br/> If (txtplayer. TEXT = "") <br/> txtplayer. TEXT = "concealed name"; <br/> char [] CH = (txtplayer. text ). tochararray (); <br/> string STR = ""; <br/> // filter '-' <br/> foreach (char C in ch) <br/> {<br/> If (C = '-') <Br/> continue; <br/> STR + = C; <br/>}< br/> If (saveinfo. saveinfo (txtnewscore. text, STR) <br/> MessageBox. show ("saved successfully! "); <Br/> btnsave. enabled = false; <br/> loadgameheros (); <br/>}</P> <p> // disable information storage <br/> private void btnclose_click (Object sender, eventargs e) <br/>{< br/> pangameinfo. visible = false; <br/> lbgover. visible = true; <br/> loadgameinfo (); <br/> btnok. focus (); <br/>}</P> <p> // load Game Information <br/> Public void loadgameinfo () <br/>{< br/> scores = saveinfo. readinfo (); <br/> If (scores! = NULL) <br/>{< br/> If (scores. length> 1) <br/>{< br/> string [] scoreandplayer = new string [] {}; <br/> foreach (string s in scores) <br/>{< br/> If (S = "") <br/> continue; <br/> scoreandplayer = S. split (';'); <br/>}< br/> lbtscore. TEXT = scoreandplayer [0]; <br/> lbplayer. TEXT = scoreandplayer [1]; <br/> largescore = convert. toint16 (lbtscore. text); <br/>}< br/> else <br/>{< br/> lbtscore. TEXT = "loading... "; <Br/> lbplayer. Text =" loading... "; <Br/>}< br/> else <br/>{< br/> lbtscore. Text =" loading... "; <Br/> lbplayer. Text =" loading... "; <Br/>}</P> <p> // load the hero list <br/> Public void loadgameheros () <br/>{< br/> scores = saveinfo. readinfo (); <br/> If (scores! = NULL) <br/>{< br/> If (scores. length> 1) <br/>{< br/> If (listheros. items. count> 0) <br/>{< br/> listheros. items. clear (); <br/>}< br/> for (INT I = scores. length-2; I> = 0; I --) <br/>{< br/> listheros. items. add ("no. "+ (scores. length-I-1) + "" + scores [I]); <br/>}< br/> else <br/> {<br/> listheros. items. add ("Hero, create a miracle! "); <Br/>}< br/> else <br/>{< br/> listheros. items. add ("Hero, create a miracle! "); <Br/>}</P> <p> // <summary> <br/> // when you press the direction key, the focus is shifted to enabel = true. control, as a result, the direction cannot be changed. <br/> // you can simply replace the button control with an image. Below are some styles of the image button. <br/> // </Summary> <br/> private void btnstart_click (Object sender, eventargs E) <br/>{< br/> If (isstop = true) <br/>{< br/> gametimer. enabled = true; <br/> btnstop. enabled = true; <br/> btnstart. enabled = false; <br/>}< br/> else <br/> gamestart (); <br/> btnstart. enabled = false; <br/> isstop = false; <br/>}</P> <p> private void btnstart_mousemove (Object sender, mouseeventargs E) <br/>{< br/> graphics g; <br/> G = btnstart. creategraphics (); <br/> pen P = new pen (color. orange, 3); <br/> G. drawrectangle (p, 0, 0, btnstart. width, btnstart. height); <br/>}</P> <p> private void btnstart_mouseleave (Object sender, eventargs e) <br/>{< br/> btnstart. invalidate (); <br/>}</P> <p> private void btnstop_click (Object sender, eventargs e) <br/>{< br/> gametimer. enabled = false; <br/> isstop = true; <br/> btnstop. enabled = false; <br/> btnstart. enabled = true; <br/>}</P> <p> private void btnstop_mousemove (Object sender, mouseeventargs e) <br/>{< br/> graphics g; <br/> G = btnstop. creategraphics (); <br/> pen P = new pen (color. orange, 2); <br/> G. drawrectangle (P, 1, 1, btnstart. width-2, btnstart. height-1); <br/>}</P> <p> private void btnstop_mouseleave (Object sender, eventargs e) <br/>{< br/> btnstop. invalidate (); <br/>}< br/>}

Running interface:

So far, a snake game has been completed. Currently, there is only one level, and the interface is more common. These will be improved in the future.

Compiling environment: vs2008, C #

Over! ^-^

Source code download: http://download.csdn.net/source/2815215

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.