Error[8]: Undefined offset: 1101, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述要在家目录下 makefile 1 main : main.o fun.o input.o fb_draw.o 2 gcc -Wall -o [email protected] $^ 3 clean : 4 rm -rf *.o main   fb_draw.h #ifndef __FB_DRAW_H #define __FB_DRAW_Hint fb_open(

要在家目录下

makefile

  1 main : main.o fun.o input.o fb_draw.o 2     gcc -Wall -o [email protected] $^  3 clean : 4     rm -rf *.o main

 

fb_draw.h

#ifndef __FB_DRAW_H #define __FB_DRAW_Hint fb_open(voID); voID fb_close(voID); voID fb_draw_point(int x,int y,unsigned int color); int xres(voID); int yres(voID); #endif

fun.h

#ifndef __input_H #define __input_H#define KEYBOARDMODE    0#define CHARMODE        1voID input_init(voID); int input_choice_mode(int mode); int input_kb_mode(voID); int input_char_mode(voID); voID input_recover(voID); #endif

inc.h

#ifndef __INC_H #define __INC_H #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <sys/ioctl.h> #include <linux/fb.h> #include <linux/input.h> #include <unistd.h> #include <sys/mman.h> #include <string.h> #include <termios.h> #include "input.h" #include "fb_draw.h"#endif

input.h

#ifndef __input_H #define __input_H#define KEYBOARDMODE    0#define CHARMODE        1voID input_init(voID); int input_choice_mode(int mode); int input_kb_mode(voID); int input_char_mode(voID); voID input_recover(voID); #endif

fb_draw.c

#include "include/inc.h"/*********************************************** 结构体中保存了有关 *** 作framebuffer设备所需的成员 fix : 本地的fb数据 var : 可变的fb数据 bpp : 一个像素点所占位数 fd : 保存fb文件的文件描述符 fbp : 获取映射空间地址 fbpi: 获取映射空间地址 ************************************************/struct { struct fb_fix_screeninfo fix;//本地fb数据    struct fb_var_screeninfo var;//可变fb数据    unsigned int bpp;//一个像素点所占位数    int fd;//保存fb文件的文件描述符    unsigned char *fbp;//获取映射空间地址    unsigned int *fbpi;//获取映射空间地址}fb_st; /*********************************************** int fb_open(voID); 功 能 : 把fb文件打开,通过ioctl控制fb设备 通过mmap映射fb文件 返回值 : 无 参 数 : 成功返回0,失败返回-1 ************************************************/int fb_open(voID) { int ret; fb_st.fd = open("/dev/fb0",O_RDWR); if(-1 == fb_st.fd) { perror("open"); goto error; } /* get fb_var_screeninfo */ ret = ioctl(fb_st.fd,FBIOGET_VSCREENINFO,&fb_st.var); if(-1 == ret) { perror("ioctl(fb_st.var)"); goto close_fd; } fb_st.bpp = fb_st.var.bits_per_pixel >> 3; /* get fb_fix_screeninfo */ ret = ioctl(fb_st.fd,FBIOGET_FSCREENINFO,&fb_st.fix); if(-1 == ret) { perror("ioctl(fb_st.fix)"); goto close_fd; } /* get framebuffer start address */ fb_st.fbp = mmap(0,fb_st.fix.smem_len,PROT_READ | PROT_WRITE,MAP_SHARED,fb_st.fd,0); if((voID *)-1 == fb_st.fbp) { perror("mmap"); goto close_fd; } return 0; close_fd: close(fb_st.fd); error: return -1; } /*********************************************** voID fb_close(); 功 能 : 解除设备文件的映射,关闭文件 返回值 : 无 参 数 : 无 ************************************************/voID fb_close() { munmap(fb_st.fbp,fb_st.fix.smem_len); close(fb_st.fd); } /*********************************************** voID fb_draw_point(int x,int y,int color); 功 能 : 通过framebuff画点 返回值 : 无 参 数 : x 横坐标 y 纵坐标 color 要显示的颜色(现只支持白色0xFF 黑色0x00) ************************************************/voID fb_draw_point(int x,unsigned int color) { unsigned long offset; offset = fb_st.bpp * x + y * fb_st.fix.line_length; //memset(fb_st.fbp + offset,color,fb_st.bpp);    fb_st.fbpi = (unsigned int *)(fb_st.fbp + offset); *(fb_st.fbpi) = color; } /*********************************************** int xres(voID); 功 能 : 获取x轴坐标 返回值 : 获取到的x轴坐标 参 数 : 无 ************************************************/int xres(voID) { return fb_st.var.xres; } /*********************************************** int yres(voID); 功 能 : 获取y轴坐标 返回值 : 获取到的y轴坐标 参 数 : 无 ************************************************/int yres(voID) { return fb_st.var.yres; }

input.c

#include "include/inc.h"/*********************************************** 结构体中保存了有关键盘 *** 作或者终端设置的一些成员 old : 保存原始终端信息 new : 改变之后的终端信息 kb_fd : 保存键盘设备的设备号 ev : 保存输入设备的信息数据 ************************************************/struct { struct termios old; struct termios new; int kb_fd; struct input_event ev; }input_st; /*********************************************** voID input_init(voID); 功 能 : 用来在接收输入值之前设置终端 返回值 : 无 参 数 : 无 ************************************************/voID input_init(voID) { tcgetattr(0,&input_st.old); input_st.new = input_st.old; input_st.new.c_lflag &= ~ICANON; input_st.new.c_lflag &= ~ECHO; tcsetattr(0,TCSANow,&input_st.new); } /*********************************************** char *mystrcpy(char *dest,const char *src); 功 能 : 用来拷贝字符串,碰到尾0或者空格停止 返回值 : 指向dest的指针 参 数 : dest 拷贝的目标,dest指向拷贝的空间 src 拷贝的源,指向要拷贝的字符串 ************************************************/char *mystrcpy(char *dest,const char *src) { int i = 0; for(i = 0; src[i] !=  && src[i] !=  ) dest[i] ; i++ src[i]; dest[i] == ; return dest; } /*********************************************** voID input_find_dev_file(char *buf_ev); 功 能 : 用来读取当前用户识别的键盘文件 返回值 : 无 参 数 : buf_ev 保存获取到的键盘设备文件名 ************************************************/voIDcharbuf_ev) { file  input_find_dev_file( NulL;  *char*fp =1280 buf[}; ] = {char"keyboard *find_kb = "; char"event *find_ev = "; char NulL; fp " *p =/proc/bus/input/devices= fopen(""r,"); whilesizeof1((fgets(buf, NulL) { p (buf) -  strstr(buf,find_kb); ,fp)) !=if= NulL) continue(p ==; else { whileif NulL) ((fgets(buf,find_ev); continue(p ==; else { mystrcpy(buf_ev,p); break; } } break; } } fclose(fp); } /*********************************************** int input_choice_mode(int mode); 功 能 : 用来选择接收输入源的模式 返回值 : 0 代表使用键盘模式 1 代表使用字符模式 -1 代表选择模式失败 参 数 : KEYBOARDMODE 键盘模式 CHARMODE 字符模式 ************************************************/intint mode) {  input_choice_mode(char64" dest[/dev/input/] = "; char80 buf[}; ] = {switch(mode) { case KEYBOARDMODE : input_find_dev_file(buf); strcat(dest,buf); input_st.kb_fd  open(dest,O_RDONLY); if=0) { perror((input_st.kb_fd < "open()"); return1; }  -break; casebreak;  CHARMODE : defaultreturn1 : ; }  -return mode; } /*********************************************** int input_kb_mode(voID); 功 能 : 获取键盘的键值,并返回 返回值 : 为了使用方便,返回[103上] 返回[108下],返回[105左] 返回[106右],返回[14落子] 返回[16quit] 参 数 : 无 ************************************************/intvoID) { read(input_st.kb_fd, input_kb_mode(sizeof(input_st.ev)); &input_st.ev,if EV_KEY) if(input_st.ev.type == SYN_REPORT) { if(input_st.ev.value ==16) { tcsetattr((input_st.ev.code == 0input_st.old); close(input_st.kb_fd); } return,& input_st.ev.code; } return0; }  /*********************************************** int input_char_mode(voID); 功 能 : 获取键盘字符,返回[w上] 返回[s下],返回[a左] 返回[d右],返回[‘ ‘] 返回[qquit] 请自行处理大小写 参 数 : 无 ************************************************/intvoID) {  input_char_mode(int0; val  val =  getchar(); if=q(val == Q || val == ) tcsetattr(0input_st.old); return,& val; } /*********************************************** voID input_recover(voID); 功 能 : 用来恢复设置终端 返回值 : 无 参 数 : 无 ************************************************/voIDvoID) { tcsetattr( input_recover(0input_st.old); }fun.c,& #include 

#include

#include <stdio.h>"<stdlib.h>include/inc.h" #include "include/fun.h"int0x000000// color = 棋盘线颜色 黑色;                int0xFFFFFF// back_color = 棋盘背景颜色 白色;            int0xCC9966// play1_color = 0x00BFFF; ;//玩家1棋子颜色int0x000000// play2_color = 0xFFBBFF; ;//玩家2棋子颜色struct00 cir c = {20,0x00BFFF,}; ,intint17 ifset(int (*arr)[int],y) {  *x,if *16) ((*x) > 0; *x = if0) ((*x) < 16; *x = if16) ((*y) > 0; *y = if0) ((*y) < 16; *y = if12(arr[(*x)][(*y)] == )  || arr[(*x)][(*y)] == return1;  return0; }  voIDintint draw_circle(int x, color) {  r,int x0,y0; for) { for(x0 = x - r; x0 <= x + r; x0++) { if(y0 = y - r; y0 <= y + r; y0++ r) fb_draw_point(x0,y0,color); } } } int((x0 - x) * (x0 - x) + (y0 - y) * (y0 - y) <= r *int17 is_win(int arr[][int], mode) {  x,int00 i = 0,j = ; ,sum = for516(i = x; i < x + // && i <= 判断横向能否赢; i++)                 { if1 mode) sum(arr[i+; ][y] ==else++break; }             for50(i = x; i > x - ) {  && i >= if; i--1 mode) sum(arr[i-; ][y] ==else++break; }             if4) (sum >= return1;  else sum 0; = for516(i = y; i < y + // && i <= 判断纵向能否赢; i++)                 { if1 mode) sum(arr[x][i+; ] ==else++break; }             for50(i = y; i >= y - ) {  && i >= if; i--1 mode) sum(arr[x][i-; ] ==else++break; }             if4) (sum >= return1;  else sum 0; j =  y; for=516(i = x; i < x + // && i <= 判断撇能否赢; i++)                 { if11(arr[i+ mode) sum][j-; ] ==else++break; j            ; } j  y; --for=50(i = x; i > x - ) {  && i >= if; i--11(arr[i- mode) sum][j+; ] ==else++break; j            ; } if++4) (sum >= return1;  else sum 0; j =  y; for=516(i = x; i < x + // && i <= 判断捺能否赢; i++)                 { if11(arr[i+ mode) sum][j+; ] ==else++break; } j              y; for=50(i = x; i > x - ) {  && i >= if; i--11(arr[i- mode) sum][j-; ] ==else++break; j            ; } if--4) (sum >= return1;  return0; }  voID//打印棋盘 print()                { int00 i = ; ,j = for5101410(i = //; i <= 打印棋盘背景颜色; i++)             { for90990(j = ) fb_draw_point(i,j,back_color); } ; j <= for; j++5301390(i = //; i <= 打印棋盘外边框 上; i++)             { for110113(j = ) fb_draw_point(i,color); } ; j <= for; j++5301390(i = //; i <= 打印棋盘外边框 下; i++)                 { for970973(j = ) fb_draw_point(i,color); } ; j <= for; j++530533(i = //; i <= 打印棋盘外边框 左; i++)                 { for110970(j = ) fb_draw_point(i,color); } ; j <= for; j++13901385(i = //; i >= 打印棋盘外边框 右; i--)                 { for112970(j = ) fb_draw_point(i,color); } } ; j <= voID; j++ print_line() { int00 i = ; ,j = for5601360(i = //; i <= 打印棋盘线条; i++)             { for140940(j = 50; j <= ) fb_draw_point(i,color); } ; j += for5601360(i = 50; i <= ) { ; i += for140940(j = ) fb_draw_point(i,color); } } ; j <= voID; j++int17 print_intime(struct (*xy_point)[ cir q) { ],int00 i = 0,c = 0,d = 0,x = ; ,y = for5600(i = 1360,x = 50; i <= ) { ; i += for,x++1400(j = 940,y = 50; j <= ) { ; j += if,y++1) draw_circle(i,q.r,play1_color); (xy_point[x][y] == elseif2 ) draw_circle(i,play2_color); (xy_point[x][y] == elseif0 ) { draw_circle(i,back_color); (xy_point[x][y] == for2020(c = i + ) { ,d = j; c >= i - if; c--5601360(c < )  || c > continue; fb_draw_point(c,d,color); } for2020(d = j + ) { ,c = i; d >= j - if; d--140940(d < )  || d > continue; fb_draw_point(c,color); } } } } } voIDintint _set(y) { ( *x,;  *if*x)++17) { (((*x) == 0; (*x) = ; if*y)++17) (((*y) == 0; } } *y) = intint17 play(int (*xy_point)[ mode) { ],int00 ret = 0,flag = 0,val = 0,tmpx = ; flag ,tmpy =  input_choice_mode(CHARMODE); c.x 0=0= ; ; c.y = whilec.y)) _set(c.y); xy_point[c.x][c.y] (ifset(xy_point,&c.x,& mode; print_intime(xy_point,c); LEAP: &c.x,&if=0) { val (flag ==  input_kb_mode(); switch=(val) { case103 c.y; tmpx   c.x; c.y :    tmpy =; =while--c.y); xy_point[tmpx][tmpy] 0(ifset(xy_point,&; = break; case108 c.y; tmpx   c.x; c.y :    tmpy =; =while++c.y); xy_point[tmpx][tmpy] 0(ifset(xy_point,&; = break; case105 c.x; tmpy   c.y; c.x :    tmpx =; =while--c.y); xy_point[tmpx][tmpy] 0(ifset(xy_point,&; = break; case106 c.x; tmpy   c.y; c.x :    tmpx =; =while++c.y); xy_point[tmpx][tmpy] 0(ifset(xy_point,&; = break; case141 ;   :    ret = break; case160 ) ; } }   :    exit(elseif1 ) { val (flag ==  input_char_mode(); switch=(val) { caseW  : casew  c.x; tmpy  c.y; c.y :    tmpx =; =while--c.y); xy_point[tmpx][tmpy] 0(ifset(xy_point,&; = break; caseS  : cases  c.x; tmpy  c.y; c.y :    tmpx =; =while++c.y); xy_point[tmpx][tmpy] 0(ifset(xy_point,&; = break; caseA  : casea  c.x; tmpy  c.y; c.x :    tmpx =; =while--c.y); xy_point[tmpx][tmpy] 0(ifset(xy_point,&; = break; caseD  : cased  c.x; tmpy  c.y; c.x :    tmpx =; =while++c.y); xy_point[tmpx][tmpy] 0(ifset(xy_point,&; = break; case 1 break :    ret = ; ; caseq 0) ; } } xy_point[c.x][c.y]  :    exit( mode; print_intime(xy_point,c); if=1) (ret != goto LEAP; if(is_win(xy_point,c.x,c.y,mode)) return mode; return0; } main.c #include 

