如何用C语言进行图形编程

Helendeng 2004-04-07 09:08:37
各位前辈,本人初学C,碰到一个问题,就是怎么样在C中调入一个图形,然后再在图形界面中插入菜单选项选择下面要运行的程序。即跟用C编一个小游戏差不多。只是没那么复杂。请各位帮帮忙。要求是越简单越好。谢谢
...全文
89 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChinaPlayer 2004-07-21
  • 打赏
  • 举报
回复
SC
wodeyouxian 2004-04-09
  • 打赏
  • 举报
回复
有两种模式,
一、在文本方式下,先画出各个界面,然后调用相应的菜单
二、用图形模式下,和上面也差不多, 也要有菜单
八卦之魂 2004-04-09
  • 打赏
  • 举报
回复
收藏
wp790507 2004-04-08
  • 打赏
  • 举报
回复
看不懂啊!而且有一个错误啊!
hanyimath 2004-04-08
  • 打赏
  • 举报
回复
up
gwcui 2004-04-08
  • 打赏
  • 举报
回复
//接上面
int choice(){
int i;
int key;
int button=1;
update(LEFT,TOP,WIDTH,WIDTH);
while(1){
setfillstyle(1,LIGHTGRAY);
for(i=1;i<=7;i++)
bar3d(BUTTONX,TOP+30*i,BUTTONX+BUTTONW,TOP+30*i+BUTTONH,2,1);
setfillstyle(1,BROWN);
for(i=1;i<=7;i++)
if(button==i)bar3d(BUTTONX,TOP+30*i,BUTTONX+BUTTONW,TOP+30*i+BUTTONH,2,1);
setcolor(RED);settextstyle(1,0,2);
outtextxy(BUTTONX+8,TOP+30*1+2,"LEVEL 1");
outtextxy(BUTTONX+8,TOP+30*2+2,"LEVEL 2");
outtextxy(BUTTONX+8,TOP+30*3+2,"LEVEL 3");
outtextxy(BUTTONX+8,TOP+30*4+2,"LEVEL 4");
outtextxy(BUTTONX+8,TOP+30*5+2,"LEVEL 5");
outtextxy(BUTTONX+8,TOP+30*6+2,"LEVEL 6");
outtextxy(BUTTONX+8,TOP+30*7+2,"LEVEL 7");
key=getkey();
if(key==0x4800)button--;
if(key==0x5000)button++;
if(button<1)button=7;
if(button>7)button=1;
if(key==0x1c0d)break;
}
return button;
}
int fover(){
int key;
update(LEFT,TOP,WIDTH,WIDTH);
setcolor(RED);
settextstyle(0,0,3);
outtextxy(LEFT+15,TOP+30,"GAME OVER");
settextstyle(1,0,1);
outtextxy(LEFT+30,TOP+130,"Exit? or not?(y/n)");
link:
while (bioskey(1) == 0){;}
key=bioskey(0)&0xff;
if((key=='n')||(key=='N'))return 1;
else if((key=='y')||(key=='Y'))return 0;
else goto link;
}
void fwin(){
update(LEFT,TOP,WIDTH,WIDTH);
setcolor(RED);
settextstyle(0,0,3);
outtextxy(LEFT+12,TOP+70,"YOU WIN !!!!!!");
getch();
}
void fstep(float step){
update(LEFT,BOTTOM+17,STEP*BLOODW,(22-17));
setfillstyle(1,RED);
bar(LEFT,BOTTOM+17,(LEFT)+(int)(step*BLOODW),BOTTOM+22);
}
void draw(int i,int j,int n){
char ch[2];
ch[1]='\0';
if(back[i][j]==' ')update(LEFT+(i-1)*(RECTW+RECTM),TOP+(j-1)*(RECTW+RECTM),RECTW,RECTW);
else{
setfillstyle(1,BROWN);
bar(LEFT+(i-1)*(RECTW+RECTM),TOP+(j-1)*(RECTW+RECTM),LEFT+i*(RECTW),TOP+j*(RECTW));
ch[0]=back[i][j];
setcolor(BLUE);
settextstyle(0,0,3);
outtextxy(LEFT+(i-1)*(RECTW+RECTM)+18,TOP+(j-1)*(RECTW+RECTM)+18,ch);
}
}
void map(int button,int n){
int i,j;
switch(button){
case 1:for(i=1;i<=n;i++)for(j=1;j<=n;j++)back[i][j]=back1[i][j];break;
case 2:for(i=1;i<=n;i++)for(j=1;j<=n;j++)back[i][j]=back2[i][j];break;
case 3:for(i=1;i<=n;i++)for(j=1;j<=n;j++)back[i][j]=back3[i][j];break;
case 4:for(i=1;i<=n;i++)for(j=1;j<=n;j++)back[i][j]=back4[i][j];break;
case 5:for(i=1;i<=n;i++)for(j=1;j<=n;j++)back[i][j]=back5[i][j];break;
case 6:for(i=1;i<=n;i++)for(j=1;j<=n;j++)back[i][j]=back6[i][j];break;
case 7:for(i=1;i<=n;i++)for(j=1;j<=n;j++)back[i][j]=back7[i][j];break;
}
}
void flevel(int level){
char ch[2];
ch[1]='\0';
switch(level){
case 1: ch[0]='1';break;
case 2: ch[0]='2';break;
case 3: ch[0]='3';break;
case 4: ch[0]='4';break;
case 5: ch[0]='5';break;
case 6: ch[0]='6';break;
case 7: ch[0]='7';break;
}
update((LEFT+250+10+3)+50,TOP-35+2,18,20);
setcolor(RED);
settextstyle(1,0,1);
outtextxy((LEFT+250+10+3)+52,TOP-35+5,ch);
}
int judge(int n){
int i,j;
int m=0;
char BACK1[4][4]={
'#','#','#','#',
'#','A','D','G',
'#','B','E','H',
'#','C','F',' '
};
char BACK2[5][5]={
'#','#','#','#','#',
'#','A','E','I','M',
'#','B','F','J','N',
'#','C','G','K','O',
'#','D','H','L',' '
};
char BACK3[6][6]={
'#','#','#','#','#','#',
'#','A','F','K','P','U',
'#','B','G','L','Q','V',
'#','C','H','M','R','W',
'#','D','I','N','S','X',
'#','E','J','O','T',' '
};
switch(n){
case 3:for(i=1;i<=n;i++)for(j=1;j<=n;j++)if(back[i][j]==BACK1[i][j])m++;break;
case 4:for(i=1;i<=n;i++)for(j=1;j<=n;j++)if(back[i][j]==BACK2[i][j])m++;break;
case 5:for(i=1;i<=n;i++)for(j=1;j<=n;j++)if(back[i][j]==BACK3[i][j])m++;break;
}
if(m>=n*n-1)return 1;
else return 0;
}
gwcui 2004-04-08
  • 打赏
  • 举报
回复
我的一个小游戏,可能对你有帮助.
#include<graphics.h> #include<stdlib.h> #include<bios.h>
#define LEFT 150
#define RIGHT (getmaxx()-LEFT)
#define WIDTH (RIGHT-LEFT)
#define TOP ((getmaxy()-WIDTH)/2)
#define BOTTOM ((getmaxy()+WIDTH)/2)
#define RECTW (WIDTH/n)
#define RECTM 2
#define STEP 120
#define BLOODH 5
#define BLOODW (((WIDTH*4)/5)/STEP)
#define BUTTONW 150
#define BUTTONH 25
#define BUTTONX (LEFT+(WIDTH-BUTTONW)/2)
void window(int x,int y);
void update(int x,int y,int w,int h);
int getkey();
void fcircle(int r);
void start();
int choice();
void draw(int i,int j,int n);
int judge(int n);
void fwin();
int fover();
char back[6][6];
char back1[4][4]={
'#','#','#','#',
'#','B','E','C',
'#',' ','D','H',
'#','F','G','A'
};
char back2[4][4]={
'#','#','#','#',
'#','E','H','C',
'#','G','A','F',
'#','D',' ','B'
};
char back3[5][5]={
'#','#','#','#','#',
'#','G','I','L','J',
'#','E','H','A','F',
'#','C',' ','K','M',
'#','N','B','O','D'
};
char back4[5][5]={
'#','#','#','#','#',
'#','F','M','D','I',
'#','A','K',' ','O',
'#','E','H','N','C',
'#','B','L','G','J'
};
char back5[6][6]={
'#','#','#','#','#','#',
'#','C','D','F','O','X',
'#','H','G','B','J','P',
'#',' ','E','A','L','V',
'#','N','I','K','M','Q',
'#','T','S','U','R','W'
};
char back6[6][6]={
'#','#','#','#','#','#',
'#','C','E','B','J','V',
'#','F','A','G','I','W',
'#','D','H',' ','L','S',
'#','M','N','K','O','Q',
'#','X','U','T','R','P'
};
char back7[6][6]={
'#','#','#','#','#','#',
'#','G','E','A','O','Q',
'#','H','D','F','N','S',
'#','B',' ','C','I','V',
'#','L','J','M','K','W',
'#','X','U','T','R','P'
};
void map(int level,int n);
void fstep(float step);
void flevel(int level);
void main(){
int gdriver=VGA,gmode=VGAHI;
int i,j;
int nulli,nullj;
int key;
int n=3;
float step;
int win,over,level=1;
initgraph(&gdriver,&gmode,"");
window(LEFT,TOP);
start();
START:
win=0;
step=STEP;
level=choice();
flevel(level);
if(level==1||level==2)n=3;
if(level==3||level==4)n=4;
if(level==5||level==6||level==7)n=5;
map(level,n);
update(LEFT,TOP,WIDTH,WIDTH);
while(1){
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(back[i][j]==' '){
nulli=i; nullj=j;
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++){
draw(i,j,n);
}
fstep(step);
key=getkey();
switch(n){
case 3:step-=1.5;break;
case 4:step-=0.8;break;
case 5:step-=0.35;break;
}
if( (key==0x4b00||key==0x1e41)&&(nulli!=n) ){
back[nulli][nullj]=back[nulli+1][nullj];
back[nulli+1][nullj]=' ';
}
if( (key==0x4d00||key==0x2044)&&(nulli!=1) ){
back[nulli][nullj]=back[nulli-1][nullj];
back[nulli-1][nullj]=' ';
}
if( (key==0x4800||key==0x1157)&&(nullj!=n) ){
back[nulli][nullj]=back[nulli][nullj+1];
back[nulli][nullj+1]=' ';
}
if( (key==0x5000||key==0x1f53)&&(nullj!=1) ){
back[nulli][nullj]=back[nulli][nullj-1];
back[nulli][nullj-1]=' ';
}
win=judge(n);
if(key==0x011b||step<=0||win==1)break;
}
if(win==1)fwin();
over=fover();
if(over==1)goto START;
closegraph();
}
void window(int x,int y){
setbkcolor(BLACK);
setfillstyle(1,LIGHTGRAY);
bar3d(x-20,y-50,getmaxx()-(x-10),getmaxy()-(y-40),5,1);
setfillstyle(1,LIGHTGREEN);
bar3d(x,y,getmaxx()-x,getmaxy()-y,3,1);
setfillstyle(1,LIGHTGRAY+1);
bar3d(x,y-35,x+50,y-10,2,1);
bar3d(x+50+10,y-35,x+100,y-10,2,1);
bar3d(x+100+10,y-35,x+150,y-10,2,1);
bar3d(x+150+10,y-35,x+200,y-10,2,1);
bar3d(x+200+10,y-35,x+250,y-10,2,1);
bar3d(x+250+10,y-35,x+340,y-10,2,1);
setcolor(WHITE);
settextstyle(1,0,1);
outtextxy(x+3,y-35+3,"X-Esc");
outtextxy(x+50+10+3,y-35+5,"<- A");
outtextxy(x+100+10+3,y-35+5,"/\\ W");
outtextxy(x+150+10+3,y-35+5,"-> D");
outtextxy(x+200+10+3,y-35+5,"\\/ S");
outtextxy(x+250+10+3,y-35+5,"LEVEL:");
outtextxy(getmaxx()-x-75,getmaxy()-y+17,"5.3.2003");
}
void update(int x,int y,int w,int h){
setfillstyle(1,LIGHTGREEN);
bar(x,y,x+w,y+h);
}
int getkey(void){
char lowbyte;
int press;
while (bioskey(1) == 0){;}
press=bioskey(0);
lowbyte=press&0xff;
press=press&0xff00+toupper(lowbyte);
return(press);
}

void fcircle(int r){
int i;
for(i=1;i<r;i++){
setcolor(i%16);
circle(320,240,i);
delay(7000);
}
}
void start(){
setfillstyle(1,BLUE);
bar(LEFT,TOP,RIGHT,BOTTOM);
fcircle(LEFT-30);
bar(LEFT,TOP,RIGHT,BOTTOM);
setcolor(BROWN);
settextstyle(0,0,2);
outtextxy(LEFT,TOP+40,"Aplication of Snowwin");
settextstyle(1,0,1);
outtextxy(LEFT+100,TOP+140,"by Cui Guangwei");
getch();
}
//下面还有呢
zhangfjj 2004-04-07
  • 打赏
  • 举报
回复
即是初学者
还是要看看书,才行的
建议用王士元
清华出的C高级实用程序设计一书
rorot 2004-04-07
  • 打赏
  • 举报
回复
菜单窗口(TC3.0)
---------------------
#include <conio.h>

// 画出窗口
void window_3d(int x1, int y1, int x2, int y2, int bk_color, int fo_color)
{
textbackground(BLACK);
window(x1, y1, x2, y2);
clrscr();
textbackground(bk_color);
textcolor(fo_color);
window(x1-1, y1-1, x2-1, y2-1);
clrscr();
}

int main()
{
int out = 0;
char ch;
directvideo = 0;
textmode(3);
clrscr();
while (out != 1)
{
textbackground(WHITE);
textcolor(BLACK);
window(1, 1, 80, 25);
clrscr();
gotoxy(12, 5);
printf( " MENU CHOICE\n");
gotoxy(10, 7);
printf( "'w' Write Student Message" );
gotoxy(10, 8);
printf( "'v' View Student Message" );
gotoxy(10, 9);
printf( "'q' Quit " );
gotoxy(10, 11);
printf( "YOUR CHOICE: " );
scanf ( "%c", &ch );
switch(ch)
{
case 'w':
clrscr();
window_3d(50, 6, 70, 10, GREEN, WHITE);
printf( " Write Message");
gotoxy(1,3);
printf( " Press any key" );
getch();
break;
case 'v':
clrscr();
window_3d(50, 14, 70, 18, BLUE, WHITE);
printf( " Student Message" );
gotoxy(1, 3);
printf( " Press any key" );
getch();
break;
case 'q':
out = 1;
break;
}
}
return 0;
}
一、C语言自我YY1)、C语言是许多高级计算机语言的基础,学好C语言能更好的学习其他高级语言,为以后的学习打基础;往深学C语言的话那就是学到C在Linux里的应用,Linux十分强大。2)、C语言是一种计算机程序设计语言。具有高级语言的特点,又具有汇编语言的特点。C语言可作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。3)、应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画。具体应用比如单片机以及嵌入式系统开发。4)、C语言是面向过程语言,C语言通过windows/linux平台下编译的,是直接运行在windows/linux平台下的,而XX始终是运行在他的虚拟机之上的;所以理论上C语言能做一些相对于比较底层的工作,像XX就不能编写Windows病毒。5)、如果要利用编程来做一些windows优化工作的话,建议还是利用C语言C语言是目前世界上流行、使用最广泛的高级程序设计语言6、很多编译器,几乎所有操作系统Windows,Linux,Unix的大部分代码都是C,C在背后做了很多东西的,也许开发游戏用C++,安卓用XX更为合适,图形界面的用其他语言开发效率更高一些(因为他们封装了很多东西),但同样的原因导致略微接近底层的功能其他语言根本干不了!Windows的API都是按照C语言的格式给的,这也很能说明问题!嵌入式开发更是离不了C语言!纵观电脑发展几十年,C语无所不能呀!

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