亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? smbfunc.c

?? 用c語言編寫的超級瑪麗源程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
//SET UP ALL OF THE GRAPHICS AND OTHER JUNK//////////////////////////////////
void init()
{
  int loop;
  x_set_mode(X_MODE_320x240,320);	//SET MODE X//
  x_set_tripplebuffer(240);		//INSTALL TRIPPLE BUFFER//
  install_new_key_handler();		//INSTALL KEYBOARD HANDLER//
  x_install_vsync_handler(1);		//INSTALL VSYNC HANDLER//
  for (loop=0;loop<52;loop++)		//ALLOCATE MEM FOR GRAPHICS//
    if ((data.block[loop]=(char far *)malloc(258))==NULL)
      exitgame();
  for (loop=0;loop<3;loop++)
    if ((data.coin[loop]=(char far *)malloc(258))==NULL)
      exitgame();
  if ((bcoin=(cointype *)malloc(sizeof(cointype)))==NULL)
    exitgame();
  bcoin->next=NULL;
  if ((bscore=(scoretype *)malloc(sizeof(scoretype)))==NULL)
    exitgame();
  bscore->next=NULL;
  for (loop=0;loop<2;loop++)
  {
    player[loop].lives=3;
    player[loop].level=1;
    player[loop].screenx=0;
  }
}

//FILL SCREEN ///////////////////////////////////////////////////////////////
void fillscreen(int color)
{
  x_rect_fill(32,0,288,224,HiddenPageOffs,color);
}

//GET INPUTS FROM DATA FILES/////////////////////////////////////////////////
int getinputs()
{
  FILE *in;
  int count,loop1,loop2,loop3,yinit,blocknum,backnum;
  char *temp,ch,levelfile[13],graphfile[13];
  char far *tempbm;
  strcpy(levelfile,"LEVEL000.DAT");
  levelfile[7]=player[curplay].level%10+48;
  if (player[curplay].level>9)
    levelfile[6]=player[curplay].level/10+48;
  if ((in=fopen(levelfile,"r"))==NULL)
  {
    exitgame();
    printf("%s could not be found!\n",levelfile);
    exit(1);
  }
  data.maxlength=(int)fgetc(in);
  yinit=(int)fgetc(in);
  data.startpos[0]=(int)fgetc(in);
  data.startpos[1]=(int)fgetc(in);
  blocknum=(int)fgetc(in);
  backnum=(int)fgetc(in);
  fseek(in,0,SEEK_SET);
  for (loop1=0;loop1<14;loop1++)
    for (loop2=0;loop2<=data.maxlength;loop2++)
    {
      ch=getc(in);
      if(ch<='0')
	data.world[loop1][loop2]=0;
      if (ch>='a' && ch<='z')
	data.world[loop1][loop2]=ch-70;
      if (ch>='A' && ch<='Z')
	data.world[loop1][loop2]=ch-64;
      if (loop1==0)
	data.world[loop1][loop2]=0;
    }
  fclose(in);
  strcpy(graphfile,"BLOCK000.PCX");
  graphfile[7]=blocknum;
  if ((in=fopen(graphfile,"rb"))==NULL)
  {
    exitgame();
    printf("%s could not be found!\n",graphfile);
    exit(1);
  }
  temp=getpcx(in,temp,6000);
  tempbm=(char far *)farmalloc(258);
  tempbm[0]=tempbm[1]=16;
  for (loop1=0;loop1<26;loop1++)
  {
    count=2;
    for (loop2=0;loop2<16;loop2++)
      for (loop3=0;loop3<16;loop3++)
	tempbm[count++]=temp[loop1*17+(loop2+1)*320+loop3+1];
    x_bm_to_pbm(tempbm,data.block[loop1+26]);
  }
  free(temp);
  fseek(in,-768,SEEK_END);
  for (loop1=0;loop1<256;loop1++)
  {
    data.palette[loop1].red=(getc(in)>>2);
    data.palette[loop1].green=(getc(in)>>2);
    data.palette[loop1].blue=(getc(in)>>2);
  }
  fclose(in);
  strcpy(graphfile,"BGRND000.PCX");
  graphfile[7]=backnum;
  if ((in=fopen(graphfile,"rb"))==NULL)
  {
    exitgame();
    printf("%s could not be found!\n",graphfile);
    exit(1);
  }
  temp=getpcx(in,temp,6000);
  for (loop1=0;loop1<26;loop1++)
  {
    count=2;
    for (loop2=0;loop2<16;loop2++)
      for (loop3=0;loop3<16;loop3++)
	tempbm[count++]=temp[loop1*17+(loop2+1)*320+loop3+1];
    x_bm_to_pbm(tempbm,data.block[loop1]);
  }
  free(temp);
  fclose(in);
  strcpy(graphfile,"COIN.PCX");
  if ((in=fopen(graphfile,"rb"))==NULL)
  {
    exitgame();
    printf("%s could not be found!\n",graphfile);
    exit(1);
  }
  temp=getpcx(in,temp,6000);
  for (loop1=0;loop1<3;loop1++)
  {
    count=2;
    for (loop2=0;loop2<16;loop2++)
      for (loop3=0;loop3<16;loop3++)
	tempbm[count++]=temp[loop1*17+(loop2+1)*320+loop3];
    x_bm_to_pbm(tempbm,data.coin[loop1]);
  }
  farfree(tempbm);
  free(temp);
  fclose(in);
  for (loop1=0;loop1<256;loop1++)
    setpalette(loop1,data.palette[loop1]);
  return(yinit);
}