"

#include <stdio.h>include/fun.h" #include "include/inc.h"intvoID) {  main(int00 i = //,j = 循环变量;                     int17    17 xy_point[0][//] = {保存棋盘坐标};        int0    // ret = 接收函数返回值;                         fb_open(); xres(); yres(); input_init(); print(); //打印棋盘边框和背景//打印棋盘    print_line();            while1    ) { ret (1//= play(xy_point,玩家1下棋);            if0        ) (ret < break; elseif1 ) { printf((ret == "play1 win\n"); break; } ret 2//= play(xy_point,玩家2下棋);                if0        ) (ret < break; elseif2 ) { printf((ret == "play2 win\n"); break; } } input_recover(); fb_close(); return0; } [+++][+++]
总结

以上是内存溢出为你收集整理的五子棋 framebuffer版全部内容,希望文章能够帮你解决五子棋 framebuffer版所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 1102, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述要在家目录下 makefile 1 main : main.o fun.o input.o fb_draw.o 2 gcc -Wall -o [email protected] $^ 3 clean : 4 rm -rf *.o main   fb_draw.h #ifndef __FB_DRAW_H #define __FB_DRAW_Hint fb_open(

要在家目录下

makefile

  1 main : main.o fun.o input.o fb_draw.o 2     gcc -Wall -o [email protected] $^  3 clean : 4     rm -rf *.o main

 

fb_draw.h

#ifndef __FB_DRAW_H #define __FB_DRAW_Hint fb_open(voID); voID fb_close(voID); voID fb_draw_point(int x,int y,unsigned int color); int xres(voID); int yres(voID); #endif

fun.h

#ifndef __input_H #define __input_H#define KEYBOARDMODE    0#define CHARMODE        1voID input_init(voID); int input_choice_mode(int mode); int input_kb_mode(voID); int input_char_mode(voID); voID input_recover(voID); #endif

inc.h

#ifndef __INC_H #define __INC_H #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <sys/ioctl.h> #include <linux/fb.h> #include <linux/input.h> #include <unistd.h> #include <sys/mman.h> #include <string.h> #include <termios.h> #include "input.h" #include "fb_draw.h"#endif

input.h

#ifndef __input_H #define __input_H#define KEYBOARDMODE    0#define CHARMODE        1voID input_init(voID); int input_choice_mode(int mode); int input_kb_mode(voID); int input_char_mode(voID); voID input_recover(voID); #endif

fb_draw.c

