c語言撞球小遊戲dev,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語言小遊戲代碼

最基礎的貪吃蛇的代碼

#includestdio.h

#includewindows.h//基本型態定義。支援型態定義函數。使用者界面函數 圖形裝置界面函數。

#includeconio.h //用戶通過按鍵盤產生的對應操作 (控制台)

#includestdlib.h

#includetime.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]!=1Snake[Sna_Hea_X][Sna_Hea_Y]!=0Snake[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語言編程

#includestdio.h

#includegraphics.h

#includeconio.h

#include stdlib.h

#includemath.h

#includetime.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-at) 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”);

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/244732.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:03
下一篇 2024-12-12 13:03

相關推薦

  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28
  • Python作為中心語言,在編程中取代C語言的優勢和挑戰

    Python一直以其簡單易懂的語法和高效的編碼環境而著名。然而,它最近的發展趨勢表明Python的使用範圍已經從腳本語言擴展到了從Web應用到機器學習等廣泛的開發領域。與此同時,C…

    編程 2025-04-28
  • Python基礎語言

    Python作為一種高級編程語言擁有簡潔優雅的語法。在本文中,我們將從多個方面探究Python基礎語言的特點以及使用技巧。 一、數據類型 Python基礎數據類型包括整數、浮點數、…

    編程 2025-04-28

發表回復

登錄後才能評論