//GET MARIO DATA/////////////////////////////////////////////////////////////
void getmario()
{
  FILE *marioin;
  int loop1,loop2,loop3;
  char *temp;
  if ((marioin=fopen("MARIO.PCX","rb"))==NULL)
  {
    exitgame();
    printf("MARIO.PCX could not be found!\n");
    exit(1);
  }
  fseek(marioin,128,SEEK_SET);
  temp=(char *)malloc(6000);
  temp=getpcx(marioin,temp,6000);
  for (loop1=0;loop1<7;loop1++)
    for (loop2=0;loop2<=15;loop2++)
      for (loop3=0;loop3<=15;loop3++)
	data.mario[loop1][loop2][loop3]=temp[loop1*17+(loop2+1)*320+loop3+1];
  fseek(marioin,-765,SEEK_END);
  for (loop1=0;loop1<2;loop1++)
  {
    data.marioc[loop1].red=(getc(marioin)>>2);
    data.marioc[loop1].green=(getc(marioin)>>2);
    data.marioc[loop1].blue=(getc(marioin)>>2);
  }
  fseek(marioin,-750,SEEK_END);
  for (loop1=0;loop1<2;loop1++)
  {
    data.luigic[loop1].red=(getc(marioin)>>2);
    data.luigic[loop1].green=(getc(marioin)>>2);
    data.luigic[loop1].blue=(getc(marioin)>>2);
  }
  fclose(marioin);
  free(temp);
}

char *getpcx(FILE *file, char *temp, int length)
{
  long int count=0;
  int numbytes,loop;
  unsigned char ch;
  fseek(file,128,SEEK_SET);
  temp=(char *)malloc(length);
  while(count<length)
  {
    ch=fgetc(file);
    if ((ch>=192 && ch<=255))
    {
      numbytes=ch-192;
      ch=fgetc(file);
      for(loop=0;loop<numbytes;loop++)
	temp[count++]=ch;
    }
    else
      temp[count++]=ch;
  }
  return(temp);
}

//SET PALETTE////////////////////////////////////////////////////////////////
void setpalette(int index, colorpal color)
{
  outp(0x3c6,0xff);
  outp(0x3c8,index);
  outp(0x3c9,color.red);
  outp(0x3c9,color.green);
  outp(0x3c9,color.blue);
}

//CALCULATE CURRENT SCREEN///////////////////////////////////////////////////
void drawscreen(int x)
{
  int loop1,loop2,back,x2;
  static int dy;
  status();
  x2=x;
  back=0;
  while(x2>=16)
  {
    x2-=16;
    back++;
  }
  for (loop1=1;loop1<=13;loop1++)
    for (loop2=back;loop2<=back+16;loop2++)
      if (data.world[loop1][loop2]>0)
      {
	if (data.bumped[0]==loop2 && data.bumped[1]==loop1)
	{
	  dy+=data.bumploop;
	  x_put_masked_pbm((loop2<<4)-x+32,(loop1<<4)+dy,HiddenPageOffs,data.block[data.world[loop1][loop2]-1]);
	  data.bumploop++;
	  if(data.bumploop==3)
	  {
	    data.bumploop=0;
	    data.bumped[0]=0;
	    data.bumped[1]=0;
	    dy=0;
	  }
	}
	else
	  x_put_masked_pbm((loop2<<4)-x+32,(loop1<<4),HiddenPageOffs,data.block[data.world[loop1][loop2]-1]);
      }
  drawcoin(x);
  drawscore(x);
  x_rect_fill(15,0,32,224,HiddenPageOffs,0);
  x_rect_fill(288,0,306,224,HiddenPageOffs,0);
}

//DRAW INFO ON TOP OF SCREEN/////////////////////////////////////////////////
void status()
{
  static char pscore[7]="000000";
  char pscore2[7];
  char slevel[4]="1-1";
  char scoins[3]="00";
  static char stime[4]="   ";
  int loop1,loop2;
  if (curplay==0)
    graphstring(34,1,"MARIO",TEXTCOLOR,HiddenPageOffs);
  else
    graphstring(34,1,"LUIGI",TEXTCOLOR,HiddenPageOffs);
  graphstring(180,1,"WORLD",TEXTCOLOR,HiddenPageOffs);
  graphstring(254,1,"TIME",TEXTCOLOR,HiddenPageOffs);
  if(player[curplay].score[1]!=player[curplay].score[0])
  {
    itoa(player[curplay].score[1],pscore2,10);
    loop2=5;
    for(loop1=strlen(pscore2)-1;loop1>=0;loop1--)
	pscore[loop2--]=pscore2[loop1];
    graphstring(34,9,pscore,BACKGROUND,HiddenPageOffs);
  }
  strcpy(pscore,"000000");
  itoa(player[curplay].score[0],pscore2,10);
  loop2=5;
  for(loop1=strlen(pscore2)-1;loop1>=0;loop1--)
    pscore[loop2--]=pscore2[loop1];
  graphstring(34,9,pscore,TEXTCOLOR,HiddenPageOffs);
  player[curplay].score[1]=player[curplay].score[0];
  if (times[1]!=times[2])
  {
    itoa(times[0],stime,10);
    graphstring(260,9,stime,BACKGROUND,HiddenPageOffs);
    times[2]=times[1];
    times[0]--;
    itoa(times[0],stime,10);
  }
  graphstring(260,9,stime,TEXTCOLOR,HiddenPageOffs);
  slevel[0]=(char)(player[curplay].level/5+1-208);
  slevel[2]=(char)(player[curplay].level%5-208);
  graphstring(188,9,slevel,TEXTCOLOR,HiddenPageOffs);
  if (player[curplay].coins[0]!=player[curplay].coins[1])
  {
    itoa(player[curplay].coins[1],scoins,10);
    if (player[curplay].coins[1]<10)
    {
      scoins[1]=scoins[0];
      scoins[0]='0';
    }
    graphstring(116,9,scoins,BACKGROUND,HiddenPageOffs);
    player[curplay].coins[1]=player[curplay].coins[0];
  }
  itoa(player[curplay].coins[0],scoins,10);
  if (player[curplay].coins[0]<10)
  {
    scoins[1]=scoins[0];
    scoins[0]='0';
  }
  graphchar(108,9,'x',TEXTCOLOR,HiddenPageOffs);
  graphstring(116,9,scoins,TEXTCOLOR,HiddenPageOffs);
  x_line(100,8,101,8,20,HiddenPageOffs);
  x_put_pix(102,8,HiddenPageOffs,0);
  x_line(100,15,101,15,20,HiddenPageOffs);
  x_put_pix(102,15,HiddenPageOffs,0);
  for(loop1=0;loop1<6;loop1++)
  {
    x_line(99,9+loop1,102,9+loop1,20,HiddenPageOffs);
    x_put_pix(103,9+loop1,HiddenPageOffs,0);
  }
}