#include "include/inc.h"/*********************************************** 结构体中保存了有关 *** 作framebuffer设备所需的成员 fix : 本地的fb数据 var : 可变的fb数据 bpp : 一个像素点所占位数 fd : 保存fb文件的文件描述符 fbp : 获取映射空间地址 fbpi: 获取映射空间地址 ************************************************/struct { struct fb_fix_screeninfo fix;//本地fb数据    struct fb_var_screeninfo var;//可变fb数据    unsigned int bpp;//一个像素点所占位数    int fd;//保存fb文件的文件描述符    unsigned char *fbp;//获取映射空间地址    unsigned int *fbpi;//获取映射空间地址}fb_st; /*********************************************** int fb_open(voID); 功 能 : 把fb文件打开,通过ioctl控制fb设备 通过mmap映射fb文件 返回值 : 无 参 数 : 成功返回0,失败返回-1 ************************************************/int fb_open(voID) { int ret; fb_st.fd = open("/dev/fb0",O_RDWR); if(-1 == fb_st.fd) { perror("open"); goto error; } /* get fb_var_screeninfo */ ret = ioctl(fb_st.fd,FBIOGET_VSCREENINFO,&fb_st.var); if(-1 == ret) { perror("ioctl(fb_st.var)"); goto close_fd; } fb_st.bpp = fb_st.var.bits_per_pixel >> 3; /* get fb_fix_screeninfo */ ret = ioctl(fb_st.fd,FBIOGET_FSCREENINFO,&fb_st.fix); if(-1 == ret) { perror("ioctl(fb_st.fix)"); goto close_fd; } /* get framebuffer start address */ fb_st.fbp = mmap(0,fb_st.fix.smem_len,PROT_READ | PROT_WRITE,MAP_SHARED,fb_st.fd,0); if((voID *)-1 == fb_st.fbp) { perror("mmap"); goto close_fd; } return 0; close_fd: close(fb_st.fd); error: return -1; } /*********************************************** voID fb_close(); 功 能 : 解除设备文件的映射,关闭文件 返回值 : 无 参 数 : 无 ************************************************/voID fb_close() { munmap(fb_st.fbp,fb_st.fix.smem_len); close(fb_st.fd); } /*********************************************** voID fb_draw_point(int x,int y,int color); 功 能 : 通过framebuff画点 返回值 : 无 参 数 : x 横坐标 y 纵坐标 color 要显示的颜色(现只支持白色0xFF 黑色0x00) ************************************************/voID fb_draw_point(int x,unsigned int color) { unsigned long offset; offset = fb_st.bpp * x + y * fb_st.fix.line_length; //memset(fb_st.fbp + offset,color,fb_st.bpp);    fb_st.fbpi = (unsigned int *)(fb_st.fbp + offset); *(fb_st.fbpi) = color; } /*********************************************** int xres(voID); 功 能 : 获取x轴坐标 返回值 : 获取到的x轴坐标 参 数 : 无 ************************************************/int xres(voID) { return fb_st.var.xres; } /*********************************************** int yres(voID); 功 能 : 获取y轴坐标 返回值 : 获取到的y轴坐标 参 数 : 无 ************************************************/int yres(voID) { return fb_st.var.yres; }

input.c

#include "include/inc.h"/*********************************************** 结构体中保存了有关键盘 *** 作或者终端设置的一些成员 old : 保存原始终端信息 new : 改变之后的终端信息 kb_fd : 保存键盘设备的设备号 ev : 保存输入设备的信息数据 ************************************************/struct { struct termios old; struct termios new; int kb_fd; struct input_event ev; }input_st; /*********************************************** voID input_init(voID); 功 能 : 用来在接收输入值之前设置终端 返回值 : 无 参 数 : 无 ************************************************/voID input_init(voID) { tcgetattr(0,&input_st.old); input_st.new = input_st.old; input_st.new.c_lflag &= ~ICANON; input_st.new.c_lflag &= ~ECHO; tcsetattr(0,TCSANow,&input_st.new); } /*********************************************** char *mystrcpy(char *dest,const char *src); 功 能 : 用来拷贝字符串,碰到尾0或者空格停止 返回值 : 指向dest的指针 参 数 : dest 拷贝的目标,dest指向拷贝的空间 src 拷贝的源,指向要拷贝的字符串 ************************************************/char *mystrcpy(char *dest,const char *src) { int i = 0; for(i = 0; src[i] !=  && src[i] !=  ) dest[i] ; i++ src[i]; dest[i] == ; return dest; } /*********************************************** voID input_find_dev_file(char *buf_ev); 功 能 : 用来读取当前用户识别的键盘文件 返回值 : 无 参 数 : buf_ev 保存获取到的键盘设备文件名 ************************************************/voIDcharbuf_ev) { file  input_find_dev_file( NulL;  *char*fp =1280 buf[}; ] = {char"keyboard *find_kb = "; char"event *find_ev = "; char NulL; fp " *p =/proc/bus/input/devices= fopen(""r,"); whilesizeof1((fgets(buf, NulL) { p (buf) -  strstr(buf,find_kb); ,fp)) !=if= NulL) continue(p ==; else { whileif NulL) ((fgets(buf,find_ev); continue(p ==; else { mystrcpy(buf_ev,p); break; } } break; } } fclose(fp); } /*********************************************** int input_choice_mode(int mode); 功 能 : 用来选择接收输入源的模式 返回值 : 0 代表使用键盘模式 1 代表使用字符模式 -1 代表选择模式失败 参 数 : KEYBOARDMODE 键盘模式 CHARMODE 字符模式 ************************************************/intint mode) {  input_choice_mode(char64" dest[/dev/input/] = "; char80 buf[}; ] = {switch(mode) { case KEYBOARDMODE : input_find_dev_file(buf); strcat(dest,buf); input_st.kb_fd  open(dest,O_RDONLY); if=0) { perror((input_st.kb_fd < "open()"); return1; }  -break; casebreak;  CHARMODE : defaultreturn1 : ; }  -return mode; } /*********************************************** int input_kb_mode(voID); 功 能 : 获取键盘的键值,并返回 返回值 : 为了使用方便,返回[103上] 返回[108下],返回[105左] 返回[106右],返回[14落子] 返回[16quit] 参 数 : 无 ************************************************/intvoID) { read(input_st.kb_fd, input_kb_mode(sizeof(input_st.ev)); &input_st.ev,if EV_KEY) if(input_st.ev.type == SYN_REPORT) { if(input_st.ev.value ==16) { tcsetattr((input_st.ev.code == 0input_st.old); close(input_st.kb_fd); } return,& input_st.ev.code; } return0; }  /*********************************************** int input_char_mode(voID); 功 能 : 获取键盘字符,返回[w上] 返回[s下],返回[a左] 返回[d右],返回[‘ ‘] 返回[qquit] 请自行处理大小写 参 数 : 无 ************************************************/intvoID) {  input_char_mode(int0; val  val =  getchar(); if=q(val == Q || val == ) tcsetattr(0input_st.old); return,& val; } /*********************************************** voID input_recover(voID); 功 能 : 用来恢复设置终端 返回值 : 无 参 数 : 无 ************************************************/voIDvoID) { tcsetattr( input_recover(0input_st.old); }fun.c,& #include 

