c语言10大经典实例,C语言10大经典实例.doc

C语言10大经典实例

案例一 贪吃蛇游戏

#define N 200

#include

#include

#include

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define DOWN 0x5000

#define UP 0x4800

#define ESC 0x011b

int 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;i snake.node;i++ /*从蛇

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值