如何用代码做小游戏_如何用代码做小游戏视频

       随着科技的发展,如何用代码做小游戏的今日更新也在不断地推陈出新。今天,我将为大家详细介绍它的今日更新,让我们一起了解它的最新技术。

1.????ô?????С??Ϸ

2.求几C语言个小游戏代码,简单的,要注释、、谢谢了、

3.小游戏的代码

如何用代码做小游戏_如何用代码做小游戏视频

????ô?????С??Ϸ

       贪吃蛇游戏!

       package com.hbsi;

        import java.awt.*;

        import java.awt.event.*;

        import javax.swing.*;

        import java.util.*;

       //Main Class

       public class GreedSnake extends KeyAdapter{

       JFrame mainFrame;

        Canvas paintCanvas;

        JLabel labelScore;//计分牌

        SnakeModel snakeModel=null;// 蛇

        public static final int DEFAULT_WIDTH=500;

        public static final int DEFAULT_HEIGHT=300;

        public static final int nodeWidth=10;

        public static final int nodeHeight=10;

       //GreedSnake():初始化游戏界面

       public GreedSnake(){

       //设置界面元素

        mainFrame=new JFrame("贪吃蛇游戏");

        Container cp=mainFrame.getContentPane();

        labelScore=new JLabel("所得分数为:",JLabel.CENTER);

        cp.add(labelScore,BorderLayout.NORTH);

        paintCanvas=new Canvas();

        paintCanvas.setSize(DEFAULT_WIDTH+1,DEFAULT_HEIGHT+1);

        paintCanvas.addKeyListener(this);

        cp.add(paintCanvas,BorderLayout.CENTER);

        JPanel panelButtom=new JPanel();

        panelButtom.setLayout(new BorderLayout());

        JLabel labelHelp;// 帮助信息

        labelHelp=new JLabel("按 PageUP 或 PageDown 键改变速度",JLabel.CENTER);

        panelButtom.add(labelHelp,BorderLayout.NORTH);

        labelHelp=new JLabel("按 Enter 或 S 键重新开始游戏",JLabel.CENTER);

        panelButtom.add(labelHelp,BorderLayout.CENTER);

        labelHelp=new JLabel("按 SPACE 键或 P 键暂停游戏",JLabel.CENTER);

        panelButtom.add(labelHelp,BorderLayout.SOUTH);

        cp.add(panelButtom,BorderLayout.SOUTH);

        mainFrame.addKeyListener(this);

        mainFrame.pack();

        mainFrame.setResizable(false);//设置窗口大小不能变化

        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        mainFrame.setVisible(true);

        begin();

        }

       //keyPressed():按键检测

       public void keyPressed(KeyEvent e){

       int keyCode=e.getKeyCode();

        if(snakeModel.running)

        switch(keyCode){

        case KeyEvent.VK_UP:

        snakeModel.changeDirection(SnakeModel.UP);

        break;

        case KeyEvent.VK_DOWN:

        snakeModel.changeDirection(SnakeModel.DOWN);

        break;

        case KeyEvent.VK_LEFT:

        snakeModel.changeDirection(SnakeModel.LEFT);

        break;

        case KeyEvent.VK_RIGHT:

        snakeModel.changeDirection(SnakeModel.RIGHT);

        break;

        case KeyEvent.VK_ADD:

        case KeyEvent.VK_PAGE_UP:

        snakeModel.speedUp();// 加速

        break;

        case KeyEvent.VK_SUBTRACT:

        case KeyEvent.VK_PAGE_DOWN:

        snakeModel.speedDown();// 减速

        break;

        case KeyEvent.VK_SPACE:

        case KeyEvent.VK_P:

        snakeModel.changePauseState();// 暂停或继续

        break;

        default:

        }

        //重新开始

        if(keyCode==KeyEvent.VK_S || keyCode==KeyEvent.VK_ENTER){

        snakeModel.running=false;

        begin();

        }

        }

       //repaint():绘制游戏界面(包括蛇和食物)

       void repaint(){

        Graphics g=paintCanvas.getGraphics();

        //draw background

        g.setColor(Color.LIGHT_GRAY);

        g.fillRect(0,0,DEFAULT_WIDTH,DEFAULT_HEIGHT);

        //draw the snake

        g.setColor(Color.BLACK);

        LinkedList na=snakeModel.nodeArray;

        Iterator it=na.iterator();

        while(it.hasNext()){

       Node n=(Node)it.next();

        drawNode(g,n);

        }

        // draw the food

        g.setColor(Color.RED);

        Node n=snakeModel.food;

        drawNode(g,n);

        updateScore();

        }

       //drawNode():绘画某一结点(蛇身或食物)

       private void drawNode(Graphics g,Node n){

        g.fillRect(n.x*nodeWidth,n.y*nodeHeight,nodeWidth-1,nodeHeight-1);

        }

       //updateScore():改变计分牌

       public void updateScore(){

        String s="所得分数为: "+snakeModel.score;

        labelScore.setText(s);

        }

       //begin():游戏开始,放置贪吃蛇

       void begin(){

       if(snakeModel==null||!snakeModel.running){

        snakeModel=new SnakeModel(this,DEFAULT_WIDTH/nodeWidth,

        DEFAULT_HEIGHT/nodeHeight);

        (new Thread(snakeModel)).start();

        }

        }

       //main():主函数

       public static void main(String[] args){

       GreedSnake gs=new GreedSnake();

        }

        }

       //Node:结点类

       class Node{

        int x;

        int y;

        Node(int x,int y){

        this.x=x;

        this.y=y;

        }

        }

       //SnakeModel:贪吃蛇模型

       class SnakeModel implements Runnable{

       GreedSnake gs;

        boolean[][] matrix;// 界面数据保存在数组里

        LinkedList nodeArray=new LinkedList();

        Node food;

        int maxX;//最大宽度

        int maxY;//最大长度

        int direction=2;//方向

        boolean running=false;

        int timeInterval=200;// 间隔时间(速度)

        double speedChangeRate=0.75;// 速度改变程度

        boolean paused=false;// 游戏状态

        int score=0;

        int countMove=0;

        // UP和DOWN是偶数,RIGHT和LEFT是奇数

        public static final int UP=2;

        public static final int DOWN=4;

        public static final int LEFT=1;

        public static final int RIGHT=3;

       //GreedModel():初始化界面

       public SnakeModel(GreedSnake gs,int maxX,int maxY){

       this.gs=gs;

        this.maxX=maxX;

        this.maxY=maxY;

        matrix=new boolean[maxX][];

        for(int i=0;i<maxX;++i){

        matrix[i]=new boolean[maxY];

        Arrays.fill(matrix[i],false);// 没有蛇和食物的地区置false

        }

        //初始化贪吃蛇

        int initArrayLength=maxX>20 ? 10 : maxX/2;

        for(int i=0;i<initArrayLength;++i){

        int x=maxX/2+i;

        int y=maxY/2;

        nodeArray.addLast(new Node(x,y));

        matrix[x][y]=true;// 蛇身处置true

        }

        food=createFood();

        matrix[food.x][food.y]=true;// 食物处置true

        }

       //changeDirection():改变运动方向

       public void changeDirection(int newDirection){

       if(direction%2!=newDirection%2){// 避免冲突

        direction=newDirection;

        }

        }

       //moveOn():贪吃蛇运动函数

       public boolean moveOn(){

       Node n=(Node)nodeArray.getFirst();

        int x=n.x;

        int y=n.y;

        switch(direction){

        case UP:

        y--;

        break;

        case DOWN:

        y++;

        break;

        case LEFT:

        x--;

        break;

        case RIGHT:

        x++;

        break;

        }

        if((0<=x&&x<maxX)&&(0<=y&&y<maxY)){

       if(matrix[x][y]){// 吃到食物或者撞到身体

       if(x==food.x&&y==food.y){// 吃到食物

       nodeArray.addFirst(food);// 在头部加上一结点

        //计分规则与移动长度和速度有关

        int scoreGet=(10000-200*countMove)/timeInterval;

        score+=scoreGet>0 ? scoreGet : 10;

        countMove=0;

        food=createFood();

        matrix[food.x][food.y]=true;

        return true;

        }

        else return false;// 撞到身体

        }

        else{//什么都没有碰到

        nodeArray.addFirst(new Node(x,y));// 加上头部

        matrix[x][y]=true;

        n=(Node)nodeArray.removeLast();// 去掉尾部

        matrix[n.x][n.y]=false;

        countMove++;

        return true;

        }

        }

        return false;//越界(撞到墙壁)

        }

        /*发了一份贪吃蛇游戏的代码,谁能帮我解释一下,贪吃蛇程序的运行过程,运行步骤*/

        //run():贪吃蛇运动线程

       public void run(){

        running=true;

        while(running){

        try{

        Thread.sleep(timeInterval);

        }

        catch(Exception e){

        break;

        }

        if(!paused){

       if(moveOn()){// 未结束

        gs.repaint();

        }

        else{//游戏结束

        JOptionPane.showMessageDialog(null,"GAME OVER",

        "Game Over",JOptionPane.INFORMATION_MESSAGE);

        break;

        }

        }

        }

        running=false;

        }

       //createFood():生成食物及放置地点

       private Node createFood(){

       int x=0;

        int y=0;

        do{

        Random r=new Random();

        x=r.nextInt(maxX);

        y=r.nextInt(maxY);

        }

        while(matrix[x][y]);

        return new Node(x,y);

        }

       //speedUp():加快蛇运动速度

       public void speedUp(){

        timeInterval*=speedChangeRate;

        }

       //speedDown():放慢蛇运动速度

       public void speedDown(){

       timeInterval/=speedChangeRate;

        }

       //changePauseState(): 改变游戏状态(暂停或继续)

       public void changePauseState(){

       paused=!paused;

        }

        }

