c语言台球小游戏dev,c语言弹球小游戏

发布时间:2023-01-03

本文目录一览:

  1. 求C语言编写的壁球小游戏的源代码,谢谢。
  2. c语言小游戏代码
  3. 关于台球游戏的C语言编程

求C语言编写的壁球小游戏的源代码,谢谢。

速度和 接板 长度不能改
所以比较难玩

#include "graphics.h"
#include "stdio.h"
#include "conio.h" /*所需的头文件*/
int on; /*声明具有开关作用的全局变量*/
static int score; /*声明静态的记分器变量*/
/* 定义开始界面函数*/
int open()
{
    setviewport(100,100,500,380,1); /*设置图形窗口区域*/
    setcolor(4); /*设置作图色*/
    rectangle(0,0,399,279); /*以矩形填充所设的图形窗口区域*/
    setfillstyle(SOLID_FILL,7); /*设置填充方式*/
    floodfill(50,50,4); /*设置填充范围*/
    setcolor(8);
    settextstyle(0,0,9); /*文本字体设置*/
    outtextxy(90,80,"BALL"); /*输出文本内容*/
    settextstyle(0,0,1);
    outtextxy(110,180,"version 1.0");
    outtextxy(110,190,"made by ddt");
    setcolor(128);
    settextstyle(0,0,1);
    outtextxy(120,240,"Press any key to continue......");
}
/*定义退出界面函数*/
int quitwindow()
{
    char s[100]; /*声明用于存放字符串的数组*/
    setviewport(100,150,540,420,1);
    setcolor(YELLOW);
    rectangle(0,0,439,279);
    setfillstyle(SOLID_FILL,7);
    floodfill(50,50,14);
    setcolor(12);
    settextstyle(0,0,8);
    outtextxy(120,80,"End");
    settextstyle(0,0,2);
    outtextxy(120,200,"quit? Y/N");
    sprintf(s,"Your score is:%d",score);/*格式化输出记分器的值*/
    outtextxy(120,180,s);
    on=1; /*初始化开关变量*/
}
/*主函数*/
main()
{
    int gdriver,gmode;
    gdriver=DETECT; /*设置图形适配器*/
    gmode=0; /*设置图形模式*/
    registerbgidriver(EGAVGA_driver);/* 注册BGI驱动后可以不需要.BGI文件的支持运行 */
    initgraph(gdriver,gmode,"");
    setbkcolor(14);
    open(); /*调用开始界面函数*/
    getch(); /*暂停*/
    while(1) /*此大循环体控制游戏的反复重新进行*/
    {
        int driver,mode,l=320,t=400,r,a,b,dl=5,n,x=200,y=400,r1=10,dx=-2,dy=-2;/*初始化小球相关参数*/
        int left[100],top[100],right[100],bottom[100],i,j,k,off=1,m,num[100][100];/*方砖阵列相关参数*/
        static int pp;
        static int phrase; /*一系列起开关作用的变量*/
        int oop=15;
        pp=1;
        score=0;
        driver=DETECT;
        mode=VGA;
        registerbgidriver(EGAVGA_driver);
        initgraph(driver,mode,"");
        setbkcolor(10);
        cleardevice(); /*图形状态下清屏*/
        clearviewport(); /*清除现行图形窗口内容*/
        b=t+6;
        r=l+60;
        setcolor(1);
        rectangle(0,0,639,479);
        setcolor(4);
        rectangle(l,t,r,b);
        setfillstyle(SOLID_FILL,1);
        floodfill(l+2,t+2,4);
        for(i=0,k=0;i=6;i++) /*此循环绘制方砖阵列*/
        {
            top[i]=k;
            bottom[i]=top[i]+20;
            k=k+21;
            oop--;
            for(j=0,m=0;j=7;j++)
            {
                left[j]=m;
                right[j]=left[j]+80;
                m=m+81;
                setcolor(4);
                rectangle(left[j],top[i],right[j],bottom[i]);
                setfillstyle(SOLID_FILL,j+oop);
                floodfill(left[j]+1,top[i]+1,4);
                num[i][j]=pp++;
            }
        }
        while(1) /*此循环控制整个动画*/
        {
            while(!kbhit())
            {
                x=x+dx; /*小球运动的圆心变量控制*/
                y=y+dy;
                if(x+r1r||x+r1r)
                { phrase=0;}
                if((x-r1=r||x+r1=r)x+r1=l)
                {
                    if(yt)
                    phrase=1;
                    if(y+r1=tphrase==1)
                    {dy=-dy;y=t-1-r1;}
                }
                if(off==0)
                continue;
                for(i=0;i=6;i++) /*此循环用于判断、控制方砖阵列的撞击、擦除*/
                for(j=0;j=7;j++)
                {
                    if((x+r1=right[j]x+r1=left[j])||(x-r1=right[j]x-r1=left[j]))
                    {
                        if(( y-r1top[i]y-r1=bottom[i])||(y+r1=top[i]y+r1=bottom[i] ))
                        {
                            if(num[i][j]==0)
                            {continue; }
                            setcolor(10);
                            rectangle(left[j],top[i],right[j],bottom[i]);
                            setfillstyle(SOLID_FILL,10);
                            floodfill(left[j]+1,top[i]+1,10);
                            dy=-dy;
                            num[i][j]=0;
                            score=score+10;
                            printf("%d\b\b\b",score);
                        }
                    }
                    if((y+r1=top[i]y+r1=bottom[i])||(y-r1=top[i]y-r1=bottom[i]))
                    {
                        if((x+r1=left[j]x+r1right[j])||(x-r1=right[j]x-r1left[j]))
                        {
                            if(num[i][j]==0)
                            { continue;}
                            setcolor(10);
                            rectangle(left[j],top[i],right[j],bottom[i]);
                            setfillstyle(SOLID_FILL,10);
                            floodfill(left[j]+1,top[i]+1,10);
                            dx=-dx;
                            num[i][j]=0;
                            score=score+10;
                            printf("%d\b\b\b",score);
                        }
                    }
                }
                if(x+r1639) /*控制小球的弹射范围*/
                {dx=-dx;x=638-r1;}
                if(x=r1)
                {dx=-dx;x=r1+1;}
                if(y+r1=479)
                {off=0;quitwindow();break;}
                if(y=r1)
                {dy=-dy;y=r1+1;}
                if(score==560)
                {off=0;quitwindow();break;}
                setcolor(6);
                circle(x,y,r1);
                setfillstyle(SOLID_FILL,14);
                floodfill(x,y,6);
                delay(1000);
                setcolor(10);
                circle(x,y,r1);
                setfillstyle(SOLID_FILL,10);
                floodfill(x,y,10);
            }
            a=getch();
            setcolor(10);
            rectangle(l,t,r,b);
            setfillstyle(SOLID_FILL,10);
            floodfill(l+2,t+2,10);
            if(a==77l=565) /*键盘控制设定*/
            {dl=20;l=l+dl;}
            if(a==75l=15)
            {dl=-20;l=l+dl;}
            if(a=='y'on==1)
            break;
            if(a=='n'on==1)
            break;
            if(a==27)
            {quitwindow();off=0;}
            r=l+60;
            setcolor(4);
            rectangle(l,t,r,b);
            setfillstyle(SOLID_FILL,1);
            floodfill(l+5,t+5,4);
            delay(100);
        }
        if(a=='y'on==1) /*是否退出游戏*/
        {break;}
        if(a=='n'on==1)
        { continue;}
    }
    closegraph();
}

你不是要求在TC里运行么
C和C不同的
如果要在C

你前面要写函数的声明的
C里就不用
修改过了,试一试吧。
我这里可以
一闪而过那个是图形界面的问题
驱动没安装好

c语言小游戏代码

最基础的贪吃蛇的代码

#include<stdio.h>
#include<windows.h>//基本型态定义。支援型态定义函数。使用者界面函数 图形装置界面函数。
#include<conio.h> //用户通过按键盘产生的对应操作 (控制台)
#include<stdlib.h>
#include<time.h> //日期和时间头文件
#define LEN 30
#define WID 25
int Snake[LEN][WID] = {0}; //数组的元素代表蛇的各个部位
char Sna_Hea_Dir = 'a';//记录蛇头的移动方向
int Sna_Hea_X, Sna_Hea_Y;//记录蛇头的位置
int Snake_Len = 3;//记录蛇的长度
clock_t Now_Time;//记录当前时间,以便自动移动
int Wait_Time ;//记录自动移动的时间间隔
int Eat_Apple = 1;//吃到苹果表示为1
int Level ;
int All_Score = -1;
int Apple_Num = -1;
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE); //获取标准输出的句柄 windows.h
//句柄 :标志应用程序中的不同对象和同类对象中的不同的实例 方便操控,
void gotoxy(int x, int y)//设置光标位置
{
    COORD pos = {x,y}; //定义一个字符在控制台屏幕上的坐标POS
    SetConsoleCursorPosition(hConsole, pos); //定位光标位置的函数windows.h
}
void Hide_Cursor()//隐藏光标 固定函数
{
    CONSOLE_CURSOR_INFO cursor_info = {1, 0};
    SetConsoleCursorInfo(hConsole, cursor_info);
}
void SetColor(int color)//设置颜色
{
    SetConsoleTextAttribute(hConsole, color);
    //是API设置字体颜色和背景色的函数 格式:SetConsoleTextAttribute(句柄,颜色);
}
void Print_Snake()//打印蛇头和蛇的脖子和蛇尾
{
    int iy, ix, color;
    for(iy = 0; iy < WID; ++iy)
        for(ix = 0; ix < LEN; ++ix)
        {
            if(Snake[ix][iy] == 1)//蛇头
            {
                SetColor(0xf); //oxf代表分配的内存地址 setcolor:34行自定义设置颜色的函数
                gotoxy(ix*2, iy);
                printf("※");
            }
            if(Snake[ix][iy] == 2)//蛇的脖子
            {
                color = rand()%15 + 1; //rand()函数是产生随机数的一个随机函数。C语言里还有 srand()函数等。
                //头文件:stdlib.h
                if(color == 14)
                    color -= rand() % 13 + 1; //变色
                SetColor(color);
                gotoxy(ix*2, iy);
                printf("■");
            }
            if(Snake[ix][iy] == Snake_Len)
            {
                gotoxy(ix*2, iy);
                SetColor(0xe);
                printf("≈");
            }
        }
}
void Clear_Snake()//擦除贪吃蛇
{
    int iy, ix;
    for(iy = 0; iy < WID; ++iy)
        for(ix = 0; ix < LEN; ++ix)
        {
            gotoxy(ix*2, iy);
            if(Snake[ix][iy] == Snake_Len)
                printf(" ");
        }
}
void Rand_Apple()//随机产生苹果
{
    int ix, iy;
    do
    {
        ix = rand() % LEN;
        iy = rand() % WID;
    }while(Snake[ix][iy]);
    Snake[ix][iy] = -1;
    gotoxy(ix*2, iy);
    printf("⊙");
    Eat_Apple = 0;
}
void Game_Over()//蛇死掉了
{
    gotoxy(30, 10);
    printf("Game Over");
    Sleep(3000);
    system("pause nul");
    exit(0);
}
void Move_Snake()//让蛇动起来
{
    int ix, iy;
    for(ix = 0; ix < LEN; ++ix)//先标记蛇头
        for(iy = 0; iy < WID; ++iy)
            if(Snake[ix][iy] == 1)
            {
                switch(Sna_Hea_Dir)//根据新的蛇头方向标志蛇头
                {
                    case 'w':
                        if(iy == 0)
                            Game_Over();
                        else
                            Sna_Hea_Y = iy - 1;
                        Sna_Hea_X = ix;
                        break;
                    case 's':
                        if(iy == (WID -1))
                            Game_Over();
                        else
                            Sna_Hea_Y = iy + 1;
                        Sna_Hea_X = ix;
                        break;
                    case 'a':
                        if(ix == 0)
                            Game_Over();
                        else
                            Sna_Hea_X = ix - 1;
                        Sna_Hea_Y = iy;
                        break;
                    case 'd':
                        if(ix == (LEN - 1))
                            Game_Over();
                        else
                            Sna_Hea_X = ix + 1;
                        Sna_Hea_Y = iy;
                        break;
                    default:
                        break;
                }
            }
    if(Snake[Sna_Hea_X][Sna_Hea_Y]!=1 && Snake[Sna_Hea_X][Sna_Hea_Y]!=0 && Snake[Sna_Hea_X][Sna_Hea_Y]!=-1)
        Game_Over();
    if(Snake[Sna_Hea_X][Sna_Hea_Y] > 0)//吃到苹果
    {
        ++Snake_Len;
        Eat_Apple = 1;
    }
    for(ix = 0; ix < LEN; ++ix)//处理蛇尾
        for(iy = 0; iy < WID; ++iy)
        {
            if(Snake[ix][iy] > 0)
            {
                if(Snake[ix][iy] != Snake_Len)
                    Snake[ix][iy] += 1;
                else
                    Snake[ix][iy] = 0;
            }
        }
    Snake[Sna_Hea_X][Sna_Hea_Y] = 1;//处理蛇头
}
void Get_Input()//控制蛇的移动方向
{
    if(kbhit())
    {
        switch(getch())
        {
            case 87:
                Sna_Hea_Dir = 'w';
                break;
            case 83:
                Sna_Hea_Dir = 's';
                break;
            case 65:
                Sna_Hea_Dir = 'a';
                break;
            case 68:
                Sna_Hea_Dir = 'd';
                break;
            default:
                break;
        }
    }
    if(clock() - Now_Time >= Wait_Time)//蛇到时间自动行走
    {
        Clear_Snake();
        Move_Snake();
        Print_Snake();
        Now_Time = clock();
    }
}
void Init()//初始化
{
    system("title 贪吃毛毛蛇");
    system("mode con: cols=80 lines=25");
    Hide_Cursor();
    gotoxy(61, 4);
    printf("You Score:");
    gotoxy(61, 6);
    printf("You Level:");
    gotoxy(61, 8);
    printf("The Lenght:");
    gotoxy(61, 10);
    printf("The Speed:");
    gotoxy(61, 12);
    printf("Apple Num:");
    int i;
    for(i = 0; i < Snake_Len; ++i)//生成蛇
        Snake[10+i][15] = i+1;
    int iy, ix;//打印蛇
    for(iy = 0; iy < WID; ++iy)
        for(ix = 0; ix < LEN; ++ix)
        {
            if(Snake[ix][iy])
            {
                SetColor(Snake[ix][iy]);
                gotoxy(ix*2, iy);
                printf("■");
            }
        }
}
void Pri_News()//打印信息
{
    SetColor(0xe);
    gotoxy(73,4);
    All_Score += Level;
    printf("%3d", All_Score);
    gotoxy(73, 6);
    printf("%3d", Level);
    gotoxy(73, 8);
    printf("%3d",Snake_Len);
    gotoxy(73, 10);
    printf("0.%3ds", Wait_Time/10);
    gotoxy(73, 12);
    printf("%d", Apple_Num);
}
void Lev_Sys()//等级系统
{
    if(((Apple_Num-1) / 10) == Level)
    {
        ++Level;
        if(Wait_Time > 50)
            Wait_Time -= 50;
        else
            if(Wait_Time > 10)
                Wait_Time -= 10;
            else
                Wait_Time -= 1;
    }
}
int main(void)
{
    Init();
    srand((unsigned)time(NULL));//设置随机数的种子
    Now_Time = clock();
    int speed1=1000,speed2,a;
    printf("\n");
    printf("请输入你想要的速度\n");
    scanf("%d",&speed2);
    Level=1;
    Wait_Time=speed1-speed2;
    printf("请输入你想要的苹果数\n");
    scanf("%d",&a);
    while(a--)
        Rand_Apple();
    while(1)
    {
        if(Eat_Apple)
        {
            ++Apple_Num;
            Rand_Apple();
            Lev_Sys();
            Pri_News();
        }
        Get_Input();
        Sleep(10);
    }
    return 0;
}

