• 大小: 276KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-07
  • 语言: C/C++
  • 标签: C文练习  

资源简介

有时间显示,文件读取,多线程,包含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个文件信息

评论

共有 条评论

相关资源