⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 这是我买的:白领就业j2me:的代码
💻 C
📖 第 1 页 / 共 2 页
字号:
// *******************************************************//// NAME			: main.c// PROJECT		: HRD// DESCRIPTION	: // DATE			: 2002-11-28// BY			: 陈晋波// // *******************************************************#include <vmgp.h> #include <vstream.h>#include "res.h"#define red		1				//定义红色#define blue	2				//定义兰色#define blank	3				//定义黑色int down=0;						//是否选中0:未选,1:选中.int id=8,id1=0,id2=0;			//被激活的人物编号id,可移动的方向id1,id2.int ticktime=200;				//延时时间.单位微秒.int activeNum[6*3]={100,0,0,					100,0,0,					100,0,0,					100,0,0,					100,0,0,					100,0,0					};			//可活动的人物,:是否可以活动,:活动方向1,:活动方向2.	int ball[12*9]={1, 1, 0, 0,3,0,0,0,0,				2, 1,16, 0,4,0,0,0,0,				3, 1,48, 0,3,0,0,0,0,				4, 1, 0,32,1,0,0,0,0,				5, 1,16,32,2,0,0,0,0,				6, 1,48,32,1,0,0,0,0,				7, 1, 0,48,3,0,0,0,0,				8, 1,16,48,1,0,0,1,0,				9, 1,32,48,1,0,0,1,0,				10,1,48,48,3,0,0,0,0,				11,0,16,64,1,0,0,0,0,				12,0,32,64,1,0,0,0,0};////id,存在,x,y,类型,c上,C左,c下,c右。int map[5*4]={1,1,1,1,			  1,1,1,1,			  1,1,1,1,			  1,1,1,1,			  1,0,0,1};			//地图标识,1:存在,0:为空.//uint8_t *Splash,*Ball[10];		//定义图片变量,数组.int initDrawSprites(void);int32_t LoadRes(uint16_t res_id,uint16_t dst_size,uint8_t**ptrDest);int32_t LoadPackedRes(uint16_t res_id,uint16_t dst_size,uint8_t**ptrDest);void drawrect(int16_t x0,int16_t y0,int16_t x1,int16_t y1,			  int color,int16_t h);void engine(int32_t key);void activeselect(int16_t a,int16_t b);//激活a,取消激活bvoid direct(void);void change(void);void moveball(int direct,int index);void sleep(int nTime);void newgame(void);void textout(int x,int y,char *s);int  menu(void);int	 success(void);void DrawObject(int x,int y,int i);// *******************************************//  调入压缩图片,并解压. //		res_id		:资源中的图片编号,//		dst_size	:该图片的尺寸,//		**ptrDest	:程序中的图片变量.// *******************************************int32_t LoadPackedRes(uint16_t res_id,uint16_t dst_size,uint8_t**ptrDest){		int32_t		handle,size; 		handle = vResOpen(NULL,res_id);  *ptrDest = vNewPtr(dst_size);	size = vDecompress(NULL, *ptrDest, handle, 1024);	vStreamClose(handle);	return size;}// *******************************************//  调入精灵图片,并解压.//		res_id		:资源中的图片编号,//		dst_size	:该图片的尺寸,//		**ptrDest	:程序中的图片变量.// *******************************************int32_t LoadRes(uint16_t res_id,uint16_t dst_size,uint8_t**ptrDest){		int32_t		handle,size; 		handle = vResOpen(NULL,res_id);             // Open the resource  *ptrDest = vNewPtr(dst_size);               // Allocate memory for the resource  size = vResRead(handle, *ptrDest,dst_size); // Read resource to memory	vResClose(handle);                          // Close the resource	return size;}// *******************************************//	初始化游戏引擎.//		1			:调入图片 ,//		2			:描绘所有精灵,//		3			:被激活对象赋初值.// *******************************************int initDrawSprites(void){   int i,key;    /*LoadRes(SPLASH  ,SPLASH_SIZE ,&Splash);  // Load the compressed Splash screen (sprite)    LoadRes(BALL1,BALL1_SIZE,&Ball[0]);   // Load the ball sprite  LoadRes(BALL2,BALL2_SIZE,&Ball[1]);   // Load the ball sprite  LoadRes(BALL3,BALL3_SIZE,&Ball[2]);   // Load the ball sprite  LoadRes(BALL4,BALL4_SIZE,&Ball[3]);   // Load the ball sprite  LoadRes(BALL5,BALL5_SIZE,&Ball[4]);   // Load the ball sprite  LoadRes(BALL6,BALL6_SIZE,&Ball[5]);   // Load the ball sprite  LoadRes(BALL7,BALL7_SIZE,&Ball[6]);   // Load the ball sprite  LoadRes(BALL8,BALL8_SIZE,&Ball[7]);   // Load the ball sprite  LoadRes(BALL9,BALL9_SIZE,&Ball[8]);   // Load the ball sprite  LoadRes(BALL10,BALL10_SIZE,&Ball[9]);   // Load the ball sprite  LoadRes(BALL11,BALL11_SIZE,&Ball[10]);   // Load the ball sprite*/  vSetTransferMode(MODE_BLOCK);               // set transfer mode to block (non transperent)  vDrawObject(0,0,&SPLASH);                    // draw the splashscreen to the "backbuffer"    vFlipScreen(1);    // draw the "backbuffer" to the screen  while(1)  {    key = vGetButtonData();  	if(key==KEY_ENTER) break;  }    vClearScreen(vRGB(0,0,0));   // Clear the "backbuffer" with black  vSetTransferMode(MODE_TRANS);               // set transfermode to transperent        i=0;  DrawObject(0,0,11);  while(i<10)  {      DrawObject(ball[i*9+2],ball[i*9+3],i);	  i++;  }     DrawObject(64,0,10);  activeselect(id,id);  vFlipScreen(1);    // draw the "backbuffer" to the screen//  vDisposePtr(SPLASH);// return memory allocated for splash screen  i=0;  /*while(i<10)  {    vDisposePtr("BALL"+i); 	i++;  }*/    return 1;}void DrawObject(int x,int y,int i){  if(i==0)	vDrawObject(x,y,&BALL1);  if(i==1)	vDrawObject(x,y,&BALL2);  if(i==2)  vDrawObject(x,y,&BALL3);  if(i==3)  vDrawObject(x,y,&BALL4);  if(i==4)  vDrawObject(x,y,&BALL5);  if(i==5)  vDrawObject(x,y,&BALL6);  if(i==6)  vDrawObject(x,y,&BALL7);  if(i==7)  vDrawObject(x,y,&BALL8);  if(i==8)  vDrawObject(x,y,&BALL9);  if(i==9)  vDrawObject(x,y,&BALL10);  if(i==10)  vDrawObject(x,y,&BALL11);  if(i==11)  vDrawObject(x,y,&BALL12);}// *******************************************//	游戏引擎.//		key			:键盘值.// *******************************************void engine(int32_t key){	int i=0,j=0;  	direct();		//判断所有精灵的可移动方向.	//判断没有激活时的移动情况.	if(down==0)			{			while(i<6)//循环激活各个可激活的对象。		{			if(activeNum[i*3]==id)			{				if(activeNum[(i+1)*3]!=100)				{					id=activeNum[(i+1)*3];					id1=activeNum[(i+1)*3+1];					id2=activeNum[(i+1)*3+2];					activeselect(id,activeNum[i*3]);					}				else				{					id=activeNum[0];					id1=activeNum[1];					id2=activeNum[2];					activeselect(id,activeNum[i*3]);					}				break;			}			i++;		}		i=0;			}		//判断激活后的移动情况.	if(down==1)	{		switch(key)		{ 			case KEY_LEFT:				if(id1==4||id2==4)				{					moveball(4,id);										if(ball[id*9+4]==1)					{						map[ball[id*9+3]/16*4+ball[id*9+2]/16]=0;						map[ball[id*9+3]/16*4+ball[id*9+2]/16-1]=1;					}					if(ball[id*9+4]==2)					{						map[ball[id*9+3]/16*4+ball[id*9+2]/16+1]=0;						map[ball[id*9+3]/16*4+ball[id*9+2]/16-1]=1;					}					if(ball[id*9+4]==3)					{						map[ball[id*9+3]/16*4+ball[id*9+2]/16]=0;						map[ball[id*9+3]/16*4+4+ball[id*9+2]/16]=0;						map[ball[id*9+3]/16*4+ball[id*9+2]/16-1]=1;						map[ball[id*9+3]/16*4+4+ball[id*9+2]/16-1]=1;					}					if(ball[id*9+4]==4)					{						map[ball[id*9+3]/16*4+ball[id*9+2]/16+1]=0;						map[ball[id*9+3]/16*4+4+ball[id*9+2]/16+1]=0;						map[ball[id*9+3]/16*4+ball[id*9+2]/16-1]=1;						map[ball[id*9+3]/16*4+4+ball[id*9+2]/16-1]=1;					}							ball[id*9+2]=ball[id*9+2]-16;				}				break;			case KEY_RIGHT:				if(id1==2||id2==2)				{					moveball(2,id);												if(ball[id*9+4]==1)					{						map[ball[id*9+3]/16*4+ball[id*9+2]/16]=0;						map[ball[id*9+3]/16*4+ball[id*9+2]/16+1]=1;					}					if(ball[id*9+4]==2)					{						map[ball[id*9+3]/16*4+ball[id*9+2]/16]=0;						map[ball[id*9+3]/16*4+ball[id*9+2]/16+2]=1;					}					if(ball[id*9+4]==3)					{						map[ball[id*9+3]/16*4+ball[id*9+2]/16]=0;						map[ball[id*9+3]/16*4+4+ball[id*9+2]/16]=0;						map[ball[id*9+3]/16*4+ball[id*9+2]/16+1]=1;						map[ball[id*9+3]/16*4+4+ball[id*9+2]/16+1]=1;					}					if(ball[id*9+4]==4)					{						map[ball[id*9+3]/16*4+ball[id*9+2]/16]=0;						map[ball[id*9+3]/16*4+4+ball[id*9+2]/16]=0;						map[ball[id*9+3]/16*4+ball[id*9+2]/16+2]=1;						map[ball[id*9+3]/16*4+4+ball[id*9+2]/16+2]=1;					}							ball[id*9+2]=ball[id*9+2]+16;				}				break;			case KEY_UP:				if(id1==1||id2==1)				{					moveball(1,id);										if(ball[id*9+4]==1)					{						map[ball[id*9+3]/16*4+ball[id*9+2]/16]=0;						map[ball[id*9+3]/16*4+ball[id*9+2]/16-4]=1;					}					if(ball[id*9+4]==2)					{						map[ball[id*9+3]/16*4+ball[id*9+2]/16]=0;						map[ball[id*9+3]/16*4+ball[id*9+2]/16+1]=0;						map[ball[id*9+3]/16*4-4+ball[id*9+2]/16]=1;						map[ball[id*9+3]/16*4-4+ball[id*9+2]/16+1]=1;					}					if(ball[id*9+4]==3)					{										map[ball[id*9+3]/16*4+4+ball[id*9+2]/16]=0;						map[ball[id*9+3]/16*4+ball[id*9+2]/16-4]=1;								}					if(ball[id*9+4]==4)					{						map[ball[id*9+3]/16*4+4+ball[id*9+2]/16]=0;						map[ball[id*9+3]/16*4+4+ball[id*9+2]/16+1]=0;						map[ball[id*9+3]/16*4-4+ball[id*9+2]/16]=1;						map[ball[id*9+3]/16*4-4+ball[id*9+2]/16+1]=1;					}							ball[id*9+3]=ball[id*9+3]-16;				}				break;			case KEY_DOWN:				if(id1==3||id2==3)				{					moveball(3,id);										if(ball[id*9+4]==1)					{						map[ball[id*9+3]/16*4+ball[id*9+2]/16]=0;						map[ball[id*9+3]/16*4+ball[id*9+2]/16+4]=1;					}					if(ball[id*9+4]==2)					{						map[ball[id*9+3]/16*4+ball[id*9+2]/16]=0;						map[ball[id*9+3]/16*4+ball[id*9+2]/16+1]=0;						map[ball[id*9+3]/16*4+4+ball[id*9+2]/16]=1;						map[ball[id*9+3]/16*4+4+ball[id*9+2]/16+1]=1;					}					if(ball[id*9+4]==3)					{									map[ball[id*9+3]/16*4+ball[id*9+2]/16]=0;						map[ball[id*9+3]/16*4+4+ball[id*9+2]/16+4]=1;								}					if(ball[id*9+4]==4)					{						map[ball[id*9+3]/16*4+ball[id*9+2]/16]=0;						map[ball[id*9+3]/16*4+ball[id*9+2]/16+1]=0;						map[ball[id*9+3]/16*4+4+ball[id*9+2]/16+4]=1;						map[ball[id*9+3]/16*4+4+ball[id*9+2]/16+4+1]=1;					}							ball[id*9+3]=ball[id*9+3]+16;				}				break;		  		}		change();//移动后精灵的坐标变化处理.		activeselect(id,id);//激活精灵.	}}// **************************************************// 绘制一个矩形.//   x0			:起点横坐标,//   y0			:起点纵坐标,//   x1			:终点横坐标,//   y1			:终点纵坐标,//	 color		:颜色,//	 h			:画笔宽度.// **************************************************void drawrect(int16_t x0,int16_t y0,int16_t x1,int16_t y1,			  int color,int16_t h){	int16_t i=0;	vSetForeColor(color);	//	vSetForeColor(vRGB(255,0,0));	while(i<=(h-1))	{		vDrawLine(x0+i,y0+i,x1-i,y0+i);		vDrawLine(x1-i,y0+i,x1-i,y1-i);		vDrawLine(x1-i,y1-i,x0+i,y1-i);		vDrawLine(x0+i,y1-i,x0+i,y0+i);		i++;	}	vSetForeColor(0);}// **************************************************// 激活选择的精灵.//   a			:精灵的编号,激活.//   b			:精灵的编号,取消激活.// **************************************************void activeselect(int16_t a,int16_t b){	if(ball[b*9+4]==1)		drawrect(ball[b*9+2],ball[b*9+3],ball[b*9+2]+16,ball[b*9+3]+16,blank,1);  //setcolor=12,setactivecolor=15	if(ball[b*9+4]==2)		drawrect(ball[b*9+2],ball[b*9+3],ball[b*9+2]+32,ball[b*9+3]+16,blank,1);  //setcolor=12,setactivecolor=15						if(ball[b*9+4]==3)		drawrect(ball[b*9+2],ball[b*9+3],ball[b*9+2]+16,ball[b*9+3]+32,blank,1);  //setcolor=12,setactivecolor=15						if(ball[b*9+4]==4)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -