贪吃蛇C语言代码实现(难度可选)

本文实例为大家分享了C语言实现贪吃蛇的具体代码,供大家参考,具体内容如下

/*********************************************************
********************贪吃蛇(难度可选)********************
**************制作者:Xu Lizi   日期:2012/12/31********
********************部分函数有借鉴************************
**********************************************************/
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h> 

int snakey[100]={5,4,3,2,1};   /*定义蛇的横坐标*/
int snakex[100]={1,1,1,1,1};   /*定义蛇的纵坐标,蛇头起始位置为(5,1)*/
int life=0;  /*定义蛇的生命,0表示存活,1表示死亡*/
int lenght=5;   /*定义蛇的长度,初始为5节*/ 

char map[12][24]={"***********************",  /*y*/
         "*           *",
         "*           *",
         "*           *",
         "*           *",
         "*           *",
         "*           *",
         "*           *",
         "*           *",
         "*           *",
         "*           *",
     /*x*/  "***********************"}; 

void put_money(int i,int j)    /*放钱函数,使用随机数,随机出现食物*/
{
   int x=0,y=0;
   srand(time(NULL));
   while ( (map[y][x]==003) || (map[y][x]==002) || (map[y][x]=='*') || ((x==i)&&(y==j)) )
   {
      x=rand()%21+1;
      y=rand()%10+1;
   }
   map[y][x]='$';
   return;
} 

void output()    /*输出*/
{
  system("cls");
  int i,j;
  for(i=0; i<12; i++)
  {
     for(j=0; j<23; j++) printf("%c", map[i][j]);
     printf("\n");
  }
  return;
} 

void gameover()    /*游戏结束*/
{
   life=1;
   printf("笨蛋,输了吧!!!\n");
   return;
} 

void turn_up()    /*向上移动*/
{
   system("cls");
   int i;
   if ( (snakex[0]==1) || (map[snakex[0]-1][snakey[0]]==003) ) gameover(); else {
   if (map[snakex[0]-1][snakey[0]]=='$')
   {
      put_money( snakey[0], snakex[0]-1 );
      lenght++;
      map[snakex[lenght-1]][snakey[lenght-1]]=003;
   }
   for(i=lenght; i>0; i--)
   {
     snakex[i]=snakex[i-1];
     snakey[i]=snakey[i-1];
   }
   map[snakex[lenght]][snakey[lenght]]=' ';
   snakex[0]--;
   for(i=lenght-1; i>0; i--) map[snakex[i]][snakey[i]]=003;
   map[snakex[0]][snakey[0]]=002;
   output();
   }
   return;
} 

void turn_down()     /*向下*/
{
   system("cls");
   int i;
   if ( (snakex[0]==10) || (map[snakex[0]+1][snakey[0]]==003) ) gameover();else {
   if (map[snakex[0]+1][snakey[0]]=='$')
   {
      put_money(snakey[0],snakex[0]+1);
      lenght++;
      map[snakex[lenght-1]][snakey[lenght-1]]=003;
   }
   for(i=lenght; i>0; i--)
   {
     snakex[i]=snakex[i-1];
     snakey[i]=snakey[i-1];
   }
   snakex[0]++;
   map[snakex[lenght]][snakey[lenght]]=' ';
   for(i=lenght-1; i>0; i--) map[snakex[i]][snakey[i]]=003;
   map[snakex[0]][snakey[0]]=002;
   output();
   }
   return;
} 

void turn_left()   /*向左*/
{
   system("cls");
   int i;
   if ( (snakey[0]==1) || (map[snakex[0]][snakey[0]-1]==003) ) gameover();else {
   if (map[snakex[0]][snakey[0]-1]=='$')
   {
      put_money(snakey[0]-1,snakex[0]);
      lenght++;
      map[snakex[lenght-1]][snakey[lenght-1]]=003;
   }
   for(i=lenght; i>0; i--)
   {
     snakex[i]=snakex[i-1];
     snakey[i]=snakey[i-1];
   }
   map[snakex[lenght]][snakey[lenght]]=' ';
   snakey[0]--;
   for(i=lenght-1; i>0; i--) map[snakex[i]][snakey[i]]=003;
   map[snakex[0]][snakey[0]]=002;
   output();
   }
   return;
} 