#include

#include <stdio.h>"<stdlib.h>include/inc.h" #include "include/fun.h"int0x000000// color = 棋盘线颜色 黑色;                int0xFFFFFF// back_color = 棋盘背景颜色 白色;            int0xCC9966// play1_color = 0x00BFFF; ;//玩家1棋子颜色int0x000000// play2_color = 0xFFBBFF; ;//玩家2棋子颜色struct00 cir c = {20,0x00BFFF,}; ,intint17 ifset(int (*arr)[int],y) {  *x,if *16) ((*x) > 0; *x = if0) ((*x) < 16; *x = if16) ((*y) > 0; *y = if0) ((*y) < 16; *y = if12(arr[(*x)][(*y)] == )  || arr[(*x)][(*y)] == return1;  return0; }  voIDintint draw_circle(int x, color) {  r,int x0,y0; for) { for(x0 = x - r; x0 <= x + r; x0++) { if(y0 = y - r; y0 <= y + r; y0++ r) fb_draw_point(x0,y0,color); } } } int((x0 - x) * (x0 - x) + (y0 - y) * (y0 - y) <= r *int17 is_win(int arr[][int], mode) {  x,int00 i = 0,j = ; ,sum = for516(i = x; i < x + // && i <= 判断横向能否赢; i++)                 { if1 mode) sum(arr[i+; ][y] ==else++break; }             for50(i = x; i > x - ) {  && i >= if; i--1 mode) sum(arr[i-; ][y] ==else++break; }             if4) (sum >= return1;  else sum 0; = for516(i = y; i < y + // && i <= 判断纵向能否赢; i++)                 { if1 mode) sum(arr[x][i+; ] ==else++break; }             for50(i = y; i >= y - ) {  && i >= if; i--1 mode) sum(arr[x][i-; ] ==else++break; }             if4) (sum >= return1;  else sum 0; j =  y; for=516(i = x; i < x + // && i <= 判断撇能否赢; i++)                 { if11(arr[i+ mode) sum][j-; ] ==else++break; j            ; } j  y; --for=50(i = x; i > x - ) {  && i >= if; i--11(arr[i- mode) sum][j+; ] ==else++break; j            ; } if++4) (sum >= return1;  else sum 0; j =  y; for=516(i = x; i < x + // && i <= 判断捺能否赢; i++)                 { if11(arr[i+ mode) sum][j+; ] ==else++break; } j              y; for=50(i = x; i > x - ) {  && i >= if; i--11(arr[i- mode) sum][j-; ] ==else++break; j            ; } if--4) (sum >= return1;  return0; }  voID//打印棋盘 print()                { int00 i = ; ,j = for5101410(i = //; i <= 打印棋盘背景颜色; i++)             { for90990(j = ) fb_draw_point(i,j,back_color); } ; j <= for; j++5301390(i = //; i <= 打印棋盘外边框 上; i++)             { for110113(j = ) fb_draw_point(i,color); } ; j <= for; j++5301390(i = //; i <= 打印棋盘外边框 下; i++)                 { for970973(j = ) fb_draw_point(i,color); } ; j <= for; j++530533(i = //; i <= 打印棋盘外边框 左; i++)                 { for110970(j = ) fb_draw_point(i,color); } ; j <= for; j++13901385(i = //; i >= 打印棋盘外边框 右; i--)                 { for112970(j = ) fb_draw_point(i,color); } } ; j <= voID; j++ print_line() { int00 i = ; ,j = for5601360(i = //; i <= 打印棋盘线条; i++)             { for140940(j = 50; j <= ) fb_draw_point(i,color); } ; j += for5601360(i = 50; i <= ) { ; i += for140940(j = ) fb_draw_point(i,color); } } ; j <= voID; j++int17 print_intime(struct (*xy_point)[ cir q) { ],int00 i = 0,c = 0,d = 0,x = ; ,y = for5600(i = 1360,x = 50; i <= ) { ; i += for,x++1400(j = 940,y = 50; j <= ) { ; j += if,y++1) draw_circle(i,q.r,play1_color); (xy_point[x][y] == elseif2 ) draw_circle(i,play2_color); (xy_point[x][y] == elseif0 ) { draw_circle(i,back_color); (xy_point[x][y] == for2020(c = i + ) { ,d = j; c >= i - if; c--5601360(c < )  || c > continue; fb_draw_point(c,d,color); } for2020(d = j + ) { ,c = i; d >= j - if; d--140940(d < )  || d > continue; fb_draw_point(c,color); } } } } } voIDintint _set(y) { ( *x,;  *if*x)++17) { (((*x) == 0; (*x) = ; if*y)++17) (((*y) == 0; } } *y) = intint17 play(int (*xy_point)[ mode) { ],int00 ret = 0,flag = 0,val = 0,tmpx = ; flag ,tmpy =  input_choice_mode(CHARMODE); c.x 0=0= ; ; c.y = whilec.y)) _set(c.y); xy_point[c.x][c.y] (ifset(xy_point,&c.x,& mode; print_intime(xy_point,c); LEAP: &c.x,&if=0) { val (flag ==  input_kb_mode(); switch=(val) { case103 c.y; tmpx   c.x; c.y :    tmpy =; =while--c.y); xy_point[tmpx][tmpy] 0(ifset(xy_point,&; = break; case108 c.y; tmpx   c.x; c.y :    tmpy =; =while++c.y); xy_point[tmpx][tmpy] 0(ifset(xy_point,&; = break; case105 c.x; tmpy   c.y; c.x :    tmpx =; =while--c.y); xy_point[tmpx][tmpy] 0(ifset(xy_point,&; = break; case106 c.x; tmpy   c.y; c.x :    tmpx =; =while++c.y); xy_point[tmpx][tmpy] 0(ifset(xy_point,&; = break; case141 ;   :    ret = break; case160 ) ; } }   :    exit(elseif1 ) { val (flag ==  input_char_mode(); switch=(val) { caseW  : casew  c.x; tmpy  c.y; c.y :    tmpx =; =while--c.y); xy_point[tmpx][tmpy] 0(ifset(xy_point,&; = break; caseS  : cases  c.x; tmpy  c.y; c.y :    tmpx =; =while++c.y); xy_point[tmpx][tmpy] 0(ifset(xy_point,&; = break; caseA  : casea  c.x; tmpy  c.y; c.x :    tmpx =; =while--c.y); xy_point[tmpx][tmpy] 0(ifset(xy_point,&; = break; caseD  : cased  c.x; tmpy  c.y; c.x :    tmpx =; =while++c.y); xy_point[tmpx][tmpy] 0(ifset(xy_point,&; = break; case 1 break :    ret = ; ; caseq 0) ; } } xy_point[c.x][c.y]  :    exit( mode; print_intime(xy_point,c); if=1) (ret != goto LEAP; if(is_win(xy_point,c.x,c.y,mode)) return mode; return0; } main.c #include 

"

#include <stdio.h>include/fun.h" #include "include/inc.h"intvoID) {  main(int00 i = //,j = 循环变量;                     int17    17 xy_point[0][//] = {保存棋盘坐标};        int0    // ret = 接收函数返回值;                         fb_open(); xres(); yres(); input_init(); print(); //打印棋盘边框和背景//打印棋盘    print_line();            while1    ) { ret (1//= play(xy_point,玩家1下棋);            if0        ) (ret < break; elseif1 ) { printf((ret == "play1 win\n"); break; } ret 2//= play(xy_point,玩家2下棋);                if0        ) (ret < break; elseif2 ) { printf((ret == "play2 win\n"); break; } } input_recover(); fb_close(); return0; } [+++]
总结

以上是内存溢出为你收集整理的五子棋 framebuffer版全部内容,希望文章能够帮你解决五子棋 framebuffer版所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 165, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
五子棋 framebuffer版_C_内存溢出

五子棋 framebuffer版

五子棋 framebuffer版,第1张

概述要在家目录下 makefile 1 main : main.o fun.o input.o fb_draw.o 2 gcc -Wall -o [email protected] $^ 3 clean : 4 rm -rf *.o main   fb_draw.h #ifndef __FB_DRAW_H #define __FB_DRAW_Hint fb_open(

要在家目录下

makefile

  1 main : main.o fun.o input.o fb_draw.o 2     gcc -Wall -o [email protected] $^  3 clean : 4     rm -rf *.o main

 

fb_draw.h

#ifndef __FB_DRAW_H #define __FB_DRAW_Hint fb_open(voID); voID fb_close(voID); voID fb_draw_point(int x,int y,unsigned int color); int xres(voID); int yres(voID); #endif

fun.h

#ifndef __input_H #define __input_H#define KEYBOARDMODE    0#define CHARMODE        1voID input_init(voID); int input_choice_mode(int mode); int input_kb_mode(voID); int input_char_mode(voID); voID input_recover(voID); #endif

inc.h

#ifndef __INC_H #define __INC_H #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <sys/ioctl.h> #include <linux/fb.h> #include <linux/input.h> #include <unistd.h> #include <sys/mman.h> #include <string.h> #include <termios.h> #include "input.h" #include "fb_draw.h"#endif

input.h

#ifndef __input_H #define __input_H#define KEYBOARDMODE    0#define CHARMODE        1voID input_init(voID); int input_choice_mode(int mode); int input_kb_mode(voID); int input_char_mode(voID); voID input_recover(voID); #endif

fb_draw.c

#include "include/inc.h"/*********************************************** 结构体中保存了有关 *** 作framebuffer设备所需的成员 fix : 本地的fb数据 var : 可变的fb数据 bpp : 一个像素点所占位数 fd : 保存fb文件的文件描述符 fbp : 获取映射空间地址 fbpi: 获取映射空间地址 ************************************************/struct { struct fb_fix_screeninfo fix;//本地fb数据    struct fb_var_screeninfo var;//可变fb数据    unsigned int bpp;//一个像素点所占位数    int fd;//保存fb文件的文件描述符    unsigned char *fbp;//获取映射空间地址    unsigned int *fbpi;//获取映射空间地址}fb_st; /*********************************************** int fb_open(voID); 功 能 : 把fb文件打开,通过ioctl控制fb设备 通过mmap映射fb文件 返回值 : 无 参 数 : 成功返回0,失败返回-1 ************************************************/int fb_open(voID) { int ret; fb_st.fd = open("/dev/fb0",O_RDWR); if(-1 == fb_st.fd) { perror("open"); goto error; } /* get fb_var_screeninfo */ ret = ioctl(fb_st.fd,FBIOGET_VSCREENINFO,&fb_st.var); if(-1 == ret) { perror("ioctl(fb_st.var)"); goto close_fd; } fb_st.bpp = fb_st.var.bits_per_pixel >> 3; /* get fb_fix_screeninfo */ ret = ioctl(fb_st.fd,FBIOGET_FSCREENINFO,&fb_st.fix); if(-1 == ret) { perror("ioctl(fb_st.fix)"); goto close_fd; } /* get framebuffer start address */ fb_st.fbp = mmap(0,fb_st.fix.smem_len,PROT_READ | PROT_WRITE,MAP_SHARED,fb_st.fd,0); if((voID *)-1 == fb_st.fbp) { perror("mmap"); goto close_fd; } return 0; close_fd: close(fb_st.fd); error: return -1; } /*********************************************** voID fb_close(); 功 能 : 解除设备文件的映射,关闭文件 返回值 : 无 参 数 : 无 ************************************************/voID fb_close() { munmap(fb_st.fbp,fb_st.fix.smem_len); close(fb_st.fd); } /*********************************************** voID fb_draw_point(int x,int y,int color); 功 能 : 通过framebuff画点 返回值 : 无 参 数 : x 横坐标 y 纵坐标 color 要显示的颜色(现只支持白色0xFF 黑色0x00) ************************************************/voID fb_draw_point(int x,unsigned int color) { unsigned long offset; offset = fb_st.bpp * x + y * fb_st.fix.line_length; //memset(fb_st.fbp + offset,color,fb_st.bpp);    fb_st.fbpi = (unsigned int *)(fb_st.fbp + offset); *(fb_st.fbpi) = color; } /*********************************************** int xres(voID); 功 能 : 获取x轴坐标 返回值 : 获取到的x轴坐标 参 数 : 无 ************************************************/int xres(voID) { return fb_st.var.xres; } /*********************************************** int yres(voID); 功 能 : 获取y轴坐标 返回值 : 获取到的y轴坐标 参 数 : 无 ************************************************/int yres(voID) { return fb_st.var.yres; }

