精华内容
下载资源
问答
  • 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();

    }

    本源码整理于互联网

    更多相关内容
  • 个人收集,简单易懂,思路清晰,直接运行。 包括推箱子、超级玛丽、俄罗斯方块等游戏。比淘宝的项目好。买到就是赚到!
  • C语言小游戏 |100行代码实现扫雷

    千次阅读 2022-02-19 23:05:27
    C语言小游戏 |100行代码实现扫雷

    本文将介绍如何用100行C语言代码实现扫雷小游戏的基本功能。

    游戏画面:

    源码:

    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    #define N 11
    #define M 11
    
    main()
    {
    	int i=0,j=0,p=0;    //i、j、p为循环参数 
    	int x=0,y=0;    //x和y为地图坐标参数 
    	int end1=0,end2=0;    //end1为地图中不是雷的位置数目,end2为判断是否踩雷的参数
    	int t=0;    //用作赋值的中间变量 
    	char ch;
    	static int minemap[N][M];
    	char showmap[N][M]={" 123456789",
    	                    "1*********",
    	                    "2*********",
    						"3*********",
    						"4*********",
    						"5*********",
    						"6*********",
    						"7*********",
    						"8*********",
    						"9*********"};
        for(i=1;i<10;i++)
        {
        	for(j=1;j<10;j++)
        	{
        		minemap[i][j]=rand()%90;
        		if(minemap[i][j]/10>0)
        		{
        			minemap[i][j]=0;
        			end1++;    //用end1的数目表示所绘制minemap中不是雷的位置的个数 
    			}
    			else
    			{
    				minemap[i][j]=1;
    			}
    		}
    	}
    	for(i=0;i<N;i++)
        {
        	for(j=0;j<M;j++)
        	{
        		printf("%c ",showmap[i][j]);
    		}
    		printf("\n");
        }		
        for(p=0;p<end1;p++)    //当用户点击地图的次数=end1时代表所有非雷的地点都被点过了,跳出循环,游戏胜利 
        {
        	reinput:printf("Please input the chosen coordinate x,y:\n");
        	while(scanf("%d%d",&x,&y)!=2)
        	{
        		printf("The input are not allowed!\n");
        		ch=getchar();
        		goto reinput;
            }
    		switch(x>0&&x<10)
        	{
        		case 0:
    			{
        			printf("The input are not allowed!\n");
    				goto reinput;
    			}
        		default:break;
    		}
    		switch(y>0&&y<10)
        	{
        		case 0:
    			{
        			printf("The input are not allowed!\n");
    				goto reinput;
    			}
        		default:break;
    		}
        	if(minemap[x][y]==1)
        	{
        		printf("This is a mine, you died.\n");
        		end2=1;
        		break;
    		}
    		else
    		{
    			t=minemap[x-1][y-1]+minemap[x-1][y]+minemap[x-1][y+1]+minemap[x][y-1]+minemap[x][y+1]+minemap[x+1][y-1]+minemap[x+1][y]+minemap[x+1][y+1];
    			showmap[x][y]=t+48;    	//48在Ascii码中代表字符0  
    		}
    		system("cls");
        	for(i=0;i<N;i++)
            {
        	     for(j=0;j<M;j++)
        		{
        			printf("%c ",showmap[i][j]);
    			}
    			printf("\n");
        	}	
    	}
    	if(end2==1)
    	{
    		printf("game over\n");
    	}
    	else
    	{
    		printf("Winner! You are amazing!\n");
    	}
    }

    功能实现思路:

    1、建立两个数组,一个int型数组保存地雷,另一个char型保存用户看到的地图。

    2、生成地雷,用rand()给int型数组赋值,随机数产生范围为0~89, 凡是产生的随机数在0~9内的就是雷。

    3、打印用户看到的char型数组。

    4、用户点击地图的次数=end1时代表所有非雷的地点都被点过了,跳出循环,游戏胜利。

    5、这段代码用scanf的返回值保证输入的是数字,用swich语句保证输入的范围在1~9内。ch=getchar()用以吃掉因为输入字符产生的回车字符‘\n’。

     6、如果是值为1则说明踩雷,并且将end2置为1,这样退出循环后就可以根据end2的值判断是因为踩雷退出的还是正常退出的。

     7、用于统计周边8个点位的1的个数,并且将数值转换为字符并保存在char型数组中,准备展示给玩家。

     8、清屏后重新打印char型数组。

    9、退出循环后根据end2的值判断结果。

    展开全文
  • 62套C语言小游戏源码

    2018-12-31 19:35:15
    这是楼主珍藏的62套C语言小游戏源码,包含吃豆人、俄罗斯方块、别踩白块等诸多经典小游戏。感兴趣的朋友可以下载下来研究。
  • 可以学习2048的算法
  • C语言小项目代码大全.一些小游戏及管理系统
  • 本程序通过VS2013编译器编译通过,用C语言实现推箱子小游戏,分为纯控制台的方式实现和EasyX图形库的方式实现,实现思路清晰,代码比较容易看懂
  • c语言小游戏代码.rar

    2021-05-01 17:30:04
    3994107_IvCPBvoZGSGIaCBDVINFnDVuO-1.rar
  • c语言简单程序,代码一百以上
  • c语言小游戏c语言项目源码大全合集(60例): c语言24点游戏源码 c语言Turbo C下写的俄罗斯方块 c语言UDP传输系统源码 c语言万年历源码 c语言五子棋源码 c语言俄罗斯方块 c语言做的一个任务管理器 c语言做的播放器...
  • 收集整理的简单易懂的60套C语言小游戏代码(可运行,供学习设计参考): c语言24点游戏源码 c语言Turbo C下写的俄罗斯方块 c语言UDP传输系统源码 c语言万年历源码 c语言五子棋源码 c语言俄罗斯方块 c语言做的一个...
  • 2048小游戏C语言代码实现,
  • C语言游戏代码大全

    2018-02-18 11:29:44
    双人贪吃蛇,别踩白方块,玫瑰花,矿井逃生等多种C语言游戏代码等你来实践!
  • 一个简易的、用C语言写的五子棋游戏代码,仅供参考!
  • 本文实例为大家分享了C语言实现2048游戏的具体代码,供大家参考,具体内容如下 大一时学c语言写的,写的不好但当时感觉还。 环境运行 vc6.0 ,cpp文件。 基本上是c写的,但是改变字体颜色,在控制台移动光标等等...
  • 推箱子游戏的运行规则:在街道上上小人推动箱子移动,直到把箱子移动到目的地。 思路分析: 小人及箱子的移动就是小人或者箱子和路的交换; 1 定义二维字符数组,存储地图 2 显示地图,提示游戏玩法 3 记录小人及箱子...
  • C语言实现的最简单的 打飞机小游戏
  • 贪吃蛇游戏源代码,codeblocks写的c语言小游戏代码,可以运行。
  • 推箱子,c语言源代码,小游戏c语言源代码,适合初学者的c语言小游戏代码 推箱子,c语言源代码,小游戏c语言源代码,适合初学者的c语言小游戏代码
  • 五子棋,贪吃蛇,俄罗斯方块小游戏 c语言代码 实测可以玩
  • 使用vs编译的二维小游戏,里面有很多小游戏和网站模板,比如超级玛丽、坦克大战、推箱子、别踩白块、贪吃蛇、种地浇水、盒子接球、连连看、军棋、五子棋、火车订票系统、图书馆借阅、涂格子游戏、火柴人游戏、大丰收...
  • 几个C语言小游戏代码

    热门讨论 2011-03-26 20:59:25
    几个C语言小游戏代码,如俄罗斯方块、贪吃蛇、五子棋等的源代码
  • C语言经典100

    2019-01-22 22:13:42
    提供C/C++程序员求职面试指导,而旨在从技术上分析面试题的内涵。文中的大多数面试题来自各大论坛,部分试题解答也参考了网友的意见。 许多面试题看似简单,却需要深厚的基本功才能给出完美的 ...
  • C语言小游戏,游戏设计,500+行代码

    万次阅读 多人点赞 2021-01-05 19:19:32
    自学c语言有2个月了,自己给自己做了个毕业设计。希望大家可以参考学习,也欢迎有大佬提出自己的见解。 (注:本程序为纯C语言c语言毕业设计 ...

    自学c语言有2个月了,自己给自己做了个小游戏。没有学完的朋友们可以参考学习,也欢迎有大佬提出自己的见解。
    (注:本程序为纯C语言)
    这个程序花了我好几天来修改、完善,纯手撸。

    有意愿的朋友可以去下载源代码:
    VC++6.0版本点击蓝字前往下载
    VS版本点击蓝字前往下载

    成为我的粉丝可以免费下载哦 > ^ _ ^ <

    [video(video-nfyMspvE-1609984668454)(type-csdn)(url-https://live.csdn.net/v/embed/141556)(image-https://vedu.csdnimg.cn/1cfad72a9d6b44aa840a275d1084d2c4/snapshots/0a43fa0dfdec405a9fd9a95f49f066e5-00005.jpg)(title-c语言毕业设计)]

    附上图片:
    在这里插入图片描述

    你的点赞是对我最大的鼓舞哦> ^ _ ^ <

    展开全文
  • 消消乐游戏c语言代码

    2020-11-12 11:29:01
    c语言代码---消消乐游戏(编程练手题)(简单小游戏)(西电)(c语言代码)(编程)(消消乐)(新手)
  • 通过该游戏代码可以很好的复习C语言的递归算法与流程控制等知识,相信对于学习游戏开发的朋友有一定的借鉴价值。 完整的实例代码如下: #include #include #include #include #include #define N 20/*迷宫的...
  • 本文实例为大家分享了C语言实现数字炸弹小游戏的具体代码,供大家参考,具体内容如下 使用的是C语言 # 内容 #include #include int main(){ //变量 char c_TheRequest = 1;//开始界面的字符 int in_Deltar = 1,...
  • 本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下 #define _CRT_SECURE_NO_WARNINGS #include #include #include /* 用 C 语言写一个简单的扫雷游戏 */ // 1.写一个游戏菜单 Menu...
  • c语言经典游戏代码

    千次阅读 2021-05-20 01:10:20
    //C语言多线程-主角和怪物#include#include#define bool int //定义int变量为bool变量,bool不是真就是假int a=0,b=20;//主角的坐标int x=1,y=0;//怪物的坐标int i=1;//i值为真HANDLE hMutex;//1.坐标void ...

    //C语言多线程-主角和怪物

    #include

    #include

    #define bool int //定义int变量为bool变量,bool不是真就是假

    int a=0,b=20;//主角的坐标

    int x=1,y=0;//怪物的坐标

    int i=1;//i值为真

    HANDLE hMutex;

    //1.坐标

    void GamePosition(HANDLE g_hout,int x,int y)

    {

    COORD pos;//点的结构体

    pos.X=x;//横坐标

    pos.Y=y;//纵坐标

    SetConsoleCursorPosition(g_hout,pos);

    //设置控制平台光标位置

    }

    DWORD WINAPI Func(LPVOID lpParamter)//多线程的功能函数6.线程是画怪物

    {

    HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);//7.拿到这张纸

    WaitForSingleObject(hMutex, INFINITE);//13.自己进来,自己用洗手间

    GamePosition(hout,x,y),printf('●');//8.在纸上画怪物

    ReleaseMutex(hMutex);//14.放弃使用权

    while(1)//9.怪物在横坐标为从0-10依次循环移动

    {

    if(x>=0&&i==1)

    {

    printf('  ');

    GamePosition(hout,++x,y);

    printf('●');

    Sleep(1000);

    if(x==10)

    i=0;//i为假

    }

    else if(x<>

    {

    printf('  ');

    GamePosition(hout,--x,y);

    printf('●');

    Sleep(1000);

    if(x==0)

    i=1;

    }

    }

    return 0;

    }

    int main()

    {

    HANDLE hThread = CreateThread(NULL, 0, Func, NULL, 0, NULL);//5.创建线程

    hMutex = CreateMutexA(NULL, FALSE, '123');//创建互斥锁(量)//10.关上洗手间

    HANDLE hout=GetStdHandle(STD_OUTPUT_HANDLE);//2.拿到这张纸

    WaitForSingleObject(hMutex, INFINITE);//11.等待你的同事出来 15步接着

    GamePosition(hout,a,b),printf('☆');//3.在纸上画主角

    ReleaseMutex(hMutex);//12.同事出来了,放弃了洗手间的使用权

    while(1)

    {

    if(kbhit())

    switch(getch())//控制左右 4.主角上下左右移动

    {

    case 'w':

    case 'W':

    if(b>3)GamePosition(hout,a,b),printf('  '),GamePosition(hout,a,--b),printf('☆');

    break;

    case 's':

    case 'S':

    if(b<20)gameposition(hout,a,b),printf('>

    break;

    case 'a':

    case 'A':

    if(a>0)printf('  '),GamePosition(hout,--a,b),printf('☆');

    break;

    case 'd':

    case 'D':

    if(a<20)printf('>

    break;

    }

    }

    CloseHandle(hThread);

    system('pause');

    return 0;

    }

    70951668_2

    扫雷游戏代码源码

    70951668_3

    70951668_4

    70951668_5

    #include

    #include

    #include

    int main (){

    int delta[8][2] = {{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};

    int row =0,col = 0,num = 0;

    char map[10][10] = {0};

    char show[10][10] = {0};

    srand(time(0));

    for(row = 0;row <=>

    for(col = 0;col <=>

    map[row][col] = '0';

    }

    }

    do{

    row = rand() % 10;

    col = rand() % 10;

    if(map[row][col] == '0'){

    map[row][col] = 'x';

    num++;

    }

    }while(num <>

    for (row = 0;row <=>

    for (col = 0;col <=>

    if(map[row][col] != 'x'){

    int cnt = 0;

    for (num = 0;num <=>

    if(row + delta[num][0] <>

    continue;

    }

    if(row + delta[num][0] > 9){

    continue;

    }

    if(col + delta[num][1] <>

    continue;

    }

    if(col + delta[num][1] > 9){

    continue;

    }

    if(map[row + delta[num][0]][col + delta[num][1]]== 'x'){

    cnt++;

    }

    }

    map[row][col] = '0' + cnt;

    }

    }

    }

    for (row = 0;row <>

    for(col = 0;col < 10;col="">

    printf('* ');

    }

    printf('\n');

    }

    num = 0;

    int x,y;

    do{

    printf('please enter the coordinate of array:');

    scanf('%d%d',&x,&y);

    show[x-1][y-1] = 1;

    if(map[x-1][y-1] == '0'){

    for (num = 0;num <=>

    if(x-1 + delta[num][0] <>

    continue;

    }

    if(x-1 + delta[num][0] > 9){

    continue;

    }

    if(y -1+ delta[num][1] <>

    continue;

    }

    if(y-1 + delta[num][1] > 9){

    continue;

    }

    show[x-1+delta[num][0]][y-1+delta[num][1]] = 1;

    }

    }

    if (map[x-1][y-1]!= 'x'&&map[x-1][y-1] != '0'){

    for (num = 0;num <=>

    int cnt = 0;

    if(x-1 + delta[num][0] <>

    continue;

    }

    if(x-1 + delta[num][0] > 9){

    continue;

    }

    if(y-1 + delta[num][1] <>

    continue;

    }

    if(y-1 + delta[num][1] > 9){

    continue;

    }

    if( map[x -1 + delta[num][0]][y -1+ delta[num][1]] != 'x'){

    show[x-1  + delta[num][0]][y -1+ delta[num][1]] = 1 ;

    }

    }

    }

    if(map[x-1][y-1] == 'x') {

    printf('game over!\n');

    for (row = 0;row <>

    for(col = 0;col < 10;col="">

    printf('%c ',map[row][col]);

    }

    printf('\n');

    }

    return 0;

    }

    system('cls');

    printf('mine sweeping:\n');

    for (row = 0;row <>

    for(col = 0;col < 10;col="">

    if (show[row][col] == 1)

    {

    printf('%c ', map[row][col]);

    }

    else

    {

    printf('* ');

    }

    }

    printf('\n');

    }

    num = 0;

    for (row = 0;row <>

    for(col = 0;col < 10;col="">

    if (show[row][col] == 1 )

    {

    num++;

    }

    }

    }

    printf('num:%d\n',num);

    }while(num <>

    printf('you win!');

    return 0;

    }70951668_2

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,697
精华内容 20,678
关键字:

c语言小游戏100行代码