//CALCULATE AND DRAW MARIO///////////////////////////////////////////////////
void drawmario(int x, int y)
{
  int loop1,loop2;
  for (loop1=0;loop1<=15;loop1++)
    for (loop2=0;loop2<=15;loop2++)
      if (data.mario[abs(data.sprite/2)][loop1][loop2]>=0)
	if (y-15+loop1>=0 && y-15+loop1<224)
	{
	  if (data.direction==0)
	    x_put_pix(x+loop2+32,y-15+loop1,HiddenPageOffs,data.mario[data.sprite/2][loop1][loop2]);
	  else x_put_pix(x+15-loop2+32,y-15+loop1,HiddenPageOffs,data.mario[data.sprite/2][loop1][loop2]);
	}
}

//DRAW CHARACTERS////////////////////////////////////////////////////////////
void graphchar(int xc, int yc, char c,int color, unsigned offset)
{
  int x,y;
  unsigned char data;
  unsigned char far *work;
  unsigned char bitmask=0x80;
  work=charset+(c<<3);
  for(y=0;y<8;y++)
  {
    bitmask=0x80;
    for(x=0;x<8;x++)
    {
      if((*work & bitmask))
	x_put_pix(x+xc,y+yc,offset,color);
      bitmask=(bitmask>>1);
    }
  work++;
  }
}

//DRAW A STRING//////////////////////////////////////////////////////////////
void graphstring(int x,int y,char *string,int color, unsigned offset)
{
  int loop;
  for(loop=0;loop<strlen(string);loop++)
    graphchar(x+loop*8,y,string[loop],color,offset);
}

//DRAW SCREEN SHOWING LEVEL AND NUMBER OF LIVES//////////////////////////////
void levelscreen()
{
  int x=75;
  int y=110;
  int wait[3];
  char print[3];
  data.sprite=0;
  data.direction=0;
  fillscreen(0);
  status();
  drawmario(x,y);
  graphstring(100,82,"WORLD",TEXTCOLOR,HiddenPageOffs);
  graphchar(132,100,'x',TEXTCOLOR,HiddenPageOffs);
  graphchar(156,82,'-',TEXTCOLOR,HiddenPageOffs);
  print[0]=(char)(player[curplay].level/5+1-208);
  graphchar(148,82,print[0],TEXTCOLOR,HiddenPageOffs);
  print[0]=(char)(player[curplay].level%5-208);
  graphchar(164,82,print[0],TEXTCOLOR,HiddenPageOffs);
  itoa(player[curplay].lives,print,10);
  graphstring(148,100,print,TEXTCOLOR,HiddenPageOffs);
  x_page_flip(0,0);
  gettime(&t);
  wait[0]=t.ti_sec;
  wait[1]=wait[0];
  wait[2]=0;
  while(wait[2]!=3)
  {
    gettime(&t);
    wait[0]=t.ti_sec;
    if(wait[0]!=wait[1])
    {
      wait[1]=wait[0];
      wait[2]++;
    }
  }
}

