资源简介
有时间显示,文件读取,多线程,包含C的基本功能都运用上还有SDL图形的运用和精灵简单使用
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
/*全局变量:全部坐标图片加载指针*/
SDL_Surface *screen *image;
SDL_Surface *back_image;
SDL_Rect back_dest;
int start=-1;//开始状态1开始0初始-1暂停
int score;//分数
int team_long=0;//队伍长度初始化
char picName[15];//随机图片名字
struct team{
struct SDL_Rect dest;
struct SDL_Rect old_dest[13];
int dirction;
int old_dirction[13];
char picName[15];
};
struct team item[37]rand_item[5];
//方向坐标转换
SDL_Rect head_dest(int i){
SDL_Rect dest;
dest.w=dest.h=35;
dest.y=0;
if(i==0)i=3;
switch(i){
case 1:dest.x=0;break;
case 2:dest.x=35;break;
case 3:dest.x=70;break;
case 4:dest.x=105;break;
default:break;
}
return dest;
}
//加锁
void Slock(SDL_Surface *lock){
if(SDL_MUSTLOCK(lock)){
if(SDL_LockSurface(lock)<0){
return;
}
}
}
/*解锁*/
void Sulock(SDL_Surface *lock){
if(SDL_MUSTLOCK(lock)){
SDL_UnlockSurface(lock);
}
}
/*产生随机图片名称存入picName[]中*/
void rand_picName(){
int i;
FILE *fp;
if((fp=fopen(“pic.list““r“))==NULL){
printf(“Can‘t open pic_list“);}
i=(int)rand()%36+1;
fseek(fpi*15SEEK_SET);
fgets(picName15fp);
// rewind(fp0SEEK_SET);//指针归文件头位置
fclose(fp);
}
/*输出错误函数*/
void print_error(){
fprintf(stderr“no is :%s\n“SDL_GetError());
atexit(SDL_Quit);
}
/*加载图片到内存中*/
SDL_Surface *load_image(char *filename){
SDL_Surface *loadedImage = NULL;
SDL_Surface *optimizedImage = NULL;
loadedImage = IMG_Load(filename);
if(loadedImage!=NULL){
optimizedImage = SDL_DisplayFormat(loadedImage);
SDL_FreeSurface(loadedImage);
}
return optimizedImage;
}
/*把内存中图片显示到屏幕中*/
void apply_surface(int xint ySDL_Surface *source SDL_Surface *destination){
SDL_Rect offset;
offset.x=x;
offset.y=y;
Slock(destination);
SDL_BlitSurface(sourceNULLdestination&offset);
Sulock(screen);
SDL_FreeSurface(destination);
}
/*游戏区范围设置*/
SDL_Rect bump(SDL_Rect image_dest){
if(image_dest.x>500)
image_dest.x=500;
if(image_dest.x<0)
image_dest.x=0;
if(image_dest.y<0)
image_dest.y=0;
if(image_dest.y>380)
image_dest.y=380;
return image_dest;
}
/*产生随机坐标*/
SDL_Rect rand_dest(){
SDL_Rect dest;
int i;
while(1){
dest.x=(int)(rand()%500);
dest.y=(int)(rand()%380);
dest.w=35;
dest.h=35;
for(i=0;i<=team_long;i++){
if((dest.x>item[i].dest.x-35)&&(dest.x<(item[i].dest.x+35))&&(dest.y>item[i].dest.y-35)&&(dest.y<(item[i].dest.y+35)))
break;
if(i==team_long)return dest;
}
}
}
/*产生随机图片到屏幕中*/
void rand_image(){
int ij;
SDL_Surface *rand_image;
SDL_Rect dest;
for(i=0;i<5;i++){
rand_item[i].dest=rand_dest();
rand_picName();
strcpy(rand_item[i].picNamepicName);
rand_image=load_image(rand_item[i].picName);
dest=head_dest(3);
Slock(screen);
SDL_BlitSurface(rand_image&destscreen&rand_item[i].dest);
SDL_Flip(screen);
SDL_FreeSurface(rand_image);
Sulock(screen);
}
}
/*移动控制*/
move(){
Uint8 *keys = SDL_GetKeyState(NULL);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 31389 2007-09-01 10:05 pics\game.gif
文件 7259 2007-09-01 10:05 pics\plate_first.gif
文件 6164 2007-09-01 10:05 pics\plate_second.gif
文件 7417 2007-09-01 10:05 pics\plate_third.gif
文件 3400 2007-09-01 10:05 pics\s0.gif
文件 4090 2007-09-01 10:05 pics\s01.gif
文件 4285 2007-09-01 10:05 pics\s02.gif
文件 4168 2007-09-01 10:05 pics\s03.gif
文件 3960 2007-09-01 10:05 pics\s04.gif
文件 4027 2007-09-01 10:05 pics\s05.gif
文件 4464 2007-09-01 10:05 pics\s06.gif
文件 4313 2007-09-01 10:05 pics\s07.gif
文件 4490 2007-09-01 10:05 pics\s08.gif
文件 4957 2007-09-01 10:05 pics\s09.gif
文件 3553 2007-09-01 10:05 pics\s10.gif
文件 3918 2007-09-01 10:05 pics\s11.gif
文件 4196 2007-09-01 10:05 pics\s12.gif
文件 4252 2007-09-01 10:05 pics\s13.gif
文件 4645 2007-09-01 10:05 pics\s14.gif
文件 3883 2007-09-01 10:05 pics\s15.gif
文件 3993 2007-09-01 10:05 pics\s16.gif
文件 3421 2007-09-01 10:05 pics\s17.gif
文件 3851 2007-09-01 10:05 pics\s18.gif
文件 4063 2007-09-01 10:05 pics\s19.gif
文件 4259 2007-09-01 10:05 pics\s20.gif
文件 4943 2007-09-01 10:05 pics\s21.gif
文件 4437 2007-09-01 10:05 pics\s22.gif
文件 4455 2007-09-01 10:05 pics\s23.gif
文件 4529 2007-09-01 10:05 pics\s24.gif
文件 4346 2007-09-01 10:05 pics\s25.gif
............此处省略22个文件信息
评论
共有 条评论