c语言小游戏超级玛丽行走简易编码
你们可以自己添加后续程序 我自己不想写了 需要图片的https://pan.baidu.com/s/1p5A5RAY8T0wx2wXU-fqYAA
以下是源代码 需要easyx
#include <stdio.h>
#include <time.h>
#include <conio.h>
#include <stdlib.h>
#include <graphics.h>
#include <windows.h>
IMAGE wall, object, back, grass, water, tree, yme, zme;
struct square
{
int x;
int y;
int left;
int right;
int shape;
struct square *next;
};
struct square *wallhead;
struct square hero;
int i = 0,n=0;//人物的动态
void init();//图片初始化
void squareinit();//方块初始化
void move();//移动
void attition();//实时情况
void init()
{
loadimage(&back, _T("./back.jpg"), 1300, 600);
loadimage(&wall, _T("./wall.jpg"), 50, 50);
loadimage(&object, _T("./object.jpg"), 50, 50);
loadimage(&grass, _T("./grass.jpg"), 50, 50);
loadimage(&water, _T("./water.jpg"), 50, 50);
loadimage(&tree, _T("./tree.jpg"), 50, 100);
loadimage(&yme, _T("./yme1.jpg"), 50, 50);
loadimage(&yme, _T("./yme2.jpg"), 50, 50);
loadimage(&yme, _T("./yme3.jpg"), 50, 50);
loadimage(&zme, _T("./zme1.jpg"), 50, 50);
loadimage(&zme, _T("./zme2.jpg"), 50, 50);
loadimage(&zme, _T("./zme3.jpg"), 50, 50);
hero.x = 600;
hero.y = 400;
}
void squareinit()
{
srand(time(NULL));
struct square *temp, *p;
int i;
temp = (struct square *)malloc(sizeof(struct square));
temp->next = NULL;
for (i = 0; i<840; i++)
{
if (i < 60)//墙
{
temp->shape = 0;
temp->x = i * 50;
temp->y = 0;
}
else if (i >= 60 && i < 120)
{
temp->shape = 0;
temp->x = (i - 60) * 50;
temp->y = 2950;
}
else if (i >= 120 && i < 180)
{
temp->shape = 0;
temp->x = 0;
temp->y = (i - 120) * 50;
}
else if (i >= 180 && i < 240)
{
temp->shape = 0;
temp->x = 2950;
temp->y = (i - 180) * 50;
}
else if (i >= 240 && i < 260)//中间墙
{
temp->shape = 1;
temp->x = (i - 230) * 50;
temp->y = 500;
}
else if (i >= 260 && i < 280)
{
temp->shape = 1;
temp->x = (i - 250) * 50;
temp->y = 1000;
}
else if (i >= 280 && i < 300)
{
temp->shape = 1;
temp->x = (i - 270) * 50;
temp->y = 1500;
}
else if (i >= 300 && i < 320)
{
temp->shape = 1;
temp->x = (i - 290) * 50;
temp->y = 2000;
}
else if (i >= 320 && i < 340)
{
temp->shape = 1;
temp->x = (i - 310) * 50;
temp->y = 2450;
}
else if (i >= 340 && i < 380)
{
temp->shape = 1;
temp->x = 250;
temp->y = (i - 330) * 50;
}
else if (i >= 380 && i < 420)
{
temp->shape = 1;
temp->x = 1500;
temp->y = (i - 370) * 50;
}
else if (i >= 420 && i < 460)//草
{
temp->shape = 2;
temp->x = (i - 410) * 50;
temp->y = 250;
}
else if (i >= 460 && i < 500)
{
temp->shape = 2;
temp->x = (i - 450) * 50;
temp->y = 300;
}
else if (i >= 500 && i < 540)
{
temp->shape = 2;
temp->x = (i - 490) * 50;
temp->y = 2700;
}
else if (i >= 540 && i < 580)
{
temp->shape = 2;
temp->x = (i - 530) * 50;
temp->y = 2750;
}
else if (i >= 580 && i < 600)//水
{
temp->shape = 3;
temp->x = (i - 580) * 50 + 1700;
temp->y = 500;
}
else if (i >= 600 && i < 620)
{
temp->shape = 3;
temp->x = (i - 600) * 50 + 1700;
temp->y = 550;
}
else if (i >= 620 && i < 640)
{
temp->shape = 3;
temp->x = (i - 620) * 50 + 1700;
temp->y = 600;
}
else if (i >= 640 && i < 660)
{
temp->shape = 3;
temp->x = (i - 640) * 50 + 1700;
temp->y = 650;
}
else if (i >= 660 && i < 680)
{
temp->shape = 3;
temp->x = (i - 660) * 50 + 1700;
temp->y = 2000;
}
else if (i >= 680 && i < 700)
{
temp->shape = 3;
temp->x = (i - 680) * 50 + 1700;
temp->y = 2050;
}
else if (i >= 700 && i < 720)
{
temp->shape = 3;
temp->x = (i - 700) * 50 + 1700;
temp->y = 2100;
}
else if (i >= 720 && i < 740)
{
temp->shape = 3;
temp->x = (i - 720) * 50 + 1700;
temp->y = 2150;
}
else if (i >= 740 && i < 760)//树
{
temp->shape = 4;
temp->x = (i - 740) * 50 + 1700;
temp->y = 1000;
}
else if (i >= 760 && i < 780)
{
temp->shape = 4;
temp->x = (i - 760) * 50 + 1700;
temp->y = 1100;
}
else if (i >= 780 && i < 800)
{
temp->shape = 4;
temp->x = (i - 780) * 50 + 1700;
temp->y = 1200;
}
else if (i >= 800 && i < 820)
{
temp->shape = 4;
temp->x = (i - 800) * 50 + 1700;
temp->y = 1600;
}
else if (i >= 820 && i < 840)
{
temp->shape = 4;
temp->x = (i - 820) * 50 + 1700;
temp->y = 2400;
}
p = temp;
temp = (struct square *)malloc(sizeof(struct square));
temp->next = p;
}
wallhead = temp;
}
void move()
{
struct square *walltemp, *temp, *f;
char key;
int result = 0;
while (1)
{
walltemp = wallhead;
if (kbhit())
{
key = getch();
if (key == 'w' || key == 'W')
{
while (walltemp != NULL)
{
walltemp->y += 10;
walltemp = walltemp->next;
}
temp = wallhead;
while (temp != NULL)
{
if ((temp->x >= hero.x&&temp->x <= hero.x + 50) && (temp->y >= hero.y&&temp->y <= hero.y + 50))
{
result = 1;
}
if ((temp->x+50 >= hero.x&&temp->x+50 <= hero.x + 50) && (temp->y >= hero.y&&temp->y <= hero.y + 50))
{
result = 1;
}
if ((temp->x >= hero.x&&temp->x <= hero.x + 50) && (temp->y+50 >= hero.y&&temp->y+50 <= hero.y + 50))
{
result = 1;
}
if ((temp->x+50 >= hero.x&&temp->x+50 <= hero.x + 50) && (temp->y+50 >= hero.y&&temp->y+50 <= hero.y + 50))
{
result = 1;
}
temp = temp->next;
}
if (result == 1)
{
f = wallhead;
while (f != NULL)
{
f->y -= 10;
f = f->next;
}
result = 0;
}
}
else if (key == 's' || key == 'S')
{
while (walltemp != NULL)
{
walltemp->y -= 10;
walltemp = walltemp->next;
}
temp = wallhead;
while (temp != NULL)
{
if ((temp->x >= hero.x&&temp->x <= hero.x + 50) && (temp->y >= hero.y&&temp->y <= hero.y + 50))
{
result = 1;
}
if ((temp->x + 50 >= hero.x&&temp->x + 50 <= hero.x + 50) && (temp->y >= hero.y&&temp->y <= hero.y + 50))
{
result = 1;
}
if ((temp->x >= hero.x&&temp->x <= hero.x + 50) && (temp->y + 50 >= hero.y&&temp->y + 50 <= hero.y + 50))
{
result = 1;
}
if ((temp->x + 50 >= hero.x&&temp->x + 50 <= hero.x + 50) && (temp->y + 50 >= hero.y&&temp->y + 50 <= hero.y + 50))
{
result = 1;
}
temp = temp->next;
}
if (result == 1)
{
f = wallhead;
while (f != NULL)
{
f->y += 10;
f = f->next;
}
result = 0;
}
}
if (key == 'a' || key == 'A')
{
hero.left = 1;
hero.right = 0;
while (walltemp != NULL)
{
walltemp->x += 10;
walltemp = walltemp->next;
}
temp = wallhead;
while (temp != NULL)
{
if ((temp->x >= hero.x&&temp->x <= hero.x + 50) && (temp->y >= hero.y&&temp->y <= hero.y + 50))
{
result = 1;
}
if ((temp->x + 50 >= hero.x&&temp->x + 50 <= hero.x + 50) && (temp->y >= hero.y&&temp->y <= hero.y + 50))
{
result = 1;
}
if ((temp->x >= hero.x&&temp->x <= hero.x + 50) && (temp->y + 50 >= hero.y&&temp->y + 50 <= hero.y + 50))
{
result = 1;
}
if ((temp->x + 50 >= hero.x&&temp->x + 50 <= hero.x + 50) && (temp->y + 50 >= hero.y&&temp->y + 50 <= hero.y + 50))
{
result = 1;
}
temp = temp->next;
}
if (result == 1)
{
f = wallhead;
while (f != NULL)
{
f->x -= 10;
f = f->next;
}
result = 0;
}
}
else if (key == 'd' || key == 'D')
{
hero.left = 0;
hero.right = 1;
while (walltemp != NULL)
{
walltemp->x -= 10;
walltemp = walltemp->next;
}
temp = wallhead;
while (temp != NULL)
{
if ((temp->x >= hero.x&&temp->x <= hero.x + 50) && (temp->y >= hero.y&&temp->y <= hero.y + 50))
{
result = 1;
}
if ((temp->x + 50 >= hero.x&&temp->x + 50 <= hero.x + 50) && (temp->y >= hero.y&&temp->y <= hero.y + 50))
{
result = 1;
}
if ((temp->x >= hero.x&&temp->x <= hero.x + 50) && (temp->y + 50 >= hero.y&&temp->y + 50 <= hero.y + 50))
{
result = 1;
}
if ((temp->x + 50 >= hero.x&&temp->x + 50 <= hero.x + 50) && (temp->y + 50 >= hero.y&&temp->y + 50 <= hero.y + 50))
{
result = 1;
}
temp = temp->next;
}
if (result == 1)
{
f = wallhead;
while (f != NULL)
{
f->x += 10;
f = f->next;
}
result = 0;
}
}
}
attition();
Sleep(10);
cleardevice();
}
}
void attition()
{
struct square *walltemp;
walltemp = wallhead;
BeginBatchDraw();
putimage(0, 0, &back);
if (hero.left == 1 && hero.right == 0)
{
putimage(hero.x, hero.y, &zme);
}
else if (hero.left == 0 && hero.right == 1)
{
putimage(hero.x, hero.y, &yme);
}
while (walltemp != NULL)
{
if (walltemp->shape == 0)
{
putimage(walltemp->x, walltemp->y, &object);
}
else if (walltemp->shape == 1)
{
putimage(walltemp->x, walltemp->y, &wall);
}
else if (walltemp->shape == 2)
{
putimage(walltemp->x, walltemp->y, &grass);
}
else if (walltemp->shape == 3)
{
putimage(walltemp->x, walltemp->y, &water);
}
else if (walltemp->shape == 4)
{
putimage(walltemp->x, walltemp->y, &tree);
}
walltemp = walltemp->next;
}
EndBatchDraw();
n++;
if (n == 15)
{
i++;
n = 0;
}
if (i == 2)
{
i = 0;
}
}
void main()
{
initgraph(1300, 600);
setbkcolor(BLACK);
cleardevice();
init();
squareinit();
move();
system("pause");
closegraph();
}
//BeginBatchDraw();
//EndBatchDraw(); 有什么需要我修改的 可以发消息 0
我看你不错 小甲鱼
6666666666
看看 学校?, 大佬huo冰阔落 6 鉴赏一下 为什么总是在这儿编译错误通不过呢?!#include <graphics.h> rtvr8000 发表于 2019-9-7 17:44
为什么总是在这儿编译错误通不过呢?!#include
easyx下载这个软件我说了啊
心音子谦 发表于 2019-9-7 00:08
学校?,
我是 学医的 这个只是爱好 看看 http://p2.so.qhmsg.com/t01797b97cf4b2dd9c9.jpg 了解一下 修改 康康 一个账号 发表于 2019-9-8 20:32
其实 你只要把图片和 .cpp 下载就好 放在一个文件夹 其他的 你运行时会自动生成