//TITLE SCREEN AND CHOOSING NUMBER OF PLAYERS////////////////////////////////
int startscreen()
{
  int x=40;
  int y=191;
  int choice,screenx,offset,numplayers=1;
  FILE *logoin;
  int count,loop1,loop2;
  char *temp;
  data.sprite=0;
  screenx=0;
  if ((logoin=fopen("LOGO.PCX","rb"))==NULL)
  {
    exitgame();
    printf("LOGO.PCX not found!\n");
    exit(1);
  }
  fseek(logoin,128,SEEK_SET);
  temp=getpcx(logoin,temp,31040);
  count=-111;
  fillscreen(BACKGROUND);
  drawscreen(screenx);
  drawmario(x,y);
  for (loop1=0;loop1<97;loop1++)
  {
    count+=111;
    for (loop2=0;loop2<209;loop2++)
      x_put_pix(loop2+55,loop1+20,HiddenPageOffs,temp[count++]);
  }
  free(temp);
  fclose(logoin);
  graphstring(160,118,"1985 NINTENDO",TEXTCOLOR,HiddenPageOffs);
  graphstring(120,130,"1 PLAYER GAME",TEXTCOLOR,HiddenPageOffs);
  graphstring(120,146,"2 PLAYER GAME",TEXTCOLOR,HiddenPageOffs);
  graphstring(120,162,"TOP - 000000",TEXTCOLOR,HiddenPageOffs);
  x_page_flip(0,0);
  while(!keybuf[KEY_ENTER])

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品伊人久久久久7777人| 国产精品性做久久久久久| 久久国产剧场电影| 色天使色偷偷av一区二区| 欧美一区二区三区男人的天堂| 国产免费久久精品| 亚洲国产一区视频| av在线不卡观看免费观看| 在线播放中文一区| 亚洲精品欧美在线| 成人动漫一区二区在线| 精品欧美一区二区三区精品久久| 国产精品高潮久久久久无| 美国三级日本三级久久99| 一本久久精品一区二区| 欧美激情综合在线| 国产真实乱子伦精品视频| 欧美一区二区高清| 五月天一区二区| 欧美性受xxxx| 亚洲黄色小视频| 一本色道久久综合亚洲精品按摩| 久久久久九九视频| 国产精品亚洲专一区二区三区| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲风情在线资源站| 成人夜色视频网站在线观看| 欧美xxx久久| 蜜桃av一区二区三区电影| 69堂国产成人免费视频| 亚洲福利一二三区| 欧美猛男超大videosgay| 亚洲在线视频网站| 精品视频在线视频| 日韩高清不卡一区二区三区| 777午夜精品视频在线播放| 天天色图综合网| 欧美日韩aaaaa| 奇米色一区二区| 日韩欧美国产三级| 国产一区二区三区观看| 国产欧美日韩视频一区二区| 成人永久免费视频| 亚洲日本在线天堂| 欧美日韩一区在线| 日本特黄久久久高潮| 精品免费国产一区二区三区四区| 狠狠色2019综合网| 日本一区二区免费在线观看视频| 粉嫩aⅴ一区二区三区四区五区| 亚洲国产电影在线观看| 一本到高清视频免费精品| 亚洲一区二区视频在线| 欧美一区二区三区啪啪| 国产酒店精品激情| 综合av第一页| 4438x成人网最大色成网站| 激情久久久久久久久久久久久久久久| 精品国产露脸精彩对白| 成人在线一区二区三区| 亚洲综合色网站| 亚洲精品在线观看网站| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 欧美日韩国产综合一区二区三区| 天天综合色天天综合色h| 精品电影一区二区| 97国产精品videossex| 日本视频一区二区| 亚洲人123区| 欧美日本乱大交xxxxx| 国产一区二区三区精品欧美日韩一区二区三区 | 日本一区二区久久| 欧美日韩在线三区| 国产盗摄精品一区二区三区在线| 亚洲视频免费观看| 精品久久久久久综合日本欧美| 成人av资源在线| 欧美a级理论片| 综合欧美一区二区三区| 日韩一区二区电影网| 99久久伊人久久99| 日本女人一区二区三区| 亚洲视频一区在线观看| 精品欧美一区二区三区精品久久| 色综合中文字幕国产 | 在线91免费看| 成人免费毛片片v| 日韩av网站免费在线| 亚洲欧洲日产国码二区| 久久一夜天堂av一区二区三区| 在线视频一区二区三区| 大胆亚洲人体视频| 精品一区二区三区免费视频| 夜夜精品视频一区二区| 国产精品系列在线| 精品成人在线观看| 欧美一区二区三区四区高清 | 国产精品久久久久久久浪潮网站 | 久久久高清一区二区三区| 欧美精品在线观看播放| 色综合久久综合网欧美综合网| 国产精品456| 久久电影网电视剧免费观看| 香蕉成人啪国产精品视频综合网 | 99视频热这里只有精品免费| 另类中文字幕网| 蜜臀av一区二区在线免费观看| 夜夜嗨av一区二区三区中文字幕| 亚洲欧洲国产日韩| 国产精品女主播在线观看| 国产欧美精品一区| 久久久国产午夜精品 | 最新国产成人在线观看| 欧美高清一级片在线观看| 26uuu亚洲综合色| 精品国产成人系列| 久久综合精品国产一区二区三区| 精品电影一区二区| 久久精品在线免费观看| 精品国内二区三区| 久久精品人人做人人爽人人| 欧美精品一区二区三| 国产亚洲欧美色| 国产精品嫩草99a| 中文字幕中文字幕在线一区| 中文字幕亚洲在| 亚洲猫色日本管| 亚洲无人区一区| 免费成人结看片| 国产一区二区三区四区五区美女| 韩国一区二区视频| 成+人+亚洲+综合天堂| 91在线看国产| 欧美日本一区二区三区| 欧美va天堂va视频va在线| 久久久久久电影| 国产精品国产三级国产aⅴ无密码| 中文字幕亚洲综合久久菠萝蜜| 一区二区三区成人| 奇米精品一区二区三区在线观看| 国产一区二区三区综合| www.一区二区| 欧美精品日韩一区| 久久久激情视频| 亚洲网友自拍偷拍| 韩国成人福利片在线播放| av亚洲精华国产精华| 欧美视频三区在线播放| 精品国产一区二区三区久久影院| 国产精品久久久久婷婷二区次| 亚洲一区影音先锋| 国产又粗又猛又爽又黄91精品| av亚洲精华国产精华精华| 91精品久久久久久久91蜜桃| 欧美国产成人精品| 日日夜夜精品免费视频| 国产大陆亚洲精品国产| 欧美日韩高清一区二区三区| 国产三级久久久| 婷婷久久综合九色国产成人| 成人综合婷婷国产精品久久免费| 欧美日韩国产高清一区二区三区 | 亚洲小少妇裸体bbw| 久久机这里只有精品| 色老汉一区二区三区| 欧美tk丨vk视频| 亚洲国产一区二区三区青草影视| 国产成人激情av| 欧美一区二区三区免费在线看 | 成人免费毛片app| 欧美mv日韩mv亚洲| 亚洲超丰满肉感bbw| 成人国产精品视频| 精品国产123| 日韩高清国产一区在线| 91老师国产黑色丝袜在线| 亚洲精品一区二区三区99| 午夜影院在线观看欧美| 99re这里只有精品6| 国产欧美日韩在线| 久久se精品一区精品二区| 欧美日韩国产成人在线91| 亚洲九九爱视频| 99免费精品在线观看| 欧美国产视频在线| 国产老肥熟一区二区三区| 日韩免费看的电影| 日韩电影免费在线| 欧美少妇一区二区| 一区二区三区在线不卡| 色综合一区二区| 亚洲欧美影音先锋| 成人免费观看视频| 欧美激情一区二区三区四区| 精品中文字幕一区二区| 日韩免费电影网站| 韩国女主播一区| 久久精品视频网| 国产69精品久久99不卡| 国产网站一区二区三区|