为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

别踩白块

2017-10-25 8页 doc 23KB 33阅读

用户头像

is_314871

暂无简介

举报
别踩白块别踩白块 /*c4droid代码手册 *别踩白块儿 *TTHHR编写 *转载请说明出处 */ /*********************** 注:请注意游戏玩法,点击最底层的黑块,不可以碰到白块。 使用g++编译器 * 名称:别踩白块儿 * 代码:c语言+SDL * 完成日期:14.4.27 * c4droid编译通过 * 制作:@TTHHR * 特别鸣谢:@啊o额iu鱼 @爱上疯人院女孩 @DXKite @ ***********************/ #include "SDL2/SDL.h...
别踩白块
别踩白块 /*c4droid代码手册 *别踩白块儿 *TTHHR编写 *转载请说明出处 */ /*********************** 注:请注意游戏玩法,点击最底层的黑块,不可以碰到白块。 使用g++编译器 * 名称:别踩白块儿 * 代码:c语言+SDL * 完成日期:14.4.27 * c4droid编译通过 * 制作:@TTHHR * 特别鸣谢:@啊o额iu鱼 @爱上疯人院女孩 @DXKite @ ***********************/ #include "SDL2/SDL.h" #include "SDL2/SDL_ttf.h" #include // 使用的头文件 int W; // 窗口宽 int H; // 窗口高 int PH; // 游戏区的高 int i, df = 0; // 定义的变量 char sorry[] = "游戏不适合你的手机", win[9] = "You win!", lose[10] = "You lose", str[19] = "得分:"; Uint32 began = 0; float time = 0.0; // 定义的计时变量 bool quit = false; // 退出标志 float X = 0, Y = 0; // 用于获取触控位置的坐标 SDL_Event event; // 定义一个事件 SDL_Window *w = NULL; // 创建一个窗口指针 SDL_Renderer *ren = NULL; // 创建一个渲染器指针 SDL_Surface *sur = NULL; // 面 SDL_Surface *sur1 = NULL; // 得分表面 SDL_Surface *text = NULL; // 标文本区表面 SDL_Texture *tex = NULL; // 画刷 SDL_Texture *tex1 = NULL; // 画刷 SDL_Texture *tex2 = NULL; // 画刷 TTF_Font *font = NULL; // 定义一个字体 SDL_Color color, fontcolor; // 定义字体颜色 SDL_Rect rect[4]; // 屏幕出现的四个黑块 SDL_Rect title; // 标题区 SDL_Rect pp, over; void change(); // 使方块动起来 void init(); // 启动sdl及相关 void draw(); // 画图 void start(); // 初始化相关数据 void end(); // 游戏结尾 int main(int argc, char **argv) { // 主 init(); start(); began = SDL_GetTicks();//得到开始时间 while (quit == false) { draw();//画图 while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_FINGERDOWN: X = event.tfinger.x * W; Y = event.tfinger.y * H; // 获取x,y的坐标 if (Y > rect[0].y) if ((X > rect[0].x) && (X < (W / 4 + rect[0].x))) // 判断坐标 { change(); df = df + 1; } else//如果触屏位置不对 { quit = true; if (df < 3) sur1 = TTF_RenderUTF8_Blended(font, sorry, color); else sur1 = TTF_RenderUTF8_Blended(font, lose, color); } break; case SDL_FINGERUP: break; default:; } if (df > 100)//如果在30秒内得分超过100 { quit = true; sur1 = TTF_RenderUTF8_Blended(font, win, color); } } time = 30 - ((SDL_GetTicks() - began) / 1000);//计算剩余时间 if (time == 0.0)//当时间结束 { quit = true; sprintf(str, "时间到,得分:%d", df); sur1 = TTF_RenderUTF8_Blended(font, str, color); } } tex1 = SDL_CreateTextureFromSurface(ren, sur1);// 把表面转换成画刷 SDL_RenderCopy(ren, tex1, NULL, &over); SDL_RenderPresent(ren); SDL_Delay(3000); // 暂停3秒 end(); return 0; } void change() { for (int i = 0; i < 3; i++) rect[i].x = rect[i + 1].x; rect[3].x = (random() % 4) * W / 4; // 最上层产生随机的黑块 } void init() { SDL_Init(SDL_INIT_EVERYTHING); w = SDL_CreateWindow("别踩白块儿", 0, 0, W, H, SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE | SDL_WINDOW_BORDERLESS); // 配置窗口参数并创建 // ren = SDL_CreateRenderer(w, -1, SDL_RENDERER_PRESENTVSYNC); // 为创建的窗口配置渲染器 TTF_Init(); // 启动font font = TTF_OpenFont("/system/fonts/DroidSansFallback.ttf", 60); // 打开系统自带字体并设置大小为60 } void draw() { sur = SDL_CreateRGBSurface(0, W, H, 32, 0, 0, 0, 0); // 先把表面刷白 SDL_FillRect(sur, NULL, 0xffffff); for (int i = 0; i < 4; i++) SDL_FillRect(sur, &rect[i], 0x00000); // 再把黑块逐个贴上表面 tex = SDL_CreateTextureFromSurface(ren, sur); // 把表面转换成画刷*/ sprintf(str, "得分:%d", df); sur1 = TTF_RenderUTF8_Blended(font, str, color); tex1 = SDL_CreateTextureFromSurface(ren, sur1);// 把表面转换成画刷 sprintf(str, "时间:%.2f\"", time); text = TTF_RenderUTF8_Blended(font, str, fontcolor); tex2 = SDL_CreateTextureFromSurface(ren, text); // 把表面转换成画刷 SDL_RenderCopy(ren, tex, NULL, NULL); SDL_RenderCopy(ren, tex2, NULL, &title); SDL_RenderCopy(ren, tex1, NULL, &pp); SDL_RenderPresent(ren); SDL_FreeSurface(sur); SDL_DestroyTexture(tex); SDL_FreeSurface(sur1); SDL_FreeSurface(text); SDL_DestroyTexture(tex1); SDL_DestroyTexture(tex2); } void start() { SDL_GetWindowSize(w, &W, &H); // 得到屏幕分辨率 PH = H * 7 / 8; color = { 255, 215, 0}; fontcolor = { 0, 0, 0}; // 字体颜色赋值 float a = PH * 3 / 4 + H / 8; float wight = W / 4; float hight = PH / 4; rect[0].x = 0; rect[0].y = a; rect[1].x = wight; rect[1].y = a - hight; rect[2].x = wight * 2; rect[2].y = a - 2 * hight; rect[3].x = 3 * wight; rect[3].y = a - 3 * hight; for (int i = 0; i < 4; i++) { // 为黑块的高和宽赋值 rect[i].h = hight; rect[i].w = wight; } title = { 1.10, 0, W / 2, W / 8}; pp = { W / 2, 0, W / 2, W / 8}; over = { 0, H / 4, W, H / 4}; } void end() { TTF_CloseFont(font); TTF_Quit(); // 关闭,退出字体 SDL_DestroyRenderer(ren); SDL_DestroyWindow(w); // 释放渲染器和窗口并退出 SDL_Quit(); }
/
本文档为【别踩白块】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索