关于台球游戏的C语言编程

#include<stdio.h>
#include<graphics.h>
#include<conio.h>
#include <stdlib.h>
#include<math.h>
#include<time.h>
#define PATH "D:\\tc30"
#define pi 3.14159265354
#define r 10.0
#define zero 0.01
#define BC 0
#define DISK 2
float R=r+0.5;
struct balltype
{
    float x,y;
    float dx,dy;
    int flag;
}ball[16];
int cx=320-5*r,cy=240;
float power=15.0;
int flag=1,player=0,chang=0;
int hole[6][2]={{17,92},{320,92},{623,92},
                {17,388},{320,388},{623,388}};
int plball[2]={0,0},ex=1;
void help()
{
    char *fname = { "a/4:left d/6:right w/8:up s/2:down Space:shoot ,or.:power Esc:exit" };
    setcolor(14);
    outtextxy(8,460,fname);
}
void waittime(double t)
{
    time_t t1,t2;
    double a,b;
    a=time(&t1);
    while(1)
    {
        b=time(&t2);
        if(b-a>=t) break;
    }
}
void drawhlep()
{
    setbkcolor(9);
    setcolor(14);
    rectangle(50,50,550,400);
    rectangle(50,100,550,145);
    settextstyle(0, 0, 4);
    outtextxy(150, 60, "Help You!");
    rectangle(250,100,400,145);
    setcolor(4);
    settextstyle(3,0,4);
    outtextxy(270,102,"Player1");
    outtextxy(420,102,"Player2");
    setcolor(14);
    rectangle(50,170,550,195);
    rectangle(50,220,550,245);
    rectangle(50,270,550,295);
    rectangle(50,320,550,345);
    rectangle(50,370,550,400);
    rectangle(400,145,550,245);
    rectangle(50,145,250,370);
    setcolor(10);
    settextstyle(3,0,1);
    outtextxy(115,146,"Left");
    outtextxy(115,171,"Right");
    outtextxy(115,196,"Up");
    outtextxy(115,221,"Down");
    outtextxy(115,246,"Move Quick");
    outtextxy(115,271,"Add");
    outtextxy(115,296,"Subtrate");
    outtextxy(115,321,"Shoot");
    outtextxy(115,346,"Exit");
    setcolor(5);
    settextstyle(7,0,4);
    outtextxy(60,385,"Welcome to ZGQ's Game. QQ:271111716 E-mail:zgq150@163.com");
}