求几C语言个小游戏代码,简单的,要注释、、谢谢了、

       爱玩是人的天性,而C语言是我们计算机专业都要学习的一门基础 学科.一般来说,是比较枯燥的.那么,我们能不能通过编一些小游戏来提高它的趣味性呢?这样学习程序设计,就不会是一件艰苦 ,枯燥的事,它变得象电脑游戏一样充满好奇,富有乐趣. 1, 总是从Hello,world开始 学习编程的第一个程序,一般就是打印一个亲切的词语——"Hell o,world!".让我们来看看这个最简单的C程序:#incolude /*把输入输出函数的头文件包含进来*/int main(){printf("Hello, world!");/*在屏幕上输出字符串"Hello,world!"*/return 0;/*退出main函数,并返回0*/} 下面我们发现几个值得改进的地方,1,程序的运行结果一闪而过 .2,每执行这个程序一次都能看见上次运行留下的字符.3,我们 还希望屏幕输出一个笑脸来欢迎我们. 让我们来改进一下这个程序吧!1,在return语句的前面加一句:getch ();,表示按任意键结束.2,在printf语句前用clrscr函数清屏,要使用这个函数和getch函数,需要在程序开头再包含头文件conio.h.3,ASCII码也有 许多非常好玩的字符,比如ASCII码值为2的就是一个笑脸,我们可 以用printf("%c", 2)来输出一个笑脸. 现在我们把Hello,world程序改成一个更好看的Hello,world了.下面让我们开始做游戏吧! 2, 心动的开始,一个运动中的笑脸 大家小时侯喜欢看动画片吗?哈哈,我猜你们都喜欢吧!下面就让我们来做一个小动画吧.在屏幕上显示一个运动的小笑脸,而且当它到达屏幕的边缘时会自动弹回来.先在程序定义一个在屏幕中运动的点的结构:struct move_point{ int x, y;/*该点的位置,包括x坐标和y坐标*/ int xv, yv;/*该点在x轴,y轴的速度*/};运动的原理是,先擦去物体先前的轨迹,让物体按其速度移动一段距离,再画出该物体.让我们看到以下代码:gotoxy(man.x, man.y);/*把光标移到指定的坐标*/printf(" ");/*输出一个空格,把先前的字符擦去*/然后我们让物体按其速度运动:man.x += man.xv;/*水平方向按x轴的速度运动*/man.y += man.yv;/*垂直方向按y轴的速度运动*/运动后还要判断物体是否出界,如果出了界,就令物体反弹,即让 它下一刻的速度等于现在的速度的相反数.最后打印出这个笑脸:gotoxy(man.x, man.y);printf("%c\b", 2); /*输出ASCII码值为2的"笑脸"字符*/怎么样?是不是很有趣呢?不过这个笑脸一直是自己运动,能不能 让我们来控制它运动呢?不过这个程序没有什么目的,也没有什么判断胜负的条件.下面我们就利用这个能控制它移动的笑脸来做一个更有趣的游戏吧! 4, 在迷宫中探索 小时侯,我常在一些小人书和杂志上看见一些迷宫的游戏,非常喜欢玩,还常到一些书上找迷宫玩呢.好的,现在我们用C语言来编个迷宫的游戏,重温一下童年的乐趣. 首先,我们定义一个二维数组map,用它来保存迷宫的地图,其中map[x][y] == '#'表示在(x,y)坐标上的点是墙壁.DrawMap函数在屏幕上输出迷宫的地图和一些欢迎信息.在main函数里,我们定义了"小人"man的坐标和"目的地"des的 坐标.在游戏循环中,我们增加了一些用来判断胜负的语句:if (man.x == des.x && man.y == des.y) /*如果人的坐标等于目的地的坐标*/{ gotoxy(35, 3); printf("Ok! You win!"); /*输出胜利信息*/….}在判断按键时,如果玩家按的是方向键,我们还要先判断前面是不是有"墙壁",如果有的话,就不能往前移动了.好的,我们在判断按键的switch语句的各个分支加上了判断语句,如下:if (map[…][…] == '#') break;/*如果前面是墙壁,就不执行下去*/哇噻!真棒,我们做出了一个完整的游戏了.当然你还可以通过修改二维数组map来修改迷宫的地图,让它更有挑战性.不过,我们要设计一个更好玩的游戏—— 5, 聪明的搬运工 大家一定玩过"搬运工"的游戏吧!这是在电脑和电子字典上较流行的益智游戏,让我们动手做一个属于自己的"搬运工"吧!程序依然用数组map来保存地图,数组元素如果为空格则表示什么也没有,'b'表示箱子,'#'表示墙壁,'*'表示目的地,'i'表示箱子在目的地.我们以后每推一下箱子,不但要改变屏幕的显示,也要改变map相应元素的值.游戏的主循环依然是接受按键.当接收一个方向键,需要判断小人前面一格的状态,如果是空地或目的地,则人物可以直接移动;如果是墙壁,则不可移动;如果是箱子或目的地上的箱子,则需要继续判断箱子前面一格的状态:如果前一格是空地或目的地,则人推箱子前进,否则不可移动.好的,我们在switch中增加了这些判断语句.程序还有一个重要的功能就是判断胜利.数组Des用来记录全部目的地的坐标,我们每执行一步操作后,程序就要通过Des数组判断这些目的地上是否都有箱子了.真棒啊!我们可以做游戏了.而且是一个老少皆宜,趣味十足的游戏呢!当然,我们可以通过修改map数组来制作不同的游戏地图,我们还可以相互分享好的游戏地图呢. 尾声: 在C++等高级语言还没出来的时候,很多应用程序也是C语言开发的.C语言在与硬件联系紧密的编程中,也占有重要地位.其实我觉得学习编程,可以通过一些小游戏,实用的例子来学习.象学习音乐的人,不是要等到把全部乐理学完后才演奏一个完整的曲子.而是刚开始学时就有一些简单的曲子让你演奏,让你立刻就有成就感,让你很快就能卖弄出来在别人面前表现自己了.通过编游戏来学习编程,把学习变成游戏,不失为学习计算机的一种好方法. 好了,编游戏就这么简单,希望大家也尝试用C语言或其他的语言来做几个自己喜欢的小游戏.

