用“vc”或“c++”编写的一个小游戏代码,源代码是什么

用“vc”或“c++”编写的一个小游戏代码,源代码是什么,第1张

#include\x0d\#include\x0d\#include\x0d\#define LEFT 0x4b00\x0d\#define RIGHT 0x4d00\x0d\#define DOWN 0x5000\x0d\#define UP 0x4800\x0d\#define ESC 0x011b\x0d\int i,key;\x0d\int score=0;\x0d\int gamespeed=32000;\x0d\struct Food /食物的结构体/\x0d\{\x0d\int x; /食物的横坐标/\x0d\int y; /食物的纵坐标/\x0d\int yes; /食物是否出现的变量/\x0d\}food;\x0d\struct Snack /蛇的结构体/\x0d\{\x0d\int x[N];\x0d\int y[N];\x0d\int node; /蛇的节数/\x0d\int direction; /蛇的方向/\x0d\int life; /蛇的生命,0活着,1死亡/\x0d\}snake;\x0d\void Init(void); /图形驱动/\x0d\void Close(void); /关闭游戏函数/\x0d\void DrawK(void); /画图函数/\x0d\void GameOver(void);/输出失败函数/\x0d\void GamePlay(); /游戏控制函数 主要程序/\x0d\void PrScore(void); /分数输出函数/\x0d\\x0d\DELAY(char ch)/调节游戏速度/\x0d\{\x0d\if(ch=='3')\x0d\{\x0d\delay(gamespeed); /delay是延迟函数/\x0d\delay(gamespeed);\x0d\}\x0d\else if(ch=='2')\x0d\{\x0d\delay(gamespeed);\x0d\}\x0d\}\x0d\\x0d\Menu()/游戏开始菜单/\x0d\{\x0d\char ch;\x0d\printf("Please choose the gamespeed:\n");\x0d\printf("1-Fast 2-Normal 3-Slow\n");\x0d\printf("\nPlease Press The numbers\n");\x0d\do\x0d\{ch=getch();}\x0d\while(ch!='1'&&ch!='2'&&ch!='3');\x0d\clrscr();\x0d\return(ch);\x0d\}\x0d\\x0d\/主函数/\x0d\void main(void)\x0d\{\x0d\int ch;\x0d\ch=Menu();\x0d\Init();\x0d\DrawK();\x0d\GamePlay(ch);\x0d\Close();\x0d\}\x0d\\x0d\void Init(void)\x0d\{\x0d\int gd=DETECT,gm;\x0d\initgraph(&gd,&gm,"c:\\tc");\x0d\cleardevice();\x0d\}\x0d\\x0d\void DrawK(void)\x0d\{\x0d\setcolor(11);\x0d\setlinestyle(SOLID_LINE,0,THICK_WIDTH);\x0d\for(i=50;i0;i--) /贪吃蛇的移动算法/\x0d\{\x0d\snakex[i]=snakex[i-1];\x0d\snakey[i]=snakey[i-1]; /贪吃蛇的身体移动算法/\x0d\}\x0d\\x0d\switch(snakedirection) /贪吃蛇的头部移动算法,以此来控制移动/\x0d\{\x0d\case 1:snakex[0]+=10;break;\x0d\case 2:snakex[0]-=10;break;\x0d\case 3:snakey[0]-=10;break;\x0d\case 4:snakey[0]+=10;break;\x0d\}\x0d\for(i=3;i595||snakey[0]455)\x0d\{\x0d\GameOver();\x0d\snakelife=1;\x0d\}\x0d\if(snakelife==1) /如果死亡就退出循环/\x0d\break;\x0d\if(snakex[0]==foodx&&snakey[0]==foody) /判断蛇是否吃到食物/\x0d\{\x0d\setcolor(0);\x0d\rectangle(foodx,foody,foodx+10,foody-10); /吃的食物后用黑色将食物擦去/\x0d\snakex[snakenode]=-20;snakey[snakenode]=-20; /现把增加的一节放到看不到的地方去/\x0d\\x0d\snakenode++;\x0d\foodyes=1;\x0d\score+=10;\x0d\PrScore();\x0d\}\x0d\setcolor(4); /每次移动后将后面的身体擦去/\x0d\for(i=0;i回答于 2022-11-16

贪吃蛇

import javaawt;

import javaawtevent;

public class GreedSnake //主类

{

/

@param args

/

public static void main(String[] args) {

// TODO Auto-generated method stub

new MyWindow();

}

}

class MyPanel extends Panel implements KeyListener,Runnable//自定义面板类,继承了键盘和线程接口