void turn_right()    /*向右*/
{
   system("cls");
   int i;
   if ( (snakey[0]==21) || (map[snakex[0]][snakey[0]+1]==003) ) gameover();else {
   if (map[snakex[0]][snakey[0]+1]=='$')
   {
      put_money(snakey[0]+1,snakex[0]);
      lenght++;
      map[snakex[lenght-1]][snakey[lenght-1]]=003;
   }
   for(i=lenght; i>0; i--)
   {
     snakex[i]=snakex[i-1];
     snakey[i]=snakey[i-1];
   }
   map[snakex[lenght]][snakey[lenght]]=' ';
   snakey[0]++;
   for(i=lenght-1; i>0; i--) map[snakex[i]][snakey[i]]=003;
   map[snakex[0]][snakey[0]]=002;
   output();
   }
   return;
} 

int main()
{
  int i,timeover,hard;
  long start;
  char name , direcation; 

  printf("\n  向上移动:W ;向下移动:S ; 向左移动:A ; 向右移动:D \n");
  printf("\t请选择难度(数字)\n\t分1~5级,分别代表\n\t1难,2中上,3中,4中下5,易:\n");
  scanf("%d",&hard);
  system("cls"); 

  for(i=1;i<5;i++) map[1][i]=003;   /*输出蛇身*/
  map[1][5]=002;   /*输出蛇头*/ 

  put_money(0,0);
  output(); 

  while(life!=1)  /*当蛇死亡时结束循环*/
  {
    /*让蛇自动运行的函数******有借鉴*/
    timeover=1;
    start=clock();
    while((timeover=(clock()-start<=hard*100))&&!kbhit());    //难度设定
    if(timeover)
    {
          direcation=getch();
    }
    /*让蛇自动运行的函数******有借鉴*/ 

    switch(direcation)
    {
        case 'w':turn_up();break;
        case 's':turn_down();break;
        case 'a':turn_left();break;
        case 'd':turn_right();break;
    }
  }
  return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • C语言手把手教你实现贪吃蛇AI(中)
  • C语言手把手教你实现贪吃蛇AI(上)
  • C语言贪吃蛇经典小游戏
  • C语言链表实现贪吃蛇游戏
  • C语言结构数组实现贪吃蛇小游戏
  • 基于C语言实现的贪吃蛇游戏完整实例代码
  • C语言手把手教你实现贪吃蛇AI(下)
(0)

相关推荐

  • 基于C语言实现的贪吃蛇游戏完整实例代码

    本文以实例的形式讲述了基于C语言实现的贪吃蛇游戏代码,这是一个比较常见的游戏,代码备有比较详细的注释,对于读者理解有一定的帮助. 贪吃蛇完整实现代码如下: #include <graphics.h> #include <conio.h> #include <stdlib.h> #include <dos.h> #define NULL 0 #define UP 18432 #define DOWN 20480 #define LEFT 19200 #defi

  • C语言贪吃蛇经典小游戏

    一.贪吃蛇小游戏简介: 用上下左右控制蛇的方向,寻找吃的东西,每吃一口就能得到一定的积分,而且蛇的身子会越吃越长,身子越长玩的难度就越大,不能碰墙,也不能咬到自己的身体,等到了一定的分数,就能过关. 二.函数框架 三.数据结构 typedef struct Snake { size_t x; //行 size_t y; //列 struct Snake* next; }Snake, *pSnake; 定义蛇的结构体,利用单链表来表示蛇,每个结点为蛇身体的一部分. 四.代码实现(vs2010  c

  • C语言手把手教你实现贪吃蛇AI(上)

    本文实例为大家分享了手把手教你实现贪吃蛇AI的具体步骤,供大家参考,具体内容如下 1. 目标 编写一个贪吃蛇AI,也就是自动绕过障碍,去寻找最优路径吃食物. 2. 问题分析 为了达到这一目的,其实很容易,总共只需要两步,第一步抓一条蛇,第二步给蛇装一个脑子.具体来说就是,首先我们需要有一条普通的贪吃蛇,也就是我们常玩儿的,手动控制去吃食物的贪吃蛇:然后给这条蛇加入AI,也就是通过算法控制,告诉蛇怎么最方便的绕开障碍去吃食物.为了讲清楚这个问题,文章将分为三部分:上,写一个贪吃蛇程序:中,算法基础

  • C语言手把手教你实现贪吃蛇AI(下)

    本文实例为大家分享了C语言实现贪吃蛇AI的具体代码,供大家参考,具体内容如下 1. 目标 这一部分的目标是把之前写的贪吃蛇加入AI功能,即自动的去寻找食物并吃掉. 2. 控制策略 为了保证蛇不会走入"死地",所以蛇每前进一步都需要检查,移动到新的位置后,能否找到走到蛇尾的路径,如果可以,才可以走到新的位置:否则在当前的位置寻找走到蛇尾的路径,并按照路径向前走一步,开始循环之前的操作,如下图所示.这个策略可以工作,但是并不高效,也可以尝试其他的控制策略,比如易水寒的贪吃蛇AI 运行效果如

  • C语言手把手教你实现贪吃蛇AI(中)

    手把手教你实现贪吃蛇AI,具体内容如下 1. 目标 这一部分主要是讲解编写贪吃蛇AI所需要用到的算法基础. 2. 问题分析 贪吃蛇AI说白了就是寻找一条从蛇头到食物的一条最短路径,同时这条路径需要避开障碍物,这里仅有的障碍就是蛇身.而A star 算法就是专门针对这一个问题的.在A star 算法中需要用到排序算法,这里采用堆排序(当然其他排序也可以),如果对堆排序不熟悉的朋友,请移步到这里--堆排序,先看看堆排序的内容. 3. A*算法 A star(也称A*)搜寻算法俗称A星算法.这是一种在

  • C语言结构数组实现贪吃蛇小游戏

    一.设计思路 蛇身本质上就是个结构数组,数组里存储了坐标x.y的值,再通过一个循环把它打印出来,蛇的移动则是不断地刷新重新打印.所以撞墙.咬到自己只是数组x.y值的简单比较. 二.用上的知识点 结构数组Windows API函数 三.具体实现 先来实现静态页面,把地图.初始蛇身.食物搞定. 这里需要用到Windows API的知识,也就是对控制台上坐标的修改 //这段代码来自参考1 void Pos(int x, int y) { COORD pos; HANDLE hOutput; pos.X

  • C语言链表实现贪吃蛇游戏

    阅读学习了源代码,并做了简单的注释和修改,里面只用了链表数据结构,非常适合C语言入门者学习阅读. 程序可在VS2013下编译运行. #include<stdio.h> #include<time.h> #include<windows.h> #include<stdlib.h> #define U 1 #define D 2 #define L 3 #define R 4 //蛇的状态,U:上 :D:下:L:左 R:右 typedef struct SNAK

  • 贪吃蛇C语言代码实现(难度可选)

    本文实例为大家分享了C语言实现贪吃蛇的具体代码,供大家参考,具体内容如下 /********************************************************* ********************贪吃蛇(难度可选)******************** **************制作者:Xu Lizi 日期:2012/12/31******** ********************部分函数有借鉴************************ ****

  • C语言实现双人贪吃蛇游戏实例代码

    贪吃蛇双人小游戏,每局游戏两分钟,死亡则直接失败,若时间结束,则分高者获胜.   上源代码: ​ #include <stdio.h> #include <stdlib.h> #include <Windows.h> #include <time.h> #include<stdbool.h> #include <conio.h> #define SNAKESIZE 100 #define MAPWIDTH 118 #define MA

  • 使用Python写一个贪吃蛇游戏实例代码

    我在程序中加入了分数显示,三种特殊食物,将贪吃蛇的游戏逻辑写到了SnakeGame的类中,而不是在Snake类中. 特殊食物: 1.绿色:普通,吃了增加体型 2.红色:吃了减少体型 3.金色:吃了回到最初体型 4.变色食物:吃了会根据食物颜色改变蛇的颜色 #coding=UTF-8 from Tkinter import * from random import randint import tkMessageBox class Grid(object): def __init__(self,

  • Unity实现3D贪吃蛇的移动代码

    本文实例为大家分享了Unity实现3D贪吃蛇移动的具体代码,供大家参考,具体内容如下 记录一下前段时间写到的一个3D贪吃蛇的移动代码. 链接:Unity实现3D贪吃蛇 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class GameManager : MonoBehaviour { List<Transform> bodyL

  • JavaScript贪吃蛇的实现代码

    本文实例为大家分享了JavaScript实现贪吃蛇的具体代码,供大家参考,具体内容如下 首先我们要确定贪吃蛇应有的功能 1.通过键盘的上下左右控制蛇的移动方向 2.边界判定,即蛇头超出边界则游戏结束 3.碰撞判定,即蛇头和食物块发生触碰 4.吃到食物积分加1 具体实现 一.html代码 <div class="container"> <!--小蛇移动的操场--> <div id="playground"> <!--小蛇--&

  • python实现一个简单的贪吃蛇游戏附代码

    前言: 不知道有多少同学跟我一样,最初接触编程的动机就是为了自己做个游戏玩? 今天要给大家分享的是一个 pygame 写的“贪吃蛇”小游戏: “贪吃蛇”这个小游戏在编程学习中的常客,因为: 简单,最基本的游戏元素只需要蛇和食物两个就可以进行了.(打飞机还需要三个元素呢,想想分别是什么?)方向的话只要上下左右4个固定方向就可以了.有基本的数据结构和面向对象的思想在其中.游戏开发本身就会用到很多面向对象的概念,而蛇的身体又是一个天然的“链表”结构,太适合用来练习数据结构了.另外比较有趣的一点是,Py

  • java贪吃蛇游戏编写代码

    本文实例为大家分享了java贪吃蛇游戏展示的具体代码,供大家参考,具体内容如下 1.采用MVC(model.view.control)框架模式 2.包和类的关系树形图为: 3.源码: package com.huai; import Java.awt.Color; import java.awt.Graphics; import java.awt.Point; import java.util.HashSet; import java.util.LinkedList; import java.u

  • Python 实现 贪吃蛇大作战 代码分享

    感觉游戏审核新政实施后,国内手游市场略冷清,是不是各家的新游戏都在排队等审核.媒体们除了之前竞相追捧<Pokemon Go>热闹了一把,似乎也听不到什么声音了.直到最近几天,突然听见好几人都提到同一个游戏,网上还有人表示朋友圈被它刷屏了.(不过现在微信已经悍然屏蔽了它的分享) 这个游戏就是现在iOS免费榜排名第一的<贪吃蛇大作战>.一个简单到不行的游戏,也不知道怎么就火了.反正一款游戏火了,各路媒体.专家总能说出种种套路来,所以我就不发表意见了.不过这实在是一个挺好实现的游戏,于是

  • Python贪吃蛇游戏编写代码

    最近在学Python,想做点什么来练练手,命令行的贪吃蛇一般是C的练手项目,但是一时之间找不到别的,就先做个贪吃蛇来练练简单的语法. 由于Python监听键盘很麻烦,没有C语言的kbhit(),所以这条贪吃蛇不会自己动,运行效果如下: 要求:用#表示边框,用*表示食物,o表示蛇的身体,O表示蛇头,使用wsad来移动 Python版本:3.6.1 系统环境:Win10 类: board:棋盘,也就是游戏区域 snake:贪吃蛇,通过记录身体每个点来记录蛇的状态 game:游戏类 本来还想要个foo

  • pthon贪吃蛇游戏详细代码

    本文实例为大家分享了pthon贪吃蛇游戏的具体代码,供大家参考,具体内容如下 在写Python游戏项目时,最重要的时python中的pygame库.安装pygame库和用法在我CSDN博客另一篇文章上.这里就不详细说了,下边时运行游戏界面. 下边是详细的代码和注释 import pygame,sys,random,time from pygame.locals import * #从pygame模块导入常用的函数和常量 #定义颜色变量 black_colour = pygame.Color(0,

随机推荐