小游戏的代码

       // Calcu24.cpp : Defines the entry point for the console application.

       //

       /*

       6-6

       24点游戏

       */

       #include "conio.h"

       #include "stdlib.h"

       #include "time.h"

       #include "math.h"

       #include "string.h"/*

        从一副扑克牌中,任取4张。

        2-10 按其点数计算(为了表示方便10用T表示),J,Q,K,A 统一按 1 计算

        要求通过加减乘除四则运算得到数字 24。

        本程序可以随机抽取纸牌,并用试探法求解。

       */void GivePuzzle(char* buf)

       {

        char card[] = {'A','2','3','4','5','6','7','8','9','T','J','Q','K'}; for(int i=0; i<4; i++){

        buf[i] = card[rand() % 13];

        }

       }

       void shuffle(char * buf)

       {

        for(int i=0; i<5; i++){

        int k = rand() % 4;

        char t = buf[k];

        buf[k] = buf[0];

        buf[0] = t;

        }

       }

       int GetCardValue(int c)

       {

        if(c=='T') return 10;

        if(c>='0' && c<='9') return c - '0';

        return 1;

       }

       char GetOper(int n)

       {

        switch(n)

        {

        case 0:

        return '+';

        case 1:

        return '-';

        case 2:

        return '*';

        case 3:

        return '/';

        } return ' ';

       }double MyCalcu(double op1, double op2, int oper)

       {

        switch(oper)

        {

        case 0:

        return op1 + op2;

        case 1:

        return op1 - op2;

        case 2:

        return op1 * op2;

        case 3:

        if(fabs(op2)>0.0001)

        return op1 / op2;

        else

        return 100000;

        } return 0;

       }

       void MakeAnswer(char* answer, int type, char* question, int* oper)

       {

        char p[4][3];

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

        {

        if( question[i] == 'T' )

        strcpy(p[i], "10");

        else

        sprintf(p[i], "%c", question[i]);

        }

        switch(type)

        {

        case 0:

        sprintf(answer, "%s %c (%s %c (%s %c %s))",

        p[0], GetOper(oper[0]), p[1], GetOper(oper[1]), p[2], GetOper(oper[2]), p[3]);

        break;

        case 1:

        sprintf(answer, "%s %c ((%s %c %s) %c %s)",

        p[0], GetOper(oper[0]), p[1], GetOper(oper[1]), p[2], GetOper(oper[2]), p[3]);

        break;

        case 2:

        sprintf(answer, "(%s %c %s) %c (%s %c %s)",

        p[0], GetOper(oper[0]), p[1], GetOper(oper[1]), p[2], GetOper(oper[2]), p[3]);

        break;

        case 3:

        sprintf(answer, "((%s %c %s) %c %s) %c %s",

        p[0], GetOper(oper[0]), p[1], GetOper(oper[1]), p[2], GetOper(oper[2]), p[3]);

        break;

        case 4:

        sprintf(answer, "(%s %c (%s %c %s)) %c %s",

        p[0], GetOper(oper[0]), p[1], GetOper(oper[1]), p[2], GetOper(oper[2]), p[3]);

        break;

        }

       }

       bool TestResolve(char* question, int* oper, char* answer)

       {

        // 等待考生完成

        int type[5]={0,1,2,3,4};//计算类型

        double p[4];

        double sum=0;

        //

        for(int i=0; i<4; i++) //循环取得点数

        {

        p[i]=GetCardValue(int(question[i]));

        } for(i=0;i<5;i++)

        {

        MakeAnswer(answer,type[i],question,oper); //获取可能的答案

        switch(type[i])

        {

        case 0:

        sum=MyCalcu(p[0],MyCalcu( p[1],MyCalcu(p[2], p[3], oper[2]),oper[1]),oper[0]); //A*(B*(c*D))

        break;

        case 1:

        sum=MyCalcu(p[0],MyCalcu(MyCalcu(p[1], p[2], oper[1]),p[3],oper[2]),oper[0]); //A*((B*C)*D)

        break;

        case 2:

        sum=MyCalcu(MyCalcu(p[0], p[1], oper[0]),MyCalcu(p[2], p[3], oper[2]),oper[1]); // (A*B)*(C*D)

        break;

        case 3:

        sum=MyCalcu(MyCalcu(MyCalcu(p[0], p[1], oper[0]),p[2],oper[1]),p[3],oper[2]); //((A*B)*C)*D

        break;

        case 4:

        sum=MyCalcu(MyCalcu(p[0],MyCalcu(p[1], p[2], oper[1]),oper[0]),p[3],oper[2]); //(A*(B*C))*D

        break;

        }

        if(sum==24) return true;

        }

        return false;

       }

       /*

        采用随机试探法:就是通过随机数字产生 加减乘除的 组合,通过大量的测试来命中的解法

        提示:

        1. 需要考虑用括号控制计算次序的问题 比如:( 10 - 4 ) * ( 3 + A ), 实际上计算次序的数目是有限的:

        A*(B*(c*D))

        A*((B*C)*D)

        (A*B)*(C*D)

        ((A*B)*C)*D

        (A*(B*C))*D

        2. 需要考虑计算结果为分数的情况:( 3 + (3 / 7) ) * 7

        3. 题目中牌的位置可以任意交换

       */

       bool TryResolve(char* question, char* answer)

       {

        int oper[3]; // 存储运算符,0:加法 1:减法 2:乘法 3:除法

        for(int i=0; i<1000 * 1000; i++)

        {

        // 打乱纸牌顺序

        shuffle(question);

        // 随机产生运算符

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

        oper[j] = rand() % 4; if( TestResolve(question, oper, answer) ) return true;

        } return false;

       }

       int main(int argc, char* argv[])

       {

        // 初始化随机种子

        srand( (unsigned)time( NULL ) ); char buf1[4]; // 题目

        char buf2[30]; // 解答

        printf("***************************\n");

        printf("计算24\n");

        printf("A J Q K 均按1计算,其它按牌点计算\n");

        printf("目标是:通过四则运算组合出结果:24\n");

        printf("***************************\n\n");

        for(;;)

        {

        GivePuzzle(buf1); // 出题

        printf("题目:");

        for(int j=0; j<4; j++){

        if( buf1[j] == 'T' )

        printf("10 ");

        else

        printf("%c ", buf1[j]);

        } printf("\n按任意键参考答案...\n");

        getch(); if( TryResolve(buf1, buf2) ) // 解题

        printf("参考:%s\n", buf2);

        else

        printf("可能是无解...\n"); printf("按任意键出下一题目,x 键退出...\n");

        if( getch() == 'x' ) break;

        } return 0;

       }

       #include<graphics.h>

       #include<stdlib.h>

       #include<dos.h>

       #define LEFT 0x4b00

       #define RIGHT 0x4d00

       #define DOWN 0x5000

       #define UP 0x4800

       #define ESC 0x011b

       int i,key;

       int score=0;

       int gamespeed=32000;

       struct Food /*食物的结构体*/

       {

       int x; /*食物的横坐标*/

       int y; /*食物的纵坐标*/

       int yes; /*食物是否出现的变量*/

       }food;

       struct Snack /*蛇的结构体*/

       {

       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 PrScore(void); /*分数输出函数*/

       DELAY(char ch)/*调节游戏速度*/

       {

       if(ch=='3')

       {

       delay(gamespeed); /*delay是延迟函数*/

       delay(gamespeed);

       }

       else if(ch=='2')

       {

       delay(gamespeed);

       }

       }

       Menu()/*游戏开始菜单*/

       {

       char ch;

       printf("Please choose the gamespeed:\n");

       printf("1-Fast 2-Normal 3-Slow\n");

       printf("\nPlease Press The numbers..\n");

       do

       {ch=getch();}

       while(ch!='1'&&ch!='2'&&ch!='3');

       clrscr();

       return(ch);

       }

       /*主函数*/

       void main(void)

       {

       int ch;

       ch=Menu();

       Init();

       DrawK();

       GamePlay(ch);

       Close();

       }

       void Init(void)

       {

       int gd=DETECT,gm;

       initgraph(&gd,&gm,"c:\\tc");

       cleardevice();

       }

       void DrawK(void)

       {

       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(char ch)

       {

       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) /*可以重复游戏*/

       {

       while(!kbhit()) /*在没有按键的情况下蛇自己移动*/

       {

       if(food.yes==1) /*需要食物*/

       {

       food.x=rand()%400+60;

       food.y=rand()%350+60; /*使用rand函数随机产生食物坐标*/

       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]; /*贪吃蛇的身体移动算法*/

       }

       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;i<snake.node;i++) /*判断是否头部与身体相撞*/

       {

       if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])

       {

       GameOver();

       snake.life=1;

       break;

       }

       }

       /*下面是判断是否撞到墙壁*/

       if(snake.x[0]<55||snake.x[0]>595||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<snake.node;i++)

       rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);

       delay(gamespeed);

       DELAY(ch);

       setcolor(0);

       rectangle(snake.x[snake.node-1],snake.y[snake.node-1],snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);

       }

       if(snake.life==1)

       break;

       key=bioskey(0); /*接受按键*/

       if(key==ESC)

       break;

       else

       if(key==UP&&snake.direction!=4)/*判断是否改变方向*/

       snake.direction=3;

       else

       if(key==RIGHT&&snake.direction!=2)

       snake.direction=1;

       else

       if(key==LEFT&&snake.direction!=1)

       snake.direction=2;

       else

       if(key==DOWN&&snake.direction!=3)

       snake.direction=4;

       }

       }

       void GameOver(void)

       {

       cleardevice();

       setcolor(RED);

       settextstyle(0,0,4);

       outtextxy(200,200,"GAME OVER");

       getch();

       }

       void PrScore(void)

       {

       char str[10];

       setfillstyle(SOLID_FILL,YELLOW);

       bar(50,15,220,35);

       setcolor(6);

       settextstyle(0,0,2);

       sprintf(str,"scord:%d",score);

       outtextxy(55,20,str);

       }

       void Close(void)

       {

       getch();

       closegraph();

       }

       贪吃蛇

       好了,关于“如何用代码做小游戏”的话题就到这里了。希望大家通过我的介绍对“如何用代码做小游戏”有更全面、深入的认识,并且能够在今后的实践中更好地运用所学知识。