cmd贪吃蛇简码(cmd贪吃蛇代码)

      最后更新:2023-06-03 15:09

      求贪吃蛇的程序代码(c语言)

      贪吃蛇游戏的代码 #define N 200#include #include #include #define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011bint i,key;int score=0;/*得分*/int gamespeed=50000;/*游戏速度自己调整*/struct Food{int x;/*食物的横坐标*/int y;/*食物的纵坐标*/int yes;/*判断是否要出现食物的变量*/}food;/*食物的结构体*/struct Snake{int x[N];int y[N];int node;/*蛇的节数*/int direction;/*蛇移动方向*/int life;/* 蛇的生命,0活着,1死亡*/}snake;void Init(void);/*图形驱动*/void Close(void);/*图形结束*/void DrawK(void);/*开始画面*/void GameOver(void);/*结束游戏*/void GamePlay(void);/*玩游戏具体过程*/void PrScore(void);/*输出成绩*//*主函数*/void main(void){Init();/*图形驱动*/DrawK();/*开始画面*/GamePlay();/*玩游戏具体过程*/Close();/*图形结束*/}/*图形驱动*/void Init(void){int gd=DETECT,gm;initgraph(&gd,&gm,"c:\tc");cleardevice();}/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/void DrawK(void){/*setbkcolor(LIGHTGREEN);*/setcolor(11);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/for(i=50;i<=600;i+=10)/*画围墙*/{rectangle(i,40,i+10,49); /*上边*/rectangle(i,451,i+10,460);/*下边*/}for(i=40;i<=450;i+=10){rectangle(50,i,59,i+10); /*左边*/rectangle(601,i,610,i+10);/*右边*/}}/*玩游戏具体过程*/void GamePlay(void){randomize();/*随机数发生器*/food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/snake.life=0;/*活着*/snake.direction=1;/*方向往右*/snake.x[0]=100;snake.y[0]=100;/*蛇头*/snake.x[1]=110;snake.y[1]=100;snake.node=2;/*节数*/PrScore();/*输出得分*/while(1)/*可以重复玩游戏,压ESC键结束*/{while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/{if(food.yes==1)/*需要出现新食物*/{food.x=rand()%400+60;food.y=rand()%350+60;while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/food.x++;while(food.y%10!=0)food.y++;food.yes=0;/*画面上有食物了*/}if(food.yes==0)/*画面上有食物了就要显示*/{setcolor(GREEN);rectangle(food.x,food.y,food.x+10,food.y-10);}for(i=snake.node-1;i>0;i--)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/{snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1];}/*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/switch(snake.direction){case 1:snake.x[0]+=10;break;case 2: snake.x[0]-=10;break;case 3: snake.y[0]-=10;break;case 4: snake.y[0]+=10;break;}for(i=3;i595||snake.y[0]<55||snake.y[0]>455)/*蛇是否撞到墙壁*/{GameOver();/*本次游戏结束*/snake.life=1; /*蛇死*/}if(snake.life==1)/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/break;if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以后*/{setcolor(0);/*把画面上的食物东西去掉*/rectangle(food.x,food.y,food.x+10,food.y-10);snake.x[snake.node]=-20;snake.y[snake.node]=-20;/*新的一节先放在看不见的位置,下次循环就取前一节的位置*/snake.node++;/*蛇的身体长一节*/food.yes=1;/*画面上需要出现新的食物*/score+=10;PrScore();/*输出新得分*/}setcolor(4);/*画出蛇*/for(i=0;i
      求贪吃蛇的程序代码(c语言)

      贪吃蛇代码

      TC下的代码 #include #include#include #include #include "graphics.h"#includetypedef struct{int x;int y;}node;struct{node info[40];int length;}snake;charlight[60][48];void main(){int search(int m,int n);void Light(int m,int n,int color);int settle(int key);char met=1;int i,j,direction,key1,key2=0,rm,rn;int driver=DETECT,mode=0;initgraph(&driver,&mode," ");setcolor(10);rectangle(0,0,580,450);snake.length=3;for(i=0;i<60;i++)for(j=0;j<48;j++)light[i][j]=0;snake.info[0].x=32;snake.info[1].x=32;snake.info[2].x=32;snake.info[0].y=24;snake.info[1].y=25;snake.info[2].y=26;for(i=0;i<3;i++)Light(snake.info[i].x,snake.info[i].y,8);do{if(met==1){do{rm=random(57);rn=random(44);met=0;}while(search(rm,rn));}Light(rm,rn,10);if(!bioskey(1)){key1=key2;}else{key1=bioskey(0);if((key2==0x4b00&&key1==0x4d00)||(key1==0x4b00&&key2==0x4d00)||(key1==0x4800&&key2==0x5000)||(key1==0x5000&&key2==0x4800)||(key1==0x5000&&key2==0))key1=key2;elsekey2=key1;}if(key1) met=settle(key1);if(met==2)return;for(i=0;i0;i--){snake.info[i].x=snake.info[i-1].x;snake.info[i].y=snake.info[i-1].y;}switch(key){case0x4800:snake.info[i].y--;break;case0x5000:snake.info[i].y++;break;case0x4b00:snake.info[i].x--;break;case0x4d00:snake.info[i].x++;break;}if(light[snake.info[i].x][snake.info[i].y]==1){snake.length++;snake.info[snake.length-1].x=rx;snake.info[snake.length-1].y=ry;Light(snake.info[i].x,snake.info[i].y,0);return(1);}if(snake.info[i].x>58||snake.info[i].y>44||snake.info[i].x<0||snake.info[i].y<0||light[snake.info[i].x][snake.info[i].y]==2){return(2);}Light(rx,ry,0);return(0);} 
      邮箱》
      呵呵,没得,上网上搜,应该不难找
      无法回答。
      贪吃蛇代码

      c语言贪吃蛇代码

      基本思路:蛇每吃一个食物蛇身子就增加一格,用UP, DOWN, LEFT, RIGHT控制蛇头的运动,而蛇身子跟着蛇头走,每后一格蛇身子下一步走到上一格蛇身子的位置,以此类推。#include #include #include #define BEG_X 2 #define BEG_Y 1 #define WID 20 #define HEI 20 HANDLE hout;typedef enum {UP, DOWN, LEFT, RIGHT} DIR;typedef struct Snake_body{COORD pos;//蛇身的位置struct Snake_body *next;//下一个蛇身struct Snake_body *prev;//前一个蛇身}SNAKE, *PSNAKE;PSNAKE head = NULL;//蛇头PSNAKE tail = NULL;//蛇尾//画游戏边框的函数void DrawBorder(){int i, j;COORD pos = {BEG_X, BEG_Y};for(i = 0; i < HEI; ++i){SetConsoleCursorPosition(hout, pos);for(j = 0; j < WID; ++j){if(i == 0)//第一行{if(j == 0)printf("┏");else if(j == WID - 1)printf("┓");elseprintf("━");}else if(i == HEI - 1)//最后一行{if(j == 0)printf("┗");else if(j == WID - 1)printf("┛");elseprintf("━");}else if(j == 0 || j == WID - 1)//第一列或最后一列printf("┃");elseprintf("  ");}++pos.Y;}}//添加蛇身的函数void AddBody(COORD pos){PSNAKE pnew = (PSNAKE)calloc(1, sizeof(SNAKE));pnew->pos = pos;if(!head){head = tail = pnew;}else{pnew->next = head;//新创建蛇身的next指向原先的蛇头head->prev = pnew;//原先的蛇头的prev指向新创建的蛇身head = pnew;//把新创建的蛇身作为新的蛇头}SetConsoleCursorPosition(hout, head->pos);printf("◎");}//蛇身移动的函数void MoveBody(DIR dir){PSNAKE ptmp;COORD pos = head->pos;switch(dir){case UP:if(head->pos.Y > BEG_Y + 1)--pos.Y;elsereturn;break;case DOWN:if(head->pos.Y < BEG_Y + HEI - 2)++pos.Y;elsereturn;break;case LEFT:if(head->pos.X > BEG_X + 2)pos.X -= 2;elsereturn;break;case RIGHT:if(head->pos.X < BEG_X + (WID - 2) * 2)pos.X += 2;elsereturn;break;}AddBody(pos);//添加了一个新的蛇头ptmp = tail;//保存当前的蛇尾tail = tail->prev;if(tail)tail->next = NULL;SetConsoleCursorPosition(hout, ptmp->pos);printf("  ");free(ptmp);}int main(){int ctrl;DIR dir = RIGHT;//初始蛇的方向是向右的COORD pos = {BEG_X + 2, BEG_Y + HEI / 2};system("color 0E");system("mode con cols=90 lines=30");hout = GetStdHandle(STD_OUTPUT_HANDLE);printf("    ------------贪吃蛇的移动------------");DrawBorder();//自定义几个蛇的身体AddBody(pos);pos.X += 2;AddBody(pos);pos.X += 2;AddBody(pos);pos.X += 2;AddBody(pos);pos.X += 2;AddBody(pos);pos.X += 2;AddBody(pos);pos.X += 2;AddBody(pos);//控制蛇的移动while(ctrl = getch()){switch(ctrl){case 'w':if(dir == DOWN)continue;dir = UP;break;case 's':if(dir == UP)continue;dir = DOWN;break;case 'a':if(dir == RIGHT)continue;dir = LEFT;break;case 'd':if(dir == LEFT)continue;dir = RIGHT;break;case 'q':return 0;}MoveBody(dir);}return 0;}扩展资料:实现逻辑1,可以设置光标,就能实现制定位置打印制定符号。2,涉及一个结构体,包含两个元素坐标元素和一个结构体指针。3,结构体串联形成链表,遍历获取成员坐标,打印符号得到蛇身。4,不断的加头,去尾,重新遍历坐标,再打印形成蛇的移动。5,食物产生的位置判定,不能越界,也不能与蛇身体重合。6,蛇的转向判定,一条规则,不允许倒退。7,转向的实现,跟行进方向决定新的关节坐标(当前头的上下左右)8,死亡检测,是否头节点坐标是否与墙壁重合,是否与身体其他关节重合。9,加速减速,设置刷新休眠时间实现。参考资料来源:百度百科-C语言
      慢慢看吧然后修改程序。 #define N 200#include #include #include #define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011bint i,key;int score=0;/*得分*/int gamespeed=50000;/*游戏速度自己调整*/struct Food{int x;/*食物的横坐标*/int y;/*食物的纵坐标*/int yes;/*判断是否要出现食物的变量*/}food;/*食物的结构体*/struct Snake{int x[N];int y[N];int node;/*蛇的节数*/int direction;/*蛇移动方向*/int life;/* 蛇的生命,0活着,1死亡*/}snake;void Init(void);/*图形驱动*/void Close(void);/*图形结束*/void DrawK(void);/*开始画面*/void GameOver(void);/*结束游戏*/void GamePlay(void);/*玩游戏具体过程*/void PrScore(void);/*输出成绩*//*主函数*/void main(void){Init();/*图形驱动*/DrawK();/*开始画面*/GamePlay();/*玩游戏具体过程*/Close();/*图形结束*/}/*图形驱动*/void Init(void){int gd=DETECT,gm;initgraph(&gd,&gm,"c:\tc");cleardevice();}/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/void DrawK(void){/*setbkcolor(LIGHTGREEN);*/setcolor(11);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/for(i=50;i<=600;i+=10)/*画围墙*/{rectangle(i,40,i+10,49); /*上边*/rectangle(i,451,i+10,460);/*下边*/}for(i=40;i<=450;i+=10){rectangle(50,i,59,i+10); /*左边*/rectangle(601,i,610,i+10);/*右边*/}}/*玩游戏具体过程*/void GamePlay(void){randomize();/*随机数发生器*/food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/snake.life=0;/*活着*/snake.direction=1;/*方向往右*/snake.x[0]=100;snake.y[0]=100;/*蛇头*/snake.x[1]=110;snake.y[1]=100;snake.node=2;/*节数*/PrScore();/*输出得分*/while(1)/*可以重复玩游戏,压ESC键结束*/{while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/{if(food.yes==1)/*需要出现新食物*/{food.x=rand()()%400+60;food.y=rand()()%350+60;while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/food.x++;while(food.y%10!=0)food.y++;food.yes=0;/*画面上有食物了*/}if(food.yes==0)/*画面上有食物了就要显示*/{setcolor(GREEN);rectangle(food.x,food.y,food.x+10,food.y-10);}for(i=snake.node-1;i>0;i--)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/{snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1];}/*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/switch(snake.direction){case 1:snake.x[0]+=10;break;case 2: snake.x[0]-=10;break;case 3: snake.y[0]-=10;break;case 4: snake.y[0]+=10;break;}for(i=3;i595||snake.y[0]<55||snake.y[0]>455)/*蛇是否撞到墙壁*/{GameOver();/*本次游戏结束*/snake.life=1; /*蛇死*/}if(snake.life==1)/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/break;if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以后*/{setcolor(0);/*把画面上的食物东西去掉*/rectangle(food.x,food.y,food.x+10,food.y-10);snake.x[snake.node]=-20;snake.y[snake.node]=-20;/*新的一节先放在看不见的位置,下次循环就取前一节的位置*/snake.node++;/*蛇的身体长一节*/food.yes=1;/*画面上需要出现新的食物*/score+=10;PrScore();/*输出新得分*/}setcolor(4);/*画出蛇*/for(i=0;i
      c语言贪吃蛇代码

      哪位能告诉我贪吃蛇游戏的全部代码?

      //package main; import java.awt.Color;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.BufferedReader;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStreamReader;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JPanel;public class TanChiShe implements KeyListener,ActionListener{/*** @param args*/int max = 300;//蛇长最大值final int JianJu = 15;//设定蛇的运动网格间距(窗口最大32*28格)byte fangXiang = 4;//控制蛇的运动方向,初始为右int time = 500; //蛇的运动间隔时间int jianTime = 2;//吃一个减少的时间int x,y;//蛇的运动坐标,按网格来算int x2,y2;//暂存蛇头的坐标int jiFenQi = 0;//积分器boolean isRuned = false;//没运行才可设级别boolean out = false;//没开始运行?boolean run = false;//暂停运行String JiBie = "中级";JFrame f = new JFrame("贪吃蛇 V1.0");JPanel show = new JPanel();JLabel Message = new JLabel("级别:中级蛇长:5 时间500ms分数:00");// JButton play = new JButton("开始");JLabel sheTou;JLabel shiWu;JLabel sheWei[] = new JLabel[max];static int diJi = 4; //第几个下标的蛇尾要被加上ImageIcon shang = new ImageIcon("tuPian\isSheTouUp.png");//产生四个上下左右的蛇头图案ImageIcon xia = new ImageIcon("tuPian\isSheTouDown.png");ImageIcon zhuo = new ImageIcon("tuPian\isSheTouLeft.png");ImageIcon you = new ImageIcon("tuPian\isSheTouRight.png");JMenuBar JMB = new JMenuBar();JMenu file = new JMenu("开始游戏");JMenuItem play = new JMenuItem(" 开始游戏");JMenuItem pause = new JMenuItem(" 暂停游戏");JMenu hard = new JMenu("游戏难度");JMenuItem gao = new JMenuItem("高级");JMenuItem zhong = new JMenuItem("中级");JMenuItem di = new JMenuItem("低级");JMenu about = new JMenu("关于 ");JMenuItem GF = new JMenuItem("※高分榜");JMenuItem ZZ = new JMenuItem("关于作者");JMenuItem YX = new JMenuItem("关于游戏");JMenuItem QK = new JMenuItem("清空记录");static TanChiShe tcs = new TanChiShe();public static void main(String[] args) {// TanChiShe tcs = new TanChiShe();tcs.f();}public void f(){f.setBounds(250,100,515,530);f.setLayout(null);f.setAlwaysOnTop(true);//窗口始终保持最前面f.setBackground(new Color(0,0,0));f.setDefaultCloseOperation(0);f.setResizable(false);f.setVisible(true);//f.getContentPane().setBackground(Color.BLACK);f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);//退出程序}});f.setJMenuBar(JMB);JMB.add(file);file.add(play);file.add(pause);JMB.add(hard);hard.add(gao);hard.add(zhong);hard.add(di);JMB.add(about);about.add(GF);GF.setForeground(Color.blue);about.add(ZZ);about.add(YX);about.add(QK);QK.setForeground(Color.red);f.add(show);show.setBounds(0,f.getHeight()-92,f.getWidth(),35);// show.setBackground(Color.green);//f.add(play);// play.setBounds(240,240,80,25);play.addActionListener(this);pause.addActionListener(this);gao.addActionListener(this);zhong.addActionListener(this);di.addActionListener(this);GF.addActionListener(this);ZZ.addActionListener(this);YX.addActionListener(this);QK.addActionListener(this);show.add(Message);Message.setForeground(Color.blue);f.addKeyListener(this);// show.addKeyListener(this);play.addKeyListener(this);sheChuShi();}public void sheChuShi(){//蛇初始化sheTou = new JLabel(you);//用向右的图来初始蛇头f.add(sheTou);sheTou.setBounds(JianJu*0,JianJu*0,JianJu,JianJu);// System.out.println("ishere");shiWu = new JLabel("■");f.add(shiWu);shiWu.setBounds(10*JianJu,10*JianJu,JianJu,JianJu);for(int i=0;i<=diJi;i++) {sheWei[i] = new JLabel("■");f.add(sheWei[i]);sheWei[i].setBounds(-1*JianJu,0*JianJu,JianJu,JianJu);}while(true){if(out == true){yunXing();break;}try{Thread.sleep(200);}catch(Exception ex){ex.printStackTrace();}}}public void sheJiaChang(){//蛇的长度增加if(diJi < max){sheWei[++diJi] = new JLabel(new ImageIcon("tuPian\isSheWei.jpg"));f.add(sheWei[diJi]);sheWei[diJi].setBounds(sheWei[diJi-1].getX(),sheWei[diJi-1].getY(),JianJu,JianJu);// System.out.println("diJi "+diJi);}}public void pengZhuanJianCe(){//检测蛇的碰撞情况if(sheTou.getX()<0 || sheTou.getY()<0 ||sheTou.getX()>f.getWidth()-15 || sheTou.getY()>f.getHeight()-105 ){gameOver();// System.out.println("GameOVER");}if(sheTou.getX() == shiWu.getX() && sheTou.getY() == shiWu.getY()){out: while(true){shiWu.setLocation((int)(Math.random()*32)*JianJu,(int)(Math.random()*28)*JianJu);for(int i=0;i<=diJi;i++){if(shiWu.getX()!= sheWei[i].getX() && shiWu.getY()!=sheWei[i].getY()&& sheTou.getX()!=shiWu.getX() && sheTou.getY()!= shiWu.getY()){//如果食物不在蛇身上则退出循环,产生食物成功break out;}}}sheJiaChang();// System.out.println("吃了一个");if(time>100 ){time -= jianTime;}else{}Message.setText("级别:"+JiBie+" 蛇长:"+(diJi+2)+"时间:"+time+"ms分数:"+(jiFenQi+=10)+"");}for(int i=0;i<=diJi;i++){if(sheTou.getX() == sheWei[i].getX() && sheTou.getY() == sheWei[i].getY()){gameOver();//System.out.println("吃到尾巴了");}}}public void yunXing(){while(true){while(run){if(fangXiang == 1){//上y-=1;}if(fangXiang == 2){//下y+=1;}if(fangXiang == 3){//左x-=1;}if(fangXiang == 4){//右x+=1;}x2 = sheTou.getX();y2 = sheTou.getY();sheTou.setLocation(x*JianJu,y*JianJu); //设置蛇头的坐标 网格数*间隔for(int i=diJi;i>=0;i--){if(i==0){sheWei[i].setLocation(x2,y2);// System.out.println(i+" "+sheTou.getX()+" "+sheTou.getY());}else{sheWei[i].setLocation(sheWei[i-1].getX(),sheWei[i-1].getY());//System.out.println(i+" "+sheWei[i].getX()+" "+sheWei[i].getY());}}pengZhuanJianCe();try{Thread.sleep(time);}catch(Exception e){e.printStackTrace();}}Message.setText("级别:"+JiBie+" 蛇长:"+(diJi+2)+"时间:"+time+"ms分数:"+(jiFenQi+=10)+"");try{Thread.sleep(200);}catch(Exception e){e.printStackTrace();}}}public void gameOver(){//游戏结束时处理int in =JOptionPane.showConfirmDialog(f,"游戏已经结束!n是否要保存分数","提示",JOptionPane.YES_NO_OPTION);if(in == JOptionPane.YES_OPTION){//System.out.println("YES");String s = JOptionPane.showInputDialog(f,"输入你的名字:");try{FileInputStream fis = new FileInputStream("GaoFen.ini");//先把以前的数据读出来加到写的数据前InputStreamReader isr = new InputStreamReader(fis);BufferedReader br = new BufferedReader(isr);String s2,setOut = "";while((s2=br.readLine())!= null){setOut =setOut+s2+"n";}FileOutputStream fos = new FileOutputStream("GaoFen.ini");//输出到文件流s = setOut+s+":"+jiFenQi+"n";fos.write(s.getBytes());}catch(Exception e){}}System.exit(0);}public void keyTyped(KeyEvent arg0) {// TODO 自动生成方法存根}public void keyPressed(KeyEvent arg0) {// System.out.println(arg0.getSource());if(arg0.getKeyCode() == KeyEvent.VK_UP){//按上下时方向的值相应改变if(fangXiang != 2){fangXiang = 1;// sheTou.setIcon(shang);//设置蛇的方向}//System.out.println("UP");}if(arg0.getKeyCode() == KeyEvent.VK_DOWN){if(fangXiang != 1){fangXiang = 2;// sheTou.setIcon(xia);}//System.out.println("DOWN");}if(arg0.getKeyCode() == KeyEvent.VK_LEFT){//按左右时方向的值相应改变if(fangXiang != 4){fangXiang = 3;//sheTou.setIcon(zhuo);}// System.out.println("LEFT");}if(arg0.getKeyCode() == KeyEvent.VK_RIGHT){if(fangXiang != 3){fangXiang = 4;//sheTou.setIcon(you);}//System.out.println("RIGHT");}}public void keyReleased(KeyEvent arg0) {// TODO 自动生成方法存根}public void actionPerformed(ActionEvent arg0) {// TODO 自动生成方法存根JMenuItem JI = (JMenuItem)arg0.getSource();if(JI == play){out = true;run = true;isRuned = true;gao.setEnabled(false);zhong.setEnabled(false);di.setEnabled(false);}if(JI == pause){run = false;}if(isRuned == false){//如果游戏还没运行,才可以设置级别if(JI == gao){time = 200;jianTime = 1;JiBie = "高级";Message.setText("级别:"+JiBie+" 蛇长:"+(diJi+2)+"时间:"+time+"ms分数:"+jiFenQi);}if(JI == zhong){time = 400;jianTime = 2;JiBie = "中级";Message.setText("级别:"+JiBie+" 蛇长:"+(diJi+2)+"时间:"+time+"ms分数:"+jiFenQi);}if(JI == di){time = 500;jianTime = 3;JiBie = "低级";Message.setText("级别:"+JiBie+" 蛇长:"+(diJi+2)+"时间:"+time+"ms分数:"+jiFenQi);}}if(JI == GF){try{FileInputStream fis = new FileInputStream("GaoFen.ini");InputStreamReader isr = new InputStreamReader(fis);BufferedReader br = new BufferedReader(isr);String s,setOut = "";while((s=br.readLine())!= null){setOut =setOut+s+"n";}if(setOut.equals("")){JOptionPane.showMessageDialog(f,"暂无保存记录!","高分榜",JOptionPane.INFORMATION_MESSAGE);}else{JOptionPane.showMessageDialog(f,setOut);}}catch(Exception e){e.printStackTrace();}}if(JI == ZZ){//关于作者JOptionPane.showMessageDialog(f,"软件作者:申志飞n地址:四川省绵阳市nQQ:898513806nE-mail:shenzhifeiok@126.com","关于作者",JOptionPane.INFORMATION_MESSAGE);}if(JI == YX){//关于游戏JOptionPane.showMessageDialog(f,"贪吃蛇游戏n游戏版本 V1.0","关于游戏",JOptionPane.INFORMATION_MESSAGE);}if(JI == QK){try{int select = JOptionPane.showConfirmDialog(f,"确实要清空记录吗?","清空记录",JOptionPane.YES_OPTION);if(select == JOptionPane.YES_OPTION){String setOut = "";FileOutputStream fos = new FileOutputStream("GaoFen.ini");//输出到文件流fos.write(setOut.getBytes());}}catch(Exception ex){}}}} //是我自己写的,本来里面有图片的,但无法上传,所以把图片去掉了,里面的ImageIcon等语句可以去掉。能正常运行。
      J2ME的 package snake;import java.util.*;import javax.microedition.lcdui.*;public class SnakeCanvas extends Canvasimplements Runnable{/**存储贪吃蛇节点坐标,其中第二维下标为0的代表x坐标,第二维下标是1的代表y坐标*/int[][] snake = new int[200][2];/**已经使用的节点数量*/int snakeNum;/**贪吃蛇运动方向,0代表向上,1代表向下,2代表向左,3代表向右*/int direction;/*移动方向*//**向上*/private final int DIRECTION_UP = 0;/**向下*/private final int DIRECTION_DOWN = 1;/**向左*/private final int DIRECTION_LEFT = 2;/**向右*/private final int DIRECTION_RIGHT = 3;/**游戏区域宽度*/int width;/**游戏区域高度*/int height;/**蛇身单元宽度*/private final byte SNAKEWIDTH = 4;/**是否处于暂停状态,true代表暂停*/boolean isPaused = false;/**是否处于运行状态,true代表运行*/boolean isRun = true;/**时间间隔*/private final int SLEEP_TIME = 300;/**食物的X坐标*/int foodX;/**食物的Y坐标*/int foodY;/**食物的闪烁控制*/boolean b = true;/**Random对象*/Random random = new Random();public SnakeCanvas() {//初始化init();width = this.getWidth();height = this.getHeight();//启动线程new Thread(this).start();}/*** 初始化开始数据*/private void init(){//初始化节点数量snakeNum = 7;//初始化节点数据for(int i = 0;i < snakeNum;i++){snake[i][0] = 100 - SNAKEWIDTH * i;snake[i][1] = 40;}//初始化移动方向direction = DIRECTION_RIGHT;//初始化食物坐标foodX = 100;foodY = 100;}protected void paint(Graphics g) {//清屏g.setColor(0xffffff);g.fillRect(0,0,width,height);g.setColor(0);//绘制蛇身for(int i = 0;i < snakeNum;i++){g.fillRect(snake[i][0],snake[i][1],SNAKEWIDTH,SNAKEWIDTH);}//绘制食物if(b){g.fillRect(foodX,foodY,SNAKEWIDTH,SNAKEWIDTH);}}private void move(int direction){//蛇身移动for(int i = snakeNum - 1;i > 0;i--){snake[i][0] = snake[i - 1][0];snake[i][1] = snake[i - 1][1];}//第一个单元格移动switch(direction){case DIRECTION_UP:snake[0][1] = snake[0][1] - SNAKEWIDTH;break;case DIRECTION_DOWN:snake[0][1] = snake[0][1] + SNAKEWIDTH;break;case DIRECTION_LEFT:snake[0][0] = snake[0][0] - SNAKEWIDTH;break;case DIRECTION_RIGHT:snake[0][0] = snake[0][0] + SNAKEWIDTH;break;}}/*** 吃掉食物,自身增长*/private void eatFood(){//判别蛇头是否和食物重叠if(snake[0][0] == foodX && snake[0][1] == foodY){snakeNum++;generateFood();}}/*** 产生食物* 说明:食物的坐标必须位于屏幕内,且不能和蛇身重合*/private void generateFood(){while(true){foodX = Math.abs(random.nextInt() % (width - SNAKEWIDTH + 1))/ SNAKEWIDTH * SNAKEWIDTH;foodY = Math.abs(random.nextInt() % (height - SNAKEWIDTH + 1))/ SNAKEWIDTH * SNAKEWIDTH;boolean b = true;for(int i = 0;i < snakeNum;i++){if(foodX == snake[i][0] && snake[i][1] == foodY){b = false;break;}}if(b){break;}}}/*** 判断游戏是否结束* 结束条件:*1、蛇头超出边界*2、蛇头碰到自身*/private boolean isGameOver(){//边界判别if(snake[0][0] < 0 || snake[0][0] > (width - SNAKEWIDTH) ||snake[0][1] < 0 || snake[0][1] > (height - SNAKEWIDTH)){return true;}//碰到自身for(int i = 4;i < snakeNum;i++){if(snake[0][0] == snake[i][0]&& snake[0][1] == snake[i][1]){return true;}}return false;}/*** 事件处理*/public void keyPressed(int keyCode){int action = this.getGameAction(keyCode);//改变方向switch(action){case UP:if(direction != DIRECTION_DOWN){direction = DIRECTION_UP;}break;case DOWN:if(direction != DIRECTION_UP){direction = DIRECTION_DOWN;}break;case LEFT:if(direction != DIRECTION_RIGHT){direction = DIRECTION_LEFT;}break;case RIGHT:if(direction != DIRECTION_LEFT){direction = DIRECTION_RIGHT;}break;case FIRE://暂停和继续isPaused = !isPaused;break;}}/*** 线程方法* 使用精确延时*/public void run(){try{while (isRun) {//开始时间long start = System.currentTimeMillis();if(!isPaused){//吃食物eatFood();//移动move(direction);//结束游戏if(isGameOver()){break;}//控制闪烁b = !b;}//重新绘制repaint();long end = System.currentTimeMillis();//延时if(end - start < SLEEP_TIME){Thread.sleep(SLEEP_TIME - (end - start));}}}catch(Exception e){}}}package snake;import javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class SnakeMIDlet extends MIDlet {SnakeCanvas displayable = new SnakeCanvas();public SnakeMIDlet() {Display.getDisplay(this).setCurrent(displayable);}public void startApp() {}public void pauseApp() {}public void destroyApp(boolean unconditional) {} }
      download.csdn.net上自己搜索并下载
      哪位能告诉我贪吃蛇游戏的全部代码?

      求c语言的贪吃蛇的代码 能运行的

      // ConsoleApplication1.cpp: 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include #include #define frame_height 20 //define map size#define frame_width 40#define UP 'w' //define operate key#define DOWN 's'#define LEFT 'a'#define RIGHT 'd'int i, j, k;char ch = UP; //initial directionint grow = 0; //flag: if snake growstruct Food { int x; int y;}food;struct Snake { int x[50]; int y[50]; int len; int speed;}snake; //snake[0] is headvoid init_map(void);void update_food(void);void move_snake(void);int is_alive(void);void get_speed(void);void gotoxy(int x, int y);int main(){ init_map();  //初始化地图 while (1) { update_food(); //是否产生食物 get_speed();  //获取速度 move_snake();  //移动蛇身 Sleep(snake.speed); //移动速度 if (!(is_alive())) //蛇的死活(撞墙或自食) break; } printf("Game Over!"); _getch(); return 0;}//initializevoid init_map(void){ //initial food srand(time(NULL)); food.x = rand() % (frame_height - 2) + 1; food.y = rand() % (frame_width - 2) + 1; gotoxy(food.x, food.y); printf("!"); //initial snake snake.x[0] = frame_height / 2; snake.y[0] = frame_width / 2; gotoxy(snake.x[0], snake.y[0]); printf("@"); snake.len = 3; snake.speed = 200; for (k = 1; k0; k--) { snake.x[k] = snake.x[k - 1]; snake.y[k] = snake.y[k - 1]; } switch (ch) { case UP:  snake.x[0]--; break; case DOWN:  snake.x[0]++; break; case LEFT:  snake.y[0]--; break; case RIGHT:  snake.y[0]++; break; default:  break; } gotoxy(snake.x[0], snake.y[0]); printf("@"); grow = 0; gotoxy(frame_height, 0);}//is aliveint is_alive(void){ if (snake.x[0] == 0 || snake.x[0] == frame_height - 1 || snake.y[0] == frame_width - 1 || snake.y[0] == 0) return 0; for (k = 1; k
      求c语言的贪吃蛇的代码 能运行的

      本文由 在线网速测试 整理编辑,转载请注明出处。

          热门文章

          文章分类