?? cgame.txt
字號:
/* WIN-TC BGI 圖形編程模板 */ 用的是win-tc 1.9或更高
#i nclude "stdio.h"
#i nclude "dos.h "
#i nclude "stdlib.h"
#i nclude "Conio.h"
#i nclude "graphics.h"
#define closegr closegraph
void *buffer;
FILE *fp;
void hz(int x,int y,int a,int COL,int b,char *s) {
int ROW;
char buffer[32];
register m,n,i,j,k;
unsigned char qh,wh;
unsigned long offset;
ROW=COL;
while(*s)
{
qh=*(s)-0xa0;
wh=*(s+1)-0xa0;
offset=(94*(qh-1)+(wh-1))*32L;
fseek(fp,offset,SEEK_SET);
fread(buffer,32,1,fp);
for (i=0;i<16;i++)
for(n=0;n<ROW;n++)
for(j=0;j<2;j++)
for(k=0;k<8;k++)
for(m=0;m<COL;m++)
if (((buffer[i*2+j]>>(7-k))&0x1)!=NULL)
putpixel(x+8*j*COL+k*COL+m,y+i*ROW+n,b);
s+=2;
x+=a;
}
}
’以上是用于從hz16文件讀寫漢字不用管
initgr(void) /* BGI初始化 */
{
int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同樣效果 */
registerbgidriver(EGAVGA_driver);/* 注冊BGI驅動后可以不需要.BGI文件的支持運行 */
initgraph(&gd, &gm, "");
}
‘以上是用開建立圖形模式
int main(void)
{
int i;
int m;
FILE *fpp;
int apath[20][20];
int mi=0;
int c;
int fx,fy;
int x=5;
int y=9;
int path[20][20]={
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,1,0,0,8,0,1,0,0,0,0,0,0,0,0,1,
1,0,0,0,1,1,0,1,0,1,1,1,0,0,0,0,0,0,0,1,
1,0,0,0,1,0,0,1,0,1,0,1,0,0,0,0,0,0,0,1,
1,0,0,0,1,0,1,0,0,8,0,1,0,0,0,0,0,0,0,1,
1,0,0,0,1,0,8,0,0,0,0,1,0,0,0,0,0,0,0,1,
1,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
};
’以上定地圖數組
initgr(); /* BGI初始化 */
rmap:
‘讀hz16字庫
((fp=fopen("C:\\Win-TC\\ccdos\\Hzk16","rb"))==NULL)
{ printf("Can't open haz16,Please add it");
getch(); closegraph(); exit(0);
}
‘用兩個for從數組讀地圖數,是8有箱子,否則1為墻,0為空地,9是搬運工
/* for (fx=0;fx<20;fx++) //雙循環畫地圖
{
for (fy=0;fy<20;fy++)
{
if (path[fx][fy]==1) {circle(fy*10+100, fx*10+100,5);} //數組的地址[x][y]與地圖circle(y,x,5) 中的x,y相反?
if (path[fx][fy]==8) {circle(fy*10+100, fx*10+100,1);}
if (path[fx][fy]==9) {circle(fy*10+100, fx*10+100,2);}
}
}
*/
sw:
c=getch();
'讀鍵值看上下右左,wsda鍵
h(c)
{
case 'w':{
‘先看x-1,y是不是沒有箱子8或墻0,沒有就可以x-1,即上移,注意其中數組和屏幕對應關系是反的。x-1是向上移
if (path[x-1][y]==0)
{path[x][y]=0;
x=x-1;
path[x][y]=5;
}
if (path[x-1][y]==8)
{
//printf("hi ,how do you do");
hz(10,245,25,1,4,"你是誰呀");
getche();
if (path[x-1][y]==8&&path[x-2][y]!=1&&path[x-2][y]!=8)
{path[x][y]=0;
x=x-1;
path[x][y]=5;
path[x-1][y]=8;
}
}
‘這面看是不是碰到箱了,碰到了打出“不要打我呀”,以后改為rpg游戲用做對話用
if (path[x-1][y]==9)
{
//printf("no good");
hz(10,245,25,1,4,"不要打我呀!");
getche();
}
}
break;
case 's':{
if (path[x+1][y]==0)
{path[x][y]=0;
x=x+1;
path[x][y]=5;
}
if (path[x+1][y]==8&&path[x+2][y]!=1&&path[x+2][y]!=8)
{path[x][y]=0;
x=x+1;
path[x][y]=5;
path[x+1][y]=8;
}
}
break;
case 'a':{
if (path[x][y-1]==0)
{path[x][y]=0;
y=y-1;
path[x][y]=5;
}
if (path[x][y-1]==8&&path[x][y-2]!=1&&path[x][y-2]!=8)
{path[x][y]=0;
y=y-1;
path[x][y]=5;
path[x][y-1]=8;
}
}
break;
case 'd':
{
if (path[x][y+1]==0)
{path[x][y]=0;
y=y+1;
path[x][y]=5;
}
if (path[x][y+1]==8&&path[x][y+2]!=1&&path[x][y+2]!=8)
{path[x][y]=0;
y=y+1;
path[x][y]=5;
path[x][y+1]=8;
}
}
break;
case 'q':{
goto en;
}
}
//if (path[x][y+1]==8)exit();
//if (path[x][y-1]==8)exit();
//if (path[x+1][y]==8)exit();
//if (path[x-1][y]==8)exit();
//if(path[18][18]==0&&path[4][1]==1) goto dn;
cleardevice();
for (fx=0;fx<20;fx++) //雙循環畫地圖
{
for (fy=0;fy<20;fy++)
{
if (path[fx][fy]==1) {circle(fy*10+100, fx*10+100,5);} //數組的地址[x][y]與地圖circle(y,x,5) 中的x,y相反?
if (path[fx][fy]==8) {circle(fy*10+100, fx*10+100,1);}
if (path[fx][fy]==5) {circle(fy*10+100, fx*10+100,3);}
if (path[fx][fy]==9) {circle(fy*10+100, fx*10+100,8);}
}
}
if (path[8][10]!=8&&path[8][10]!=5) {circle(10*10+100, 8*10+100,2);} //判斷是否推抵?
if (path[9][10]!=8&&path[9][10]!=5) {circle(10*10+100, 9*10+100,2);}
if (path[10][10]!=8&&path[10][10]!=5) {circle(10*10+100, 10*10+100,2);}
if (path[8][10]==8&&path[9][10]==8&&path[10][10]==8){
mi=20;
goto dn;
}
goto sw;
dn: /* 暫停一下,看看前面繪圖代碼的運行結果 */
/* 恢復TEXT屏幕模式 */
//outtextxy(200,200,"sadfasfasfsafsaf");
// cleardevice();
hz(10,245,25,1,4,"關鍵在于參與!這我是這里持游戲 是中中是我游戲");
hz(10,145,25,1,4,"你看過我的游戲嗎,這就是其中的一個。");
getch();
'下面是建立讀地圖文件,也就是從test.dat讀出數組值,并將現在地圖數組附 值
cleardevice();
fpp=fopen("test.dat", "r"); /*打開文字文件只讀*/
//fgets(s, 24, fp); /*從文件中讀取23個字符*/
//printf("%s", s); /*輸出所讀的字符串*/
// fscanf(fp, "%d", &i); /*讀取整型數*/ //putchar(fgetc(fp)); /*讀取一個字符同時輸出*/
// fscanf(fp, "%d", &m);
for (i=0;i<20;i++)
{for (m=0;m<20;m++)
fscanf(fpp,"%d",&apath[i][m+mi]);
}
//printf("%d", i); /*輸出所讀整型數*/
//printf("%d", m);
for (i=0;i<20;i++)
{for (m=0;m<20;m++)
path[i][m]= apath[i][m+mi];
//fgets(m, 17, fp); /*讀取16個字符*/
//puts(m); /*輸出所讀字符串*/
}
fclose(fp);
goto rmap;
en:
getch();
closegr();
return 0;
}
'地圖寫入,下面是建立test.dat文件,注意將其放入同一目錄中
#i nclude<stdio.h>
main()
{
//char *s="That's good news"; /*定義字符串指針并初始化*/
int i;
int m;
int apath[20][40]={
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,1,1,1,1,1,1,1,0,1,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0,1,
1,0,0,0,0,8,0,9,0,0,0,0,1,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,
1,0,0,0,0,1,1,1,0,0,0,1,1,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,4,
6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,6,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,9,0,0,0,1,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
}; /*定義整型變量并初始化*/
FILE *fp; /*定義文件指針*/
fp=fopen("test.dat", "w"); /*建立一個文字文件只寫*/
//fputs("Your score of TOEFLis", fp);/*向所建文件寫入一串字符*/
//fputc(':', fp);
for (i=0;i<20;i++)
{ for (m=0;m<40;m++) /*向所建文件寫冒號:*/
fprintf(fp, "%d\n", apath[i][m]); /*向所建文件寫一整型數*/
// fprintf(fp, "%d\n", m);
}
// fprintf(fp, "%s", s); /*向所建文件寫一字符串*/
fclose(fp); /*關閉文件*/
}
'注:漢字,,需要hz16字庫支持!!!hz16文件要放在同主文件一相目錄中 hz16文件即字庫文件,http://www.liaobei.com/有!
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -