精华内容
下载资源
问答
  • C语言小游戏源码
    千次阅读
    2021-05-19 12:45:48

    在此提供C语言小游戏源码,包括扫雷游戏,贪吃蛇游戏,时钟等。

    运行时只要把红色部分改为自己电脑上TC目录的BGI分目录即可。

    //扫雷游戏

    #include

    #include

    #include

    #define LEFTPRESS 0xff01

    #define LEFTCLICK 0xff10

    #define LEFTDRAG 0xff19

    #define MOUSEMOVE 0xff08

    struct

    {

    int num;

    int roundnum;

    int flag;

    }Mine[10][10];

    int gameAGAIN=0;

    int gamePLAY=0;

    int mineNUM;

    char randmineNUM[3];

    int Keystate;

    int MouseExist;

    int MouseButton;

    int MouseX;

    int MouseY;

    void Init(void);

    void MouseOn(void);

    void MouseOff(void);

    void MouseSetXY(int,int);

    int LeftPress(void);

    int RightPress(void);

    void MouseGetXY(void);

    void Control(void);

    void GameBegain(void);

    void DrawSmile(void);

    void DrawRedflag(int,int);

    void DrawEmpty(int,int,int,int);

    void GameOver(void);

    void GameWin(void);

    int MineStatistics(int,int);

    int ShowWhite(int,int);

    void GamePlay(void);

    void Close(void);

    void main(void)

    {

    Init();

    Control();

    Close();

    }

    void Init(void)

    {

    int gd=DETECT,gm;

    initgraph(&gd,&gm,"D:\\tc20\\BGI");

    }

    void Close(void)

    {

    closegraph();

    }

    void MouseOn(void)

    {

    _AX=0x01;

    geninterrupt(0x33);

    }

    void MouseOff(void)

    {

    _AX=0x02;

    geninterrupt(0x33);

    }

    void MouseSetXY(int x,int y)

    {

    _CX=x;

    _DX=y;

    _AX=0x04;

    geninterrupt(0x33);

    }

    int LeftPress(void)

    {

    _AX=0x03;

    geninterrupt(0x33);

    return(_BX&1);

    }

    int RightPress(void)

    {

    _AX=0x03;

    geninterrupt(0x33);

    return(_BX&2);

    }

    void MouseGetXY(void)

    {

    _AX=0x03;

    geninterrupt(0x33);

    MouseX=_CX;

    MouseY=_DX;

    }

    void Control(void)

    {

    int gameFLAG=1;

    while(1)

    {

    if(gameFLAG)

    {

    GameBegain();

    GamePlay();

    if(gameAGAIN==1)

    {

    gameAGAIN=0;

    continue;

    }

    }

    MouseOn();

    gameFLAG=0;

    if(LeftPress())

    {

    MouseGetXY();

    if(MouseX>280&&MouseX<300&&MouseY>65&&MouseY<85)

    {

    gameFLAG=1;

    continue;

    }

    }

    if(kbhit())

    break;

    }

    MouseOff();

    }

    void DrawSmile(void)

    {

    setfillstyle(SOLID_FILL,YELLOW);

    fillellipse(290,75,10,10);

    setcolor(YELLOW);

    setfillstyle(SOLID_FILL,BLACK);

    fillellipse(285,75,2,2);

    fillellipse(295,75,2,2);

    setcolor(BLACK);

    bar(287,80,293,81);

    }

    void DrawRedflag(int i,int j)

    {

    setcolor(7);

    setfillstyle(SOLID_FILL,RED);

    bar(198+j*20,95+i*20,198+j*20+5,95+i*20+5);

    setcolor(BLACK);

    line(198+j*20,95+i*20,198+j*20,95+i*20+10);

    }

    void DrawEmpty(int i,int j,int mode,int color)

    {

    setcolor(color);

    setfillstyle(SOLID_FILL,color);

    if(mode==0)

    bar(200+j*20-8,100+i*20-8,200+j*20+8,100+i*20+8);

    else

    if(mode==1)

    bar(200+j*20-7,100+i*20-7,200+j*20+7,100+i*20+7);

    }

    void GameBegain(void)

    {

    int i,j;

    cleardevice();

    if(gamePLAY!=1)

    {

    MouseSetXY(290,70);

    MouseX=290;

    MouseY=70;

    }

    gamePLAY=1;

    mineNUM=0;

    setfillstyle(SOLID_FILL,7);

    bar(190,60,390,290);

    for(i=0;i<10;i++)

    for(j=0;j<10;j++)

    DrawEmpty(i,j,0,8);

    setcolor(7);

    DrawSmile();

    randomize();//__page_break__

    for(i=0;i<10;i++)

    for(j=0;j<10;j++)

    {

    Mine[i][j].num=random(8);

    if(Mine[i][j].num==1)

    mineNUM++;

    else

    Mine[i][j].num=2;

    Mine[i][j].flag=0;

    }

    sprintf(randmineNUM,"%d",mineNUM);

    setcolor(1);

    settextstyle(0,0,2);

    outtextxy(210,70,randmineNUM);

    mineNUM=100-mineNUM;

    MouseOn();

    }

    void GameOver(void)

    {

    int i,j;

    setcolor(0);

    for(i=0;i<10;i++)

    for(j=0;j<10;j++)

    if(Mine[i][j].num==1)

    {

    DrawEmpty(i,j,0,RED);

    setfillstyle(SOLID_FILL,BLACK);

    fillellipse(200+j*20,100+i*20,7,7);

    }

    }

    void GameWin(void)

    {

    setcolor(11);

    settextstyle(0,0,2);

    outtextxy(230,30,"YOU WIN!");

    }

    int MineStatistics(int i,int j)

    {

    int nNUM=0;

    if(i==0&&j==0)

    {

    if(Mine[0][1].num==1)

    nNUM++;

    if(Mine[1][0].num==1)

    nNUM++;

    if(Mine[1][1].num==1)

    nNUM++;

    }

    else

    if(i==0&&j==9)

    {

    if(Mine[0][8].num==1)

    nNUM++;

    if(Mine[1][9].num==1)

    nNUM++;

    if(Mine[1][8].num==1)

    nNUM++;

    }

    else

    if(i==9&&j==0)

    {

    if(Mine[8][0].num==1)

    nNUM++;

    if(Mine[9][1].num==1)

    nNUM++;

    if(Mine[8][1].num==1)

    nNUM++;

    }

    else

    if(i==9&&j==9)

    {

    if(Mine[9][8].num==1)

    nNUM++;

    if(Mine[8][9].num==1)

    nNUM++;

    if(Mine[8][8].num==1)

    nNUM++;

    }

    else if(j==0)

    {

    if(Mine[i][j+1].num==1)

    nNUM++;

    if(Mine[i+1][j].num==1)

    nNUM++;

    if(Mine[i-1][j].num==1)

    nNUM++;

    if(Mine[i-1][j+1].num==1)

    nNUM++;

    if(Mine[i+1][j+1].num==1)

    nNUM++;

    }

    else if(j==9)

    {

    if(Mine[i][j-1].num==1)

    nNUM++;

    if(Mine[i+1][j].num==1)

    nNUM++;

    if(Mine[i-1][j].num==1)

    nNUM++;

    if(Mine[i-1][j-1].num==1)

    nNUM++;

    if(Mine[i+1][j-1].num==1)

    nNUM++;

    }

    else if(i==0)

    {

    if(Mine[i+1][j].num==1)

    nNUM++;

    if(Mine[i][j-1].num==1)

    nNUM++;

    if(Mine[i][j+1].num==1)

    nNUM++;

    if(Mine[i+1][j-1].num==1)

    nNUM++;

    if(Mine[i+1][j+1].num==1)

    nNUM++;

    }

    else if(i==9)

    {

    if(Mine[i-1][j].num==1)

    nNUM++;

    if(Mine[i][j-1].num==1)

    nNUM++;

    if(Mine[i][j+1].num==1)

    nNUM++;

    if(Mine[i-1][j-1].num==1)

    nNUM++;

    if(Mine[i-1][j+1].num==1)

    nNUM++;

    }

    else

    {

    if(Mine[i-1][j].num==1)

    nNUM++;

    if(Mine[i-1][j+1].num==1)

    nNUM++;

    if(Mine[i][j+1].num==1)

    nNUM++;

    if(Mine[i+1][j+1].num==1)

    nNUM++;

    if(Mine[i+1][j].num==1)

    nNUM++;

    if(Mine[i+1][j-1].num==1)

    nNUM++;

    if(Mine[i][j-1].num==1)

    nNUM++;

    if(Mine[i-1][j-1].num==1)

    nNUM++;

    }//__page_break__

    return (nNUM);

    }

    int ShowWhite(int i,int j)

    {

    if(Mine[i][j].flag==1||Mine[i][j].num==0)

    return;

    mineNUM--;

    if(Mine[i][j].roundnum==0&&Mine[i][j].num!=1)

    {

    DrawEmpty(i,j,1,7);

    Mine[i][j].num=0;

    }

    else

    if(Mine[i][j].roundnum!=0)

    {

    DrawEmpty(i,j,0,8);

    sprintf(randmineNUM,"%d",Mine[i][j].roundnum);

    setcolor(RED);

    outtextxy(195+j*20,95+i*20,randmineNUM);

    Mine[i][j].num=0;

    return ;

    }

    if(i!=0&&Mine[i-1][j].num!=1)

    ShowWhite(i-1,j);

    if(i!=0&&j!=9&&Mine[i-1][j+1].num!=1)

    ShowWhite(i-1,j+1);

    if(j!=9&&Mine[i][j+1].num!=1)

    ShowWhite(i,j+1);

    if(j!=9&&i!=9&&Mine[i+1][j+1].num!=1)

    ShowWhite(i+1,j+1);

    if(i!=9&&Mine[i+1][j].num!=1)

    ShowWhite(i+1,j);

    if(i!=9&&j!=0&&Mine[i+1][j-1].num!=1)

    ShowWhite(i+1,j-1);

    if(j!=0&&Mine[i][j-1].num!=1)

    ShowWhite(i,j-1);

    if(i!=0&&j!=0&&Mine[i-1][j-1].num!=1)

    ShowWhite(i-1,j-1);

    }

    void GamePlay(void)

    {

    int i,j,Num;

    for(i=0;i<10;i++)

    for(j=0;j<10;j++)

    Mine[i][j].roundnum=MineStatistics(i,j);

    while(!kbhit())

    {

    if(LeftPress())

    {

    MouseGetXY();

    if(MouseX>280&&MouseX<300&&MouseY>65&&MouseY<85)

    {

    MouseOff();

    gameAGAIN=1;

    break;

    }

    if(MouseX>190&&MouseX<390&&MouseY>90&&MouseY<290)

    {

    j=(MouseX-190)/20;

    i=(MouseY-90)/20;

    if(Mine[i][j].flag==1)

    continue;

    if(Mine[i][j].num!=0)

    {

    if(Mine[i][j].num==1)

    {

    MouseOff();

    GameOver();

    break;

    }

    else

    {

    MouseOff();

    Num=MineStatistics(i,j);

    if(Num==0)

    ShowWhite(i,j);

    else

    {

    sprintf(randmineNUM,"%d",Num);

    setcolor(RED);

    outtextxy(195+j*20,95+i*20,randmineNUM);

    mineNUM--;

    }

    MouseOn();

    Mine[i][j].num=0;

    if(mineNUM<1)

    {

    GameWin();

    break;

    }

    }

    }

    }

    }

    if(RightPress())

    {

    MouseGetXY();

    if(MouseX>190&&MouseX<390&&MouseY>90&&MouseY<290)

    {

    j=(MouseX-190)/20;

    i=(MouseY-90)/20;

    MouseOff();

    if(Mine[i][j].flag==0&&Mine[i][j].num!=0)

    {

    DrawRedflag(i,j);

    Mine[i][j].flag=1;

    }

    else

    if(Mine[i][j].flag==1)

    {

    DrawEmpty(i,j,0,8);

    Mine[i][j].flag=0;

    }

    }

    MouseOn();

    sleep(1);

    }

    }

    }

    //时钟

    #include

    #include

    #include

    #define pi 3.1415926

    #define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300;

    #define Y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240;

    #define d(a,b,c) X(a,b,c);Y(a,b,c);line(300,240,x,y)

    void init()

    {int i,l,x1,x2,y1,y2;

    setbkcolor(0);

    circle(300,240,200);

    circle(300,240,205);

    circle(300,240,5);

    for(i=0;i<60;i++)

    {if(i%5==0) l=15;

    else l=5;

    x1=200*cos(i*6*pi/180)+300;

    y1=200*sin(i*6*pi/180)+240;

    x2=(200-l)*cos(i*6*pi/180)+300;

    y2=(200-l)*sin(i*6*pi/180)+240;

    line(x1,y1,x2,y2);

    }

    }

    main()

    {

    int x,y;

    int gd=VGA,gm=2;

    unsigned char h,m,s;

    struct time t[1];

    initgraph(&gd,&gm,"d:\\tc20\\BGI");

    init();

    setwritemode(1);

    gettime(t);

    h=t[0].ti_hour;

    m=t[0].ti_min;

    s=t[0].ti_sec;

    setcolor(7);

    d(150,h,30);

    setcolor(14);

    d(170,m,6);

    setcolor(4);

    d(190,s,6);

    while(!kbhit())

    {while(t[0].ti_sec==s)

    gettime(t);

    sound(400);

    delay(70);

    sound(200);

    delay(30);

    nosound();

    setcolor(4);

    d(190,s,6);

    s=t[0].ti_sec;

    d(190,s,6);

    if (t[0].ti_min!=m)

    {

    setcolor(14);

    d(170,m,6);

    m=t[0].ti_min;

    d(170,m,6);

    }

    if (t[0].ti_hour!=h)

    { setcolor(7);

    d(150,h,30);

    h=t[0].ti_hour;

    d(150,h,30);

    sound(1000);

    delay(240);

    nosound();

    delay(140);

    sound(2000);

    delay(240);

    nosound();

    }

    }

    getch();

    closegraph();

    }

    //贪吃蛇

    #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;

    }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,"D:\\tc20\\BGI");

    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(void)

    {

    randomize();

    food.yes=1;

    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;

    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

    {

    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

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

    snake.y[i]-10);

    delay(gamespeed);

    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();

    PrScore();

    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,"score:%d",score);

    outtextxy(55,20,str);

    }

    void Close(void)

    {

    getch();

    closegraph();

    }

    //鼠标控制

    #include

    #include

    #include

    #include

    #include

    #include "graphics.h"

    #define R 15

    void initgr(void)

    {

    int gd = DETECT, gm = 0;

    initgraph(&gd, &gm, "D:\\TC20\\BGI");

    }

    void getmouse(int *x,int *y,int *key)

    {

    union REGS inregs,outregs;

    inregs.x.ax=3;

    int86(0x33,&inregs,&outregs);

    *x=outregs.x.cx;

    *y=outregs.x.dx;

    *key=outregs.x.bx;

    }

    void visbilemouse()

    {

    union REGS inregs,outregs;

    inregs.x.ax=0x01;

    int86(0x33,&inregs,&outregs);

    }

    void mouse(int *x,int *y,int *z)

    {

    int a=0,b=0,c=0,a_old=0,b_old=0;

    int *ball;

    ball=malloc(imagesize(a,b,a+R,b+R));

    getimage(a,b,a+R,b+R,ball);

    while(c==0)

    {

    getmouse(&a,&b,&c);

    if(a<0) a=0;

    if(b<0) b=0;

    if(a>getmaxx()-R) a=getmaxx()-R;

    if(b>getmaxy()-R) b=getmaxy()-R;

    if(a!=a_old || b!=b_old)

    {

    putimage(a_old,b_old,ball,0);

    getimage(a,b,a+R,b+R,ball);

    setcolor(GREEN);

    setlinestyle(0,0,1);

    line(a,b,a+R,b+R/2);

    line(a,b,a+R/2,b+R);

    line(a+R,b+R/2,a+R/2,b+R);

    line(a+R*3/4,b+R*3/4,a+R,b+R);

    }

    a_old=a;b_old=b;

    }

    *x=a;*y=b;*z=c;

    putimage(a,b,ball,0);

    free(ball);

    }

    void main()

    {

    int x,y,z;

    initgr();

    visbilemouse();

    do

    {

    setcolor(WHITE);

    rectangle(175,8,220,25);

    outtextxy(180,10,"exit");

    mouse(&x,&y,&z);

    if(z==1)

    {

    setlinestyle(0,0,1);

    setcolor(12);

    circle(x,y,1);

    }

    if(z==2)

    {setfillstyle(1,BLACK);

    bar(0,0,getmaxx(),getmaxy());

    }

    }while(x<175 || x>220 ||

    y<8 || y>25);

    closegraph();

    }

    本源码整理于互联网

    更多相关内容
  • 62套C语言小游戏源码

    2018-12-31 19:35:15
    这是楼主珍藏的62套C语言小游戏源码,包含吃豆人、俄罗斯方块、别踩白块等诸多经典小游戏。感兴趣的朋友可以下载下来研究。
  • c语言小游戏c语言项目源码大全合集(60例): c语言24点游戏源码 c语言Turbo C下的俄罗斯方块 c语言UDP传输系统源码 c语言万年历源码 c语言五子棋源码 c语言俄罗斯方块 c语言做的一个任务管理器 c语言做的播放器...
  • C语言入门小程序,提高学习兴趣。只用到C语言最基本的知识。纯C语言写的一个简单的汉诺塔小游戏,适合初学C语言的同学交流探讨。
  • 收集整理的简单易懂的60套C语言小游戏源代码(可运行,供学习设计参考): ...这是楼主珍藏的62套C语言小游戏源码,包含吃豆人、俄罗斯方块、别踩白块等诸多经典小游戏。感兴趣的朋友可以下载下来研究。
  • c语言图像记忆游戏 游戏简介:该游戏是一个简单的记忆游戏。由玩家输入地图的边长,\n 然后随机产生地图,由玩家记忆(时间不能超过两分钟),记\n 忆完成后地图消失。\n 中途不能撞墙
  • 个人收集,简单易懂,思路清晰,直接运行。 包括推箱子、超级玛丽、俄罗斯方块等游戏。比淘宝的项目好。买到就是赚到!
  • C语言 2048小游戏源码

    2019-01-31 20:57:49
    本程序是用c语言编写的一款简易2048小游戏,界面美观。
  • 【实例简介】【实例截图】见截图【核心代码】#include #include #include #include int c=0,a[8][8]= {0},n=0,x,y,b[8][8]= {0};int t=0;int main() {T1:system("color 0f");srand(time(0));printf("■ ■☆步 数:%...

    【实例简介】

    【实例截图】见截图

    b77d15ab5b1c00e1740d48eebeb326f8.gif

    d0f05cbbbdbf351a2a1f7ee8489d8793.png

    【核心代码】

    #include

    #include

    #include

    #include

    int c=0,a[8][8]= {0},n=0,x,y,b[8][8]= {0};

    int t=0;

    int main() {

    T1:

    system("color 0f");

    srand(time(0));

    printf("■ ■☆步 数:%d\n■ ■☆操作方法:\n■ ■☆输入数字移动滑块,3~6选择难度 \n■ ■☆关 于:\n■ ■☆华容道V1.0\n■ ■☆作者:根根本根\n",c);

    printf("☆☆☆☆☆☆☆☆☆☆☆");

    printf("■■■■■■■■■■■■☆☆☆☆☆☆☆☆☆☆☆☆☆\n");

    scanf("%d",&n);

    if(n==0) {

    return 0;

    }

    for(int i=1; i

    y=rand()%n 1;

    x=rand()%n 1;

    if(a[x][y]!=0) {

    i--;

    } else {

    a[x][y]=i;

    }

    }

    for(int i=1; i<=n; i ) {

    for(int j=1; j<=n; j ) {

    printf("%2d ",a[i][j]);

    }

    printf("\n");

    }

    while(t==0) {

    int v=0,st=n*n;

    char e;

    e=getch();

    for(int i=1; i<=n; i ) {

    for(int j=1; j<=n; j ) {

    if(a[i][j]==0) {

    switch(e) {//up=72,down=80,right=77,left=75

    case 72:

    a[i][j]=a[i 1][j];

    a[i 1][j]=0;

    break;

    case 80:

    a[i][j]=a[i-1][j];

    a[i-1][j]=0;

    break;

    case 75:

    a[i][j]=a[i][j 1];

    a[i][j 1]=0;

    break;

    case 77:

    a[i][j]=a[i][j-1];

    a[i][j-1]=0;

    break;

    }

    v=1;

    break;

    }

    }

    if(v) {

    break;

    }

    }

    //if(a[x 1][y]==0) {

    //a[x 1][y]=e;

    //a[x][y]=0;

    //} else if(a[x][y 1]==0) {

    //a[x][y 1]=e;

    //a[x][y]=0;

    //} else if(a[x-1][y]==0) {

    //a[x-1][y]=e;

    //a[x][y]=0;

    //} else if(a[x][y-1]==0) {

    //a[x][y-1]=e;

    //a[x][y]=0;

    //}

    c ;

    system("cls");

    printf("■ ■☆步 数:%d\n■ ■☆操作方法:\n■ ■☆输入数字移动滑块,3~6选择难度 \n■ ■☆关 于:\n■ ■☆华容道V1.0\n■ ■☆作者:根根本根\n",c);

    printf("☆☆☆☆☆☆☆☆☆☆☆");

    printf("■■■■■■■■■■■■☆☆☆☆☆☆☆☆☆☆☆☆☆\n");

    for(int i=1; i<=n; i ) {

    for(int j=1; j<=n; j ) {

    printf("%2d ",a[i][j]);

    }

    printf("\n");

    }

    if(a[n][n]!=0) {

    continue;

    }

    t=1;

    for(int i=1; i<=n; i ) {

    for(int j=1; j<=n; j ) {

    if(a[i][j]!=(i-1)*n j&&(i!=n||j!=n)) {

    t=0;

    break;

    }

    }

    if(t==0) {

    break;

    }

    }

    }

    system("cls");

    printf("恭喜你你用了%d步完成了%d阶华容道!\n想再来一局按空格\n",c/2,n);

    char z=getchar();

    if(z==' ') {

    system("cls");

    goto T1;

    }

    Sleep(3000);

    return 0;

    }

    展开全文
  • 62套C语言小游戏源码.zip
  • 实践操作是学习知识的高效途径,本程序是作者在学习C语言和easyx图形库是开发的小游戏本程序,是基于easyx和C语言的简易贪吃蛇游戏源码,适合初学者参考
  • C语言实现贪吃蛇小游戏,程序为控制台版本,开发环境是VS2010专业版。
  • 收集整理的简单易懂的60套C语言小游戏源代码(可运行,供学习设计参考): c语言24点游戏源码 c语言Turbo C下的俄罗斯方块 c语言UDP传输系统源码 c语言万年历源码 c语言五子棋源码 c语言俄罗斯方块 c语言做的一个...
  • 6.选中开始按钮后回车游戏开始,猴子可以移动接水果。按空格可以暂停。 7.游戏可用键盘左右箭头控制小猴左右移动接水果。 8.水果有3种不同类型,不同水果下落的速度不同,得分不一样。 9.游戏也有炸弹下落,接到...
  • 几个C语言小游戏源码

    2010-02-24 17:44:11
    几个C语言小游戏源码,很好用的,是学习c语言的好范例。喜欢能斑竹到大家。 第一:录制脚本 第二:脚本回放 第三:脚本优化 插入事物 插入集合点 设置参数 检查点 在事物之后添加一个log 日志输出函数 lr_log_...
  • c语言盒子接球游戏源码.zip源码C++语言项目源码c语言盒子接球游戏源码.zip源码C++语言项目源码 1.适合学生做毕业设计参考模板。 2.适合程序员学习开发研究用 3.适合公司做项目参考技术使用用
  • 一款简单的C语言小游戏,坦克大战小游戏,还可以再加功能。
  • 希望我的作品能抛砖引玉, 给大家一点启发! ===================================================== 待扩展的功能: 难度 更多关卡 商店 分数排行榜 岸上的障碍 背景音乐 音效 鼠标控制 时间限制 等 =======...
  • c语言种地要浇水游戏源码.zip
  • 这是楼主珍藏的C语言小游戏源码,包含2048,打飞机简版,Flappy Bird ,飞机大战,弹跳球,Initial commit,贪吃蛇,俄罗斯方块,猜拳小游戏,五子棋等诸多经典小游戏。感兴趣的朋友可以下载下来研究
  • C语言接鸡蛋游戏源码

    2016-07-26 13:19:52
    C语言制作 接鸡蛋各大版本【源码加注释】【原创】
  • 纯C的打字游戏代码,通过本代码你可了解下C语言从键盘缓冲区内直接读出ASC码、创建移动字符对象时钟、创建产生字符对象时钟、初始化随机数种子、用填充矩形来消隐字符、删除字符对象后马上再创建一个等编程技巧...
  • c语言小游戏源码 c语言初学练手专用 飞机移动 贪吃蛇 等
  • 玩转c语言——c语言小游戏 迷宫小游戏(附源码

    千次阅读 多人点赞 2021-10-02 08:35:24
    要制作迷宫小游戏,我们要利用二维数组搭建场景,制作一个简易的迷宫 #include<stdio.h> #include<stdlib.h> #include<windows.h> #include<conio.h>//小游戏所需的所有头文件 int main...

    第一步

    要制作迷宫小游戏,我们要利用二维数组搭建场景,制作一个简易的迷宫

    #include<stdio.h>
    #include<stdlib.h>
    #include<windows.h>
    #include<conio.h>//小游戏所需的所有头文件
    int main()
    {
    char a[100][100] = {"######",
    					"#o #  ",
    					"# ## #",
    					"#  # #",
    					"##   #",
    					"######" };//迷宫出口为a[1][5]
    //我们需要输出这个迷宫。
    for (int i = 0; i < 6; i++)  //通过数组的遍历,输出定义的迷宫;
    		puts(a[i]);
    return 0;
    }

    第一步迷宫制作完成后,我们就应该考虑如何让小球移动起来

    为了游戏体验感

    我们使用W,S,A,D来分别小球控制上下左右的移动

    具体操作

    在游戏中我们需要输入W,S,A,D中的一个,来控制小球的移动

    以W为例我们来看看小球上移时程序该怎么运行

    我们想让小球向上移动,基本条件是小球上方没有‘#’

    然后小球才可以向上移动;

    小球上移后行数X+1,列数Y不变

    即小球下一个的位置在a[x+1][y]

     这就是我们点击W后小球上移的程序原理

     注:为了游戏的体验感,我们输入WSAD是使用getch()

            各位如果有兴趣也可以试一下使用getchar和getche是什么效果(吐血小游戏)

    ch = _getch();
    if (ch == 'a')
    		{
    			if (a[x][y - 1] != '#')
    			{
    				a[x][y] = ' ';
    				y--;
    				a[x][y] = 'o';
    			}
    		}

    其他的 S,A,D,也是类似的

    S原理

    ch = _getch();
    		if (ch == 's')
    		{
    			if (a[x + 1][y] != '#')
    			{
    				a[x][y] = ' ';
    				x++;
    				a[x][y] = 'o';
    			}
    		}

    A原理

    if (ch == 'a')
    		{
    			if (a[x][y - 1] != '#')
    			{
    				a[x][y] = ' ';
    				y--;
    				a[x][y] = 'o';
    			}
            }

     D原理

    if (ch == 'd')
    		{
    			if (a[x][y + 1] != '#')
    			{
    				a[x][y] = ' ';
    				y++;
    				a[x][y] = 'o';
    			}
    		}

    我们在利用WSAD移动时,不希望小球出现在原来的位置

    我们需要在每一次输入WSAD时用system(“cls”)进行一次清零; 


     我们需要利用while循环是程序在未到达出口时持续运行

    	while (x != 1 || y != 5)
    	{
    		ch = _getch();
    		if (ch == 's')
    		{
    			if (a[x + 1][y] != '#')
    			{
    				a[x][y] = ' ';
    				x++;
    				a[x][y] = 'o';
    			}
    		}
    		if (ch == 'w')
    		{
    			if (a[x - 1][y] != '#')
    			{
    				a[x][y] = ' ';
    				x--;
    				a[x][y] = 'o';
    			}
    		}
    		if (ch == 'a')
    		{
    			if (a[x][y - 1] != '#')
    			{
    				a[x][y] = ' ';
    				y--;
    				a[x][y] = 'o';
    			}
    		}
    		if (ch == 'd')
    		{
    			if (a[x][y + 1] != '#')
    			{
    				a[x][y] = ' ';
    				y++;
    				a[x][y] = 'o';
    			}
    		}

    这个小游戏的器官大致就是这样

    以下就是整个小游戏的源码

    #include<stdio.h>
    #include<stdlib.h>
    #include<windows.h>
    #include<conio.h>
    int main()
    {
    	char a[100][100] = { "######",
    						"#o #  ",
    						"# ## #",
    						"#  # #",
    						"##   #",
    						"######" };
    	int i, x = 1, y = 1;//p,q存储迷宫出口的位置
    	for (i = 0; i < 6; i++)
    		puts(a[i]);
    	char ch;
    	while (x != 1 || y != 5)
    	{
    		ch = _getch();
    		if (ch == 's')
    		{
    			if (a[x + 1][y] != '#')
    			{
    				a[x][y] = ' ';
    				x++;
    				a[x][y] = 'o';
    			}
    		}
    		if (ch == 'w')
    		{
    			if (a[x - 1][y] != '#')
    			{
    				a[x][y] = ' ';
    				x--;
    				a[x][y] = 'o';
    			}
    		}
    		if (ch == 'a')
    		{
    			if (a[x][y - 1] != '#')
    			{
    				a[x][y] = ' ';
    				y--;
    				a[x][y] = 'o';
    			}
    		}
    		if (ch == 'd')
    		{
    			if (a[x][y + 1] != '#')
    			{
    				a[x][y] = ' ';
    				y++;
    				a[x][y] = 'o';
    			}
    		}
    
    		system("cls");
    		if(x==1&&y==5)
    		printf("成功过关\n");
    		for (i = 0; i < 6; i++)
    			puts(a[i]);
    	}
    		return 0;
    }

     这就是最后的运行结果,走出迷宫后会出现成功过关四个字

    我们也可以对走过的步数进行计数;

    定义一个count;每移动一次;count++

    #include<stdio.h>
    #include<stdlib.h>
    #include<windows.h>
    #include<conio.h>
    int main()
    {
    	char a[1000][1000] = {"##########",
    						"#o #  #   ",
    						"# ## ## ##",
    						"#  #    ##",
    						"##   ## ##",
    						"##########" };
    	int i, x = 1, y = 1;
    	int count=0;
    	for (i = 0; i < 11; i++)
    		puts(a[i]);
    	char ch;
    	while (x != 1|| y != 9)
    	{
    		ch = _getch();
    		count++;
    		if (ch == 's')
    		{
    			if (a[x + 1][y] != '#')
    			{
    				a[x][y] = ' ';
    				x++;
    				a[x][y] = 'o';
    			}
    		}
    		if (ch == 'w')
    		{
    			if (a[x - 1][y] != '#')
    			{
    				a[x][y] = ' ';
    				x--;
    				a[x][y] = 'o';
    			}
    		}
    		if (ch == 'a')
    		{
    			if (a[x][y - 1] != '#')
    			{
    				a[x][y] = ' ';
    				y--;
    				a[x][y] = 'o';
    			}
    		}
    		if (ch == 'd')
    		{
    			if (a[x][y + 1] != '#')
    			{
    				a[x][y] = ' ';
    				y++;
    				a[x][y] = 'o';
    			}
    		}
    
    		system("cls");
    		if (x == 1 && y == 9)
    			printf("成功过关\n");
    		for (i = 0; i < 6; i++)
    			puts(a[i]);
    	}
    	printf("你一共走了%d步", count);
    	Sleep(5000);
    	return 0;
    }

     最后的结果中会出现你总共移动的步数

     tips:

     我们可以将迷宫改动的复杂一点,来提高游戏体验感;由你们自己改造迷宫

    我们也可以对走的步数进行计数,以此来比较谁到达终点的效率高

    好了,学会了就可以快乐游戏了; 

    升级版来了(增加了步数统计和登陆界面,游戏菜单等)

    #include<stdio.h>
    #include<stdlib.h>
    #include<windows.h>
    #include<conio.h>
    int main()
    {
    	printf("						     小球球走迷宫小游戏 \n\n");
    	
    	printf("______________________________________________________________________________________________________________________\n");
    	
    	printf("							开始游戏  1\n\n");
    	
    	printf("							游戏音量  2\n\n");
    	
    	printf("							游戏设置  3\n\n");
    	
    	printf("							关闭游戏  4\n\n");
    	
    	int k;
    	scanf_s("%d",&k);
    	system("cls");
    	if(k==1) 
    	{
    		printf("使用adsw控制上下左右移动\n\n\n"); 
    	char a[100][100] = { "######",
    						"#o #  ",
    						"# ## #",
    						"#  # #",
    						"##   #",
    						"######" };
    	int i, x = 1, y = 1;//p,q存储迷宫出口的位置
    	for (i = 0; i < 6; i++)
    		puts(a[i]);
    	char ch;
    	int count=0;
    	while (x != 1 || y != 5)
    	{
    		ch = _getch();
    		count++;
    		if (ch == 's')
    		{
    			if (a[x + 1][y] != '#')
    			{
    				a[x][y] = ' ';
    				x++;
    				a[x][y] = 'o';
    			}
    		}
    		if (ch == 'w')
    		{
    			if (a[x - 1][y] != '#')
    			{
    				a[x][y] = ' ';
    				x--;
    				a[x][y] = 'o';
    			}
    		}
    		if (ch == 'a')
    		{
    			if (a[x][y - 1] != '#')
    			{
    				a[x][y] = ' ';
    				y--;
    				a[x][y] = 'o';
    			}
    		}
    		if (ch == 'd')
    		{
    			if (a[x][y + 1] != '#')
    			{
    				a[x][y] = ' ';
    				y++;
    				a[x][y] = 'o';
    			}
    		}
    
    		system("cls");
    		
    		if(x==1&&y==5)
    		
    		printf("成功过关\n\n\n");
    		
    		for (i = 0; i < 6; i++)
    		
    			puts(a[i]);
    			
    	}
    	printf("你一共走了%d步\n\n",count);
    	}
    	else if(k==4)
    	
    	printf("游戏结束\n\n");
    	
    	else if(k==2)
    	
    	printf("打开qq音乐,放战歌,乌拉...\n\n\n");
    	
    	 else if(k==3)
    	 
    	printf("请联系作者,并告诉他你想要的游戏设置,访问CSDN——2654501228\n\n\n"); 
    	
    	system("pause"); 
    	
    		return 0;
    }

    展开全文
  • cpp文件格式,用C语言写的一个文字冒险游戏,一共有14个结局,用VC,CB,VS等都可以打开
  • 桌面弹球小游戏,纯C语言编写,实现小球在固定区域移动,单文件源码,在codeblocks中已经测试通过,大家可以直接运行。
  • 基于C语言编写的贪吃蛇程序
  • c语言连连看游戏源码.zip源码C++语言项目源码c语言连连看游戏源码.zip源码C++语言项目源码 1.适合学生做毕业设计参考模板。 2.适合程序员学习开发研究用 3.适合公司做项目参考技术使用用

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,973
精华内容 6,389
关键字:

C语言写的小游戏源码