#include <stdio.h>
#include <Windows.h>
#include <time.h>
#include <stdlib.h>
#include <conio.h>
typedef struct snake
{
int x, y;//坐标
int direction;//移动方向 上1 左2 下3 右4
snake * next;
}*Msnake;
struct food
{
int x, y;
}F;
struct food2
{
int x, y;
}F2;
struct food1
{
int x, y;
}F1[800];
struct food3
{
int x, y;
}F12[800];
int ai=0,k=0,ai2=0,k2=0,a=1,b=1;
int level; //等级
int lengt = 4;//蛇长度
int lengt2 = 4;//蛇2长度
int t;//用于计时
int score = 0; //获得成绩
int score2 = 0; //2获得成绩
int l;// 用于记录不同等级的速度
int n = 0;//吃到食物个数
int n2 = 0;//2吃到食物个数
snake * creat();//初始话蛇的位置及长度
snake * creat2();//初始话蛇2的位置及长度
void showMain();//画出终端的大小及命名 画出游戏界面(边框,提示,基本成绩etc)
void gotoxy(int x, int y); //光标的移动
void c(int k); //颜色选择
int time(); //用来计时
void ycgb(int k); //隐藏光标
void game(); //具体游戏运行
void draw(snake * head); //真正画蛇
void newfood(snake * head);// //随机产生食物并保证食物不与蛇的坐标重合
void newfood2(snake * head);// //随机产生食物并保证食物不与蛇2的坐标重合
void newfood1(snake * head); //随机产生障碍并保证障碍不与蛇的坐标重合
void newfood3(snake * head); //随机产生障碍并保证障碍不与蛇2的坐标重合
int random(); //用来输出随机值
int direc(char ch);//方向键设置
int direc2(char ch);//方向键设置
void key(snake * head,snake*head1, snake * p,char ch); //改变蛇的方向功能的实现
void key2(snake * head,snake*head1, snake * p2,char ch); //改变蛇2的方向功能的实现
void pause(snake * head,snake*head1, snake * p,char ch); //暂停功能的实现
void cls();//清屏
void cls2();//清屏 2
int judge(int a,int b);//进行哪一方失败判断
int main()
{
ycgb(0);
showMain();
game();
while (1)
{
cls();
gotoxy(32,10);
c(10);
printf("按回车可重新开始游戏!");
gotoxy(34,11);
printf("按Esc可离开游戏!");
cls2();
gotoxy(114,10);
printf("按回车可重新开始游戏!");
gotoxy(116,11);
printf("按Esc可离开游戏!");
char ch;
ch = getch();
while (ch != 13 && ch != 27)
{
ch = getch();
}
if (ch == 13)
{
showMain();
game();
}
else break;
}
return 0;
}
int direc(char ch)//方向键设置
{
if (ch == 119) return 1;
if (ch == 97) return 2;
if (ch == 115) return 3;
if (ch == 100) return 4;
return 0;
}
int direc2(char ch)//2方向键设置
{
ch = getch();
if (ch == 72) return 1;
if (ch == 80) return 3;
if (ch == 75) return 2;
if (ch == 77) return 4;
return 0;
}
snake * creat() // 初始话蛇的位置及长度
{
snake *head, *p, *q;
head = (snake *) malloc (sizeof(snake));
head->x = 28;
head->y = 10;
head->direction = 4;
head->next = NULL;
p = head;
for (int i = 0; i < 3; i++)
{
q = (snake *) malloc (sizeof(snake));
p->next = q;
q->next = NULL;
q->x = p->x + 2;
q->y = p->y;
q->direction = p->direction;
p = q;
}
return head;
}
snake * creat2() // 初始话蛇2的位置及长度
{
snake *head2, *p, *q;
head2 = (snake *) malloc (sizeof(snake));
head2->x = 110;
head2->y = 10;
head2->direction = 4;
head2->next = NULL;
p = head2;
for (int i = 0; i < 3; i++)
{
q = (snake *) malloc (sizeof(snake));
p->next = q;
q->next = NULL;
q->x = p->x + 2;
q->y = p->y;
q->direction = p->direction;
p = q;
}
return head2;
}
void showMain()//画出终端的大小及命名 画出游戏界面(边框,提示,基本成绩etc)
{
int i;
system("title 贪吃蛇.生死局双人");
system("mode con cols=162 lines=35");
gotoxy(28, 10);
c(10);
printf("欢迎进入贪吃蛇的世界!!");
gotoxy(108, 10);
c(10);
printf("欢迎进入贪吃蛇的世界!!");
gotoxy(0, 0);
c(3);
for (i = 0; i < 40; i++)
{
printf("▇");
Sleep(30);
}
for (i = 1; i < 25; i++)
{
gotoxy(78, i);
printf("▇");
Sleep(30);
}
for (i = 39; i >= 0; i--)
{
gotoxy(2*i, 25);
printf("▇");
Sleep(30);
}
for (i = 24; i >= 1; i--)
{
gotoxy(0, i);
printf("▇");
Sleep(30);
}
gotoxy(82, 0);
c(3);
for (i = 0; i < 40; i++)
{
printf("▇");
Sleep(30);
}
for (i = 1; i < 25; i++)
{
gotoxy(160, i);
printf("▇");
Sleep(30);
}
for (i = 39; i >= 0; i--)
{
gotoxy(2*i+82, 25);
printf("▇");
Sleep(30);
}
for (i = 24; i >= 1; i--)
{
gotoxy(82, i);
printf("▇");
Sleep(30);
}
c(10);
gotoxy(30, 11);
printf("请选择难度(0~6):");
scanf("%d", &level);
switch(level)
{
case 1: l = 600;break;
case 2: l = 400;break;
case 3: l = 200;break;
case 4: l = 150;break;
case 5: l = 100;break;
case 6: l = 60;break;
default: l = 2333; break;
}
cls();
cls2();
c(15);
gotoxy(4, 26);
printf("等级: %d", level);
gotoxy(20, 26);
printf("分数: %d", score);
gotoxy(4, 27);
printf("当前长度: %d", lengt);
gotoxy(20, 27);
printf("已吃食物个数: %d", n);
gotoxy(45, 26);
printf("移动:↑↓←→");
gotoxy(45, 27);
printf("暂停or继续:空格");
c(13);
gotoxy(86, 26);
printf("等级: %d", level);
gotoxy(106, 26);
printf("分数: %d", score);
gotoxy(86, 27);
printf("当前长度: %d", lengt);
gotoxy(106, 27);
printf("已吃食物个数: %d", n);
gotoxy(127, 26);
printf("移动:↑↓←→");
gotoxy(127, 27);
printf("暂停or继续:空格");
gotoxy(64,30);
c(10);
printf("触碰绿色球游戏结束!黄色球能让你的小可爱生长!");
gotoxy(74,31);
printf("生长到一定长度会升级哦!");
gotoxy(150, 33);
printf("制作:秋志");
}
void key(snake * head,snake* head1, snake * p,char ch)//改变蛇1的方向的实现
{
int i, j;
i = direc(ch);
j = p->direction;
if ((i==1&&j==3)||(i==2&&j==4)||(i==3&&j==1)||(i==4&&j==2));//判断是否与原有方向相冲突
else
p->direction = i;
}
void pause(snake * head,snake*head1, snake * p2,char ch)//暂停功能的实现
{
int i;
if(a==1)
{
cls();
gotoxy(36,10);
printf("暂停中");
}
if(b==1)
{
cls2();
gotoxy(118,10);
printf("暂停中");
}
while (1)
{
if (kbhit() && getch() == 32)
{
if(a==1)
{
gotoxy(36,10);
printf(" ");
draw(head);
gotoxy(F.x, F.y);
c(12);
printf("●");
for(i=0;i<ai;i++)
{
gotoxy(F1[i].x,F1[i].y);
c(10);
printf("●");
}
}
if(b==1)
{
gotoxy(118,10);
printf(" ");
draw(head1);
gotoxy(F2.x, F2.y);
c(12);
printf("●");
for(i=0;i<ai2;i++)
{
gotoxy(F12[i].x,F12[i].y);
c(10);
printf("●");
}
}
break;
}
}
}
void key2(snake * head,snake*head1, snake * p2,char ch)//改变蛇2的方向与暂停功能的实现
{
int i,j;
i = direc2(ch);
j = p2->direction;
if ((i==1&&j==3)||(i==2&&j==4)||(i==3&&j==1)||(i==4&&j==2));//判断是否与原有方向相冲突
没有合适的资源?快使用搜索试试~ 我知道了~
C语言小项目小游戏(适合初学者)
共17个文件
exe:8个
cpp:8个
rar:1个
5星 · 超过95%的资源 需积分: 0 4 下载量 134 浏览量
2024-03-01
11:18:51
上传
评论 2
收藏 2.17MB ZIP 举报
温馨提示
C语言小项目小游戏(适合初学者) 俄罗斯方块、学生管理系统、文件合成器、贪吃蛇 、贪吃蛇.双人生死局、迷宫.寻(双人)、迷宫
资源推荐
资源详情
资源评论
收起资源包目录
c-master.zip (17个子文件)
c-master
贪吃蛇 死
贪吃蛇死.exe 1.07MB
贪吃蛇死.cpp 9KB
贪吃蛇生
学生管理系统.rar 49KB
迷宫出
迷宫.粗.cpp 6KB
迷宫.粗.exe 1.07MB
俄罗斯方块
贪吃蛇 生死局
贪吃蛇.生死局.cpp 11KB
贪吃蛇.生死局.exe 1.07MB
迷宫.寻(双人)
迷宫.寻(双人).exe 1.07MB
迷宫.寻(双人).cpp 6KB
学生管理系统
学生管理系统.cpp 9KB
学生管理系统.exe 158KB
文件合成器
迷宫.寻(exit)
迷宫.寻(双人).exe 1.07MB
迷宫.寻(双人).cpp 6KB
迷宫.寻
迷宫.寻.cpp 5KB
迷宫.寻.exe 1.07MB
贪吃蛇.双人生死局
贪吃蛇.生死局 双人.exe 1.08MB
贪吃蛇.生死局 双人.cpp 20KB
共 17 条
- 1
资源评论
- weixin_654498842024-03-05里面的程序很不错,有了进一步理解 #内容详尽
- 大圣2024-03-05很适合我这种小白学习C语音,练习程序代码
阿齐Archie
- 粉丝: 1w+
- 资源: 2301
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功