input.c

#include "include/inc.h"/*********************************************** 结构体中保存了有关键盘 *** 作或者终端设置的一些成员 old : 保存原始终端信息 new : 改变之后的终端信息 kb_fd : 保存键盘设备的设备号 ev : 保存输入设备的信息数据 ************************************************/struct { struct termios old; struct termios new; int kb_fd; struct input_event ev; }input_st; /*********************************************** voID input_init(voID); 功 能 : 用来在接收输入值之前设置终端 返回值 : 无 参 数 : 无 ************************************************/voID input_init(voID) { tcgetattr(0,&input_st.old); input_st.new = input_st.old; input_st.new.c_lflag &= ~ICANON; input_st.new.c_lflag &= ~ECHO; tcsetattr(0,TCSANow,&input_st.new); } /*********************************************** char *mystrcpy(char *dest,const char *src); 功 能 : 用来拷贝字符串,碰到尾0或者空格停止 返回值 : 指向dest的指针 参 数 : dest 拷贝的目标,dest指向拷贝的空间 src 拷贝的源,指向要拷贝的字符串 ************************************************/char *mystrcpy(char *dest,const char *src) { int i = 0; for(i = 0; src[i] !=  && src[i] !=  ) dest[i] ; i++ src[i]; dest[i] == ; return dest; } /*********************************************** voID input_find_dev_file(char *buf_ev); 功 能 : 用来读取当前用户识别的键盘文件 返回值 : 无 参 数 : buf_ev 保存获取到的键盘设备文件名 ************************************************/voIDcharbuf_ev) { file  input_find_dev_file( NulL;  *char*fp =1280 buf[}; ] = {char"keyboard *find_kb = "; char"event *find_ev = "; char NulL; fp " *p =/proc/bus/input/devices= fopen(""r,"); whilesizeof1((fgets(buf, NulL) { p (buf) -  strstr(buf,find_kb); ,fp)) !=if= NulL) continue(p ==; else { whileif NulL) ((fgets(buf,find_ev); continue(p ==; else { mystrcpy(buf_ev,p); break; } } break; } } fclose(fp); } /*********************************************** int input_choice_mode(int mode); 功 能 : 用来选择接收输入源的模式 返回值 : 0 代表使用键盘模式 1 代表使用字符模式 -1 代表选择模式失败 参 数 : KEYBOARDMODE 键盘模式 CHARMODE 字符模式 ************************************************/intint mode) {  input_choice_mode(char64" dest[/dev/input/] = "; char80 buf[}; ] = {switch(mode) { case KEYBOARDMODE : input_find_dev_file(buf); strcat(dest,buf); input_st.kb_fd  open(dest,O_RDONLY); if=0) { perror((input_st.kb_fd < "open()"); return1; }  -break; casebreak;  CHARMODE : defaultreturn1 : ; }  -return mode; } /*********************************************** int input_kb_mode(voID); 功 能 : 获取键盘的键值,并返回 返回值 : 为了使用方便,返回[103上] 返回[108下],返回[105左] 返回[106右],返回[14落子] 返回[16quit] 参 数 : 无 ************************************************/intvoID) { read(input_st.kb_fd, input_kb_mode(sizeof(input_st.ev)); &input_st.ev,if EV_KEY) if(input_st.ev.type == SYN_REPORT) { if(input_st.ev.value ==16) { tcsetattr((input_st.ev.code == 0input_st.old); close(input_st.kb_fd); } return,& input_st.ev.code; } return0; }  /*********************************************** int input_char_mode(voID); 功 能 : 获取键盘字符,返回[w上] 返回[s下],返回[a左] 返回[d右],返回[‘ ‘] 返回[qquit] 请自行处理大小写 参 数 : 无 ************************************************/intvoID) {  input_char_mode(int0; val  val =  getchar(); if=q(val == Q || val == ) tcsetattr(0input_st.old); return,& val; } /*********************************************** voID input_recover(voID); 功 能 : 用来恢复设置终端 返回值 : 无 参 数 : 无 ************************************************/voIDvoID) { tcsetattr( input_recover(0input_st.old); }fun.c,& #include 

#include

#include <stdio.h>"<stdlib.h>include/inc.h" #include "include/fun.h"int0x000000// color = 棋盘线颜色 黑色;                int0xFFFFFF// back_color = 棋盘背景颜色 白色;            int0xCC9966// play1_color = 0x00BFFF; ;//玩家1棋子颜色int0x000000// play2_color = 0xFFBBFF; ;//玩家2棋子颜色struct00 cir c = {20,0x00BFFF,}; ,intint17 ifset(int (*arr)[int],y) {  *x,if *16) ((*x) > 0; *x = if0) ((*x) < 16; *x = if16) ((*y) > 0; *y = if0) ((*y) < 16; *y = if12(arr[(*x)][(*y)] == )  || arr[(*x)][(*y)] == return1;  return0; }  voIDintint draw_circle(int x, color) {  r,int x0,y0; for) { for(x0 = x - r; x0 <= x + r; x0++) { if(y0 = y - r; y0 <= y + r; y0++ r) fb_draw_point(x0,y0,color); } } } int((x0 - x) * (x0 - x) + (y0 - y) * (y0 - y) <= r *int17 is_win(int arr[][int], mode) {  x,int00 i = 0,j = ; ,sum = for516(i = x; i < x + // && i <= 判断横向能否赢; i++)                 { if1 mode) sum(arr[i+; ][y] ==else++break; }             for50(i = x; i > x - ) {  && i >= if; i--1 mode) sum(arr[i-; ][y] ==else++break; }             if4) (sum >= return1;  else sum 0; = for516(i = y; i < y + // && i <= 判断纵向能否赢; i++)                 { if1 mode) sum(arr[x][i+; ] ==else++break; }             for50(i = y; i >= y - ) {  && i >= if; i--1 mode) sum(arr[x][i-; ] ==else++break; }             if4) (sum >= return1;  else sum 0; j =  y; for=516(i = x; i < x + // && i <= 判断撇能否赢; i++)                 { if11(arr[i+ mode) sum][j-; ] ==else++break; j            ; } j  y; --for=50(i = x; i > x - ) {  && i >= if; i--11(arr[i- mode) sum][j+; ] ==else++break; j            ; } if++4) (sum >= return1;  else sum 0; j =  y; for=516(i = x; i < x + // && i <= 判断捺能否赢; i++)                 { if11(arr[i+ mode) sum][j+; ] ==else++break; } j              y; for=50(i = x; i > x - ) {  && i >= if; i--11(arr[i- mode) sum][j-; ] ==else++break; j            ; } if--4) (sum >= return1;  return0; }  voID//打印棋盘 print()                { int00 i = ; ,j = for5101410(i = //; i <= 打印棋盘背景颜色; i++)             { for90990(j = ) fb_draw_point(i,j,back_color); } ; j <= for; j++5301390(i = //; i <= 打印棋盘外边框 上; i++)             { for110113(j = ) fb_draw_point(i,color); } ; j <= for; j++5301390(i = //; i <= 打印棋盘外边框 下; i++)                 { for970973(j = ) fb_draw_point(i,color); } ; j <= for; j++530533(i = //; i <= 打印棋盘外边框 左; i++)                 { for110970(j = ) fb_draw_point(i,color); } ; j <= for; j++13901385(i = //; i >= 打印棋盘外边框 右; i--)                 { for112970(j = ) fb_draw_point(i,color); } } ; j <= voID; j++ print_line() { int00 i = ; ,j = for5601360(i = //; i <= 打印棋盘线条; i++)             { for140940(j = 50; j <= ) fb_draw_point(i,color); } ; j += for5601360(i = 50; i <= ) { ; i += for140940(j = ) fb_draw_point(i,color); } } ; j <= voID; j++int17 print_intime(struct (*xy_point)[ cir q) { ],int00 i = 0,c = 0,d = 0,x = ; ,y = for5600(i = 1360,x = 50; i <= ) { ; i += for,x++1400(j = 940,y = 50; j <= ) { ; j += if,y++1) draw_circle(i,q.r,play1_color); (xy_point[x][y] == elseif2 ) draw_circle(i,play2_color); (xy_point[x][y] == elseif0 ) { draw_circle(i,back_color); (xy_point[x][y] == for2020(c = i + ) { ,d = j; c >= i - if; c--5601360(c < )  || c > continue; fb_draw_point(c,d,color); } for2020(d = j + ) { ,c = i; d >= j - if; d--140940(d < )  || d > continue; fb_draw_point(c,color); } } } } } voIDintint _set(y) { ( *x,;  *if*x)++17) { (((*x) == 0; (*x) = ; if*y)++17) (((*y) == 0; } } *y) = intint17 play(int (*xy_point)[ mode) { ],int00 ret = 0,flag = 0,val = 0,tmpx = ; flag ,tmpy =  input_choice_mode(CHARMODE); c.x 0=0= ; ; c.y = whilec.y)) _set(c.y); xy_point[c.x][c.y] (ifset(xy_point,&c.x,& mode; print_intime(xy_point,c); LEAP: &c.x,&if=0) { val (flag ==  input_kb_mode(); switch=(val) { case103 c.y; tmpx   c.x; c.y :    tmpy =; =while--c.y); xy_point[tmpx][tmpy] 0(ifset(xy_point,&; = break; case108 c.y; tmpx   c.x; c.y :    tmpy =; =while++c.y); xy_point[tmpx][tmpy] 0(ifset(xy_point,&; = break; case105 c.x; tmpy   c.y; c.x :    tmpx =; =while--c.y); xy_point[tmpx][tmpy] 0(ifset(xy_point,&; = break; case106 c.x; tmpy   c.y; c.x :    tmpx =; =while++c.y); xy_point[tmpx][tmpy] 0(ifset(xy_point,&; = break; case141 ;   :    ret = break; case160 ) ; } }   :    exit(elseif1 ) { val (flag ==  input_char_mode(); switch=(val) { caseW  : casew  c.x; tmpy  c.y; c.y :    tmpx =; =while--c.y); xy_point[tmpx][tmpy] 0(ifset(xy_point,&; = break; caseS  : cases  c.x; tmpy  c.y; c.y :    tmpx =; =while++c.y); xy_point[tmpx][tmpy] 0(ifset(xy_point,&; = break; caseA  : casea  c.x; tmpy  c.y; c.x :    tmpx =; =while--c.y); xy_point[tmpx][tmpy] 0(ifset(xy_point,&; = break; caseD  : cased  c.x; tmpy  c.y; c.x :    tmpx =; =while++c.y); xy_point[tmpx][tmpy] 0(ifset(xy_point,&; = break; case 1 break :    ret = ; ; caseq 0) ; } } xy_point[c.x][c.y]  :    exit( mode; print_intime(xy_point,c); if=1) (ret != goto LEAP; if(is_win(xy_point,c.x,c.y,mode)) return mode; return0; } main.c #include 

"

#include <stdio.h>include/fun.h" #include "include/inc.h"intvoID) {  main(int00 i = //,j = 循环变量;                     int17    17 xy_point[0][//] = {保存棋盘坐标};        int0    // ret = 接收函数返回值;                         fb_open(); xres(); yres(); input_init(); print(); //打印棋盘边框和背景//打印棋盘    print_line();            while1    ) { ret (1//= play(xy_point,玩家1下棋);            if0        ) (ret < break; elseif1 ) { printf((ret == "play1 win\n"); break; } ret 2//= play(xy_point,玩家2下棋);                if0        ) (ret < break; elseif2 ) { printf((ret == "play2 win\n"); break; } } input_recover(); fb_close(); return0; } 
总结

以上是内存溢出为你收集整理的五子棋 framebuffer版全部内容,希望文章能够帮你解决五子棋 framebuffer版所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1211457.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存