{

Button snake[]; //定义蛇按钮

int shu=0; //蛇的节数

int food[]; //食物数组

boolean result=true; //判定结果是输 还是赢

Thread thread; //定义线程

static int weix,weiy; //食物位置

boolean t=true; //判定游戏是否结束

int fangxiang=0; //蛇移动方向

int x=0,y=0; //蛇头位置

MyPanel()

{

setLayout(null);

snake=new Button[20];

food=new int [20];

thread=new Thread(this);

for(int j=0;j<20;j++)

{

food[j]=(int)(Mathrandom()99);//定义20个随机食物

}

weix=(int)(food[0]01)60; //十位60为横坐标

weiy=(int)(food[0]%10)40; //个位40为纵坐标

for(int i=0;i<20;i++)

{

snake[i]=new Button();

}

add(snake[0]);

snake[0]setBackground(Colorblack);

snake[0]addKeyListener(this); //为蛇头添加键盘监视器

snake[0]setBounds(0,0,10,10);

setBackground(Colorcyan);

}

public void run() //接收线程

{

while(t)

{

if(fangxiang==0)//向右

{

try

{

x+=10;

snake[0]setLocation(x, y);//设置蛇头位置

if(x==weix&&y==weiy) //吃到食物

{

shu++;

weix=(int)(food[shu]01)60;

weiy=(int)(food[shu]%10)40;

repaint(); //重绘下一个食物

add(snake[shu]); //增加蛇节数和位置

snake[shu]setBounds(snake[shu-1]getBounds());

}

threadsleep(100); //睡眠100ms

}

catch(Exception e){}

}

else if(fangxiang==1)//向左

{

try

{

x-=10;

snake[0]setLocation(x, y);

if(x==weix&&y==weiy)

{

shu++;

weix=(int)(food[shu]01)60;

weiy=(int)(food[shu]%10)40;

repaint();

add(snake[shu]);

snake[shu]setBounds(snake[shu-1]getBounds());

}

threadsleep(100);

}

catch(Exception e){}

}

else if(fangxiang==2)//向上

{

try

{

y-=10;

snake[0]setLocation(x, y);

if(x==weix&&y==weiy)

{

shu++;

weix=(int)(food[shu]01)60;

weiy=(int)(food[shu]%10)40;

repaint();

add(snake[shu]);

snake[shu]setBounds(snake[shu-1]getBounds());

}

threadsleep(100);

}

catch(Exception e){}

}

else if(fangxiang==3)//向下

{

try

{

y+=10;

snake[0]setLocation(x, y);

if(x==weix&&y==weiy)

{

shu++;

weix=(int)(food[shu]01)60;

weiy=(int)(food[shu]%10)40;

repaint();

add(snake[shu]);

snake[shu]setBounds(snake[shu-1]getBounds());

}

threadsleep(100);

}

catch(Exception e){}

}

int num1=shu;

while(num1>1)//判断是否咬自己的尾巴

{

if(snake[num1]getBounds()x==snake[0]getBounds()x&&snake[num1]getBounds()y==snake[0]getBounds()y)

{

t=false;

result=false;

repaint();

}

num1--;

}

if(x<0||x>=thisgetWidth()||y<0||y>=thisgetHeight())//判断是否撞墙

{

t=false;

result=false;

repaint();

}

int num=shu;

while(num>0) //设置蛇节位置

{

snake[num]setBounds(snake[num-1]getBounds());

num--;

}

if(shu==15) //如果蛇节数等于15则胜利

{

t=false;

result=true;

repaint();

}

}

}

public void keyPressed(KeyEvent e) //按下键盘方向键

{

if(egetKeyCode()==KeyEventVK_RIGHT)//右键

{

if(fangxiang!=1)//如果先前方向不为左

fangxiang=0;

}

else if(egetKeyCode()==KeyEventVK_LEFT)

{ if(fangxiang!=0)

fangxiang=1;

}

else if(egetKeyCode()==KeyEventVK_UP)

{ if(fangxiang!=3)

fangxiang=2;

}

else if(egetKeyCode()==KeyEventVK_DOWN)

{ if(fangxiang!=2)

fangxiang=3;

}

}

public void keyTyped(KeyEvent e)

{

}

public void keyReleased(KeyEvent e)

{

}

public void paint(Graphics g) //在面板上绘图

{

int x1=thisgetWidth()-1;

int y1=thisgetHeight()-1;

gsetColor(Colorred);

gfillOval(weix, weiy, 10, 10);//食物

gdrawRect(0, 0, x1, y1); //墙

if(t==false&&result==false)

gdrawString("GAME OVER!", 250, 200);//输出游戏失败

else if(t==false&&result==true)

gdrawString("YOU WIN!", 250, 200);//输出游戏成功

}

}

class MyWindow extends Frame implements ActionListener//自定义窗口类

{

MyPanel my;

Button btn;

Panel panel;

MyWindow()

{

super("GreedSnake");

my=new MyPanel();

btn=new Button("begin");

panel=new Panel();

btnaddActionListener(this);

paneladd(new Label("begin后请按Tab键选定蛇"));

paneladd(btn);

paneladd(new Label("按上下左右键控制蛇行动"));

add(panel,BorderLayoutNORTH);

add(my,BorderLayoutCENTER);

setBounds(100,100,610,500);

setVisible(true);

validate();

addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

Systemexit(0);

}

});

}

public void actionPerformed(ActionEvent e)//按下begin按钮

{

if(egetSource()==btn)

{

try

{

mythreadstart(); //开始线程

myvalidate();

}

catch(Exception ee){}

}

}

}

以上就是关于用“vc”或“c++”编写的一个小游戏代码,源代码是什么全部的内容,包括:用“vc”或“c++”编写的一个小游戏代码,源代码是什么、求"贪吃蛇"小游戏JAVA源代码一份、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9825299.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存