c语言遮罩函数 图像遮盖掩码 c语言

在n个数字里面抽取m个数

#include stdio.h

创新互联公司是专业的威宁网站建设公司,威宁接单;提供成都网站建设、网站设计,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行威宁网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

#include stdlib.h

void inputNum(int*,int);

void main()

{

//n:输入数的个数;m:抽取个数;p:存放输入数

int n=0,m=0,*p;

//a,b,c,d:均为循环索引;count:排列组合个数

int a,b,c,d,count=0;

printf("在n个数字里面抽取m个数字(n,m):");

scanf("%d,%d",n,m);

//给指针p分类内存空间

p=(int*)malloc(sizeof(int)*n);

//输入数

inputNum(p,n);

//这里对选取4个数就行排列组合

for(a=0;an;a++)

{

for(b=0;bn;b++)

{

for(c=0;cn;c++)

{

for(d=0;dn;d++)

{

if(a!=b  a!=c  a!=d  b!=c  b!=d  c!=d)

{

printf("%d\t%d\t%d\t%d\n",*(p+a),*(p+b),*(p+c),*(p+d));

count++;

}

}

}

}

}

printf("total=%d\n",count);

free(p);

}

//输入数

void inputNum(int *p,int n)

{

int i;

for(i=0;in;i++,p++)

{

printf("输入数%d: ",i+1);

scanf("%d",p);

}

}

C语言如何获取文件信息?stat这个函数如何使用? - C / C++ -

stat(取得文件状态)

相关函数 fstat,lstat,chmod,chown,readlink,utime

表头文件 #include sys/stat.h

#include unistd.h

定义函数 int stat(const char * file_name,struct stat *buf);

函数说明 stat()用来将参数file_name所指的文件状态,复制到参数buf所指的结构中。

下面是struct stat内各参数的说明

struct stat

{

dev_t st_dev; /*device*/

ino_t st_ino; /*inode*/

mode_t st_mode; /*protection*/

nlink_t st_nlink; /*number of hard links */

uid_t st_uid; /*user ID of owner*/

gid_t st_gid; /*group ID of owner*/

dev_t st_rdev; /*device type */

off_t st_size; /*total size, in bytes*/

unsigned long st_blksize; /*blocksize for filesystem I/O */

unsigned long st_blocks; /*number of blocks allocated*/

time_t st_atime; /* time of lastaccess*/

time_t st_mtime; /* time of last modification */

time_t st_ctime; /* time of last change */

};

st_dev 文件的设备编号

st_ino 文件的i-node

st_mode 文件的类型和存取的权限

st_nlink 连到该文件的硬连接数目,刚建立的文件值为1。

st_uid 文件所有者的用户识别码

st_gid 文件所有者的组识别码

st_rdev 若此文件为装置设备文件,则为其设备编号

st_size 文件大小,以字节计算

st_blksize 文件系统的I/O 缓冲区大小。

st_blcoks 占用文件区块的个数,每一区块大小为512 个字节。

st_atime 文件最近一次被存取或被执行的时间,一般只有在用mknod、utime、read、write与tructate时改变。

st_mtime 文件最后一次被修改的时间,一般只有在用mknod、utime和write时才会改变

st_ctime i-node最近一次被更改的时间,此参数会在文件所有者、组、权限被更改时更新先前所描述的st_mode 则定义了下列数种情况

S_IFMT 0170000 文件类型的位遮罩

S_IFSOCK 0140000 scoket

S_IFLNK 0120000 符号连接

S_IFREG 0100000 一般文件

S_IFBLK 0060000 区块装置

S_IFDIR 0040000 目录

S_IFCHR 0020000 字符装置

S_IFIFO 0010000 先进先出

S_ISUID 04000 文件的(set user-id on execution)位

S_ISGID 02000 文件的(set group-id on execution)位

S_ISVTX 01000 文件的sticky位

S_IRUSR(S_IREAD) 00400 文件所有者具可读取权限

S_IWUSR(S_IWRITE)00200 文件所有者具可写入权限

S_IXUSR(S_IEXEC) 00100 文件所有者具可执行权限

S_IRGRP 00040 用户组具可读取权限

S_IWGRP 00020 用户组具可写入权限

S_IXGRP 00010 用户组具可执行权限

S_IROTH 00004 其他用户具可读取权限

S_IWOTH 00002 其他用户具可写入权限

S_IXOTH 00001 其他用户具可执行权限

上述的文件类型在POSIX 中定义了检查这些类型的宏定义

S_ISLNK (st_mode) 判断是否为符号连接

S_ISREG (st_mode) 是否为一般文件

S_ISDIR (st_mode)是否为目录

S_ISCHR (st_mode)是否为字符装置文件

S_ISBLK (s3e) 是否为先进先出

S_ISSOCK (st_mode) 是否为socket

若一目录具有sticky 位(S_ISVTX),则表示在此目录下的文件只能被该文件所有者、此目录所有者或root来删除或改名。

返回值 执行成功则返回0,失败返回-1,错误代码存于errno

错误代码 ENOENT 参数file_name指定的文件不存在

ENOTDIR 路径中的目录存在但却非真正的目录

ELOOP 欲打开的文件有过多符号连接问题,上限为16符号连接

EFAULT 参数buf为无效指针,指向无法存在的内存空间

EACCESS 存取文件时被拒绝

ENOMEM 核心内存不足

ENAMETOOLONG 参数file_name的路径名称太长

范例 #include sys/stat.h

#include unistd.h

mian()

{

struct stat buf;

stat (“/etc/passwd”,buf);

printf(“/etc/passwd file size = %d /n”,buf.st_size);

}

如何用c语言编写图形操作的软件呢??

学MFC吧~~你的困惑一下子就会解除的~~~

用纯C语言编带界面的也不是不可能~~就是要用到WINDOWS API~~给你一段代码试试吧~~是我做的一个OPENGL的程序~~~在VISUAL STUDIO.NET 2003下编译通过~~代码如下~~

#define WM_TOGGLEFULLSCREEN (WM_USER+1) // 定义全屏/窗口切换消息

#define TIMER1 101 // 定义时钟代号,设置为101号

#define TITLE "5DG'S Color Shading" // 定义窗口标题

#define CLASSNAME "5DG_OPENGL" // 定义窗口类名

#define WIDTH 640 // 定义窗口宽度

#define HEIGHT 480 // 定义窗口高度

#define BPP 16 // 定义每象素的位数

#define NUM 200 // 定义绘制圆时用的顶点数(用顶点组成的线段逼近圆)

// 在此处引用程序要求的头文件:

#include windows.h // Windows的头文件

#include gl\gl.h // OpenGL32库的头文件

#include gl\glu.h // Glu32库的头文件

#include math.h // 数学函数库的头文件

// 在此处加入程序要求的库到链接器中:

#pragma comment(lib, "opengl32.lib") // 链接时查找OpenGL32.lib

#pragma comment(lib, "glu32.lib") // 链接时查找glu32.lib

// 在此处定义与窗口相关的结构体:

typedef struct { // 定义处理键盘的结构体

BOOL keyDown [256]; // 存储键盘按键状态的数组

} Keys;

typedef struct { // 定义存储应用程序实例的结构体

HINSTANCE hInstance; // 应用程序实例

const char* className; // 应用程序类名

} Application;

typedef struct { // 定义初始化窗口所需信息

Application* application; // 所属的应用程序

char* title; // 窗口标题

int width; // 窗口宽度

int height; // 窗口高度

int bitsPerPixel; // 每像素的位数

BOOL isFullScreen; // 是否全屏

} GL_WindowInit;

typedef struct { // 定义窗口结构体

Keys* keys; // 键盘

HWND hWnd; // 窗口句柄

HDC hDC; // 设备描述表

HGLRC hRC; // 绘制描述表

GL_WindowInit init; // 提供Window初始化信息的结构体

} GL_Window;

// 此代码模块中包含的函数的前向声明:

BOOL Initialize(GL_Window* window, Keys* keys); // 设置你绘制前的初始化值

void DrawSceneGL(void); // 在这里完成场景的绘制

void Update(void); // 在此处更新对消息的动作

void Deinitialize(void); // 在此处做退出前扫尾工作

// 在此处定义全局变量:

GL_Window* OGL_window; // 存储窗口信息

Keys* OGL_keys; // 存储按键信息

// 在此处定义用户变量:

void ResizeWindowGL(int width, int height) // 重新设置窗口大小

{

glViewport(0, 0, (GLsizei)(width), (GLsizei)(height)); // 重置当前视口大小

glMatrixMode(GL_PROJECTION); // 切换到投影矩阵模式

glLoadIdentity(); // 重置投影矩阵

gluPerspective(45, (float)width/(float)height, 0.1, 100); // 设置透视投影

glMatrixMode(GL_MODELVIEW); // 切换到模型视图矩阵

glLoadIdentity(); // 重置模型视图矩阵

}

BOOL ChangeScreenResolution(int width, int height, int bitsPerPixel) // 修改屏幕分辨率

{

DEVMODE dmScreenSettings; // 设备设置模式

ZeroMemory(dmScreenSettings, sizeof(DEVMODE)); // 清空

dmScreenSettings.dmSize = sizeof(DEVMODE); // Devmode结构的大小

dmScreenSettings.dmPelsWidth = width; // 设置为屏幕宽度

dmScreenSettings.dmPelsHeight = height; // 设置为屏幕高度

dmScreenSettings.dmBitsPerPel = bitsPerPixel; // 设为指定位长;

dmScreenSettings.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;

// 尝试设置显示模式并返回结果。注: CDS_FULLSCREEN 移去了状态栏

if (ChangeDisplaySettings(dmScreenSettings, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL)

{

return FALSE; // 分辨率修改失败,返回 False

}

return TRUE; // 分辨率修改成功,返回 True;

}

BOOL CreateWindowGL(GL_Window* window) // 建立OpenGL窗口

{

DWORD windowStyle = WS_OVERLAPPEDWINDOW; // 设置窗口样式

DWORD windowExtendedStyle = WS_EX_APPWINDOW; // 设置窗口扩展样式

PIXELFORMATDESCRIPTOR pfd = // 像素格式描述符(pfd)的设置

{

sizeof(PIXELFORMATDESCRIPTOR), // 像素的尺寸

1, // 版本号

PFD_DRAW_TO_WINDOW | // pfd必须支持窗口绘制

PFD_SUPPORT_OPENGL | // pfd必须支持OpenGL

PFD_DOUBLEBUFFER, // pfd必须支持双缓存

PFD_TYPE_RGBA, // 像素格式为RGBA

window-init.bitsPerPixel, // 设置颜色深度

0, 0, 0, 0, 0, 0, // 忽略颜色位数

0, // 无Alpha缓存

0, // 忽略偏移位

0, // 无累积缓存

0, 0, 0, 0, // 忽略累积缓存位

16, // 深度缓存为16位

0, // 无模板缓存

0, // 无辅助缓存

PFD_MAIN_PLANE, // 主要绘制层

0, // 保留位

0, 0, 0 // 忽略层遮罩

};

RECT windowRect = {0, 0, window-init.width, window-init.height}; // 定义窗口大小

GLuint PixelFormat; // 保存像素格式

if (window-init.isFullScreen == TRUE) // 切换全屏

{

if (ChangeScreenResolution(window-init.width, window-init.height, window-init.bitsPerPixel) == FALSE)

{

// 全屏切换失败

MessageBox(HWND_DESKTOP, "无法切换到全屏模式,在窗口模式下运行.\nMode Switch Failed,Running In Windowed Mode.", "Error", MB_OK | MB_ICONEXCLAMATION);

window-init.isFullScreen = FALSE; // 设置 isFullscreen 为False

}

else // 全屏切换成功

{

ShowCursor (FALSE); // 隐藏鼠标

windowStyle = WS_POPUP; // 设置窗口样式

windowExtendedStyle |= WS_EX_TOPMOST; // 设置窗口扩展样式

}

}

else

{

// 调整窗口大小,包括窗口边界

AdjustWindowRectEx(windowRect, windowStyle, 0, windowExtendedStyle);

}

// 开始创建 OpenGL 窗口

window-hWnd = CreateWindowEx(windowExtendedStyle, // 窗口扩展样式

window-init.application-className,// 应用程序类名

window-init.title, // 窗口标题

windowStyle, // 窗口样式

0, 0, // 窗口的 X,Y 坐标位置

windowRect.right - windowRect.left, // 窗口宽度

windowRect.bottom - windowRect.top, // 窗口高度

HWND_DESKTOP, // 父窗口为桌面

0, // 无菜单

window-init.application-hInstance,// 传入应用程序实例

window);

if (window-hWnd == 0) // 窗口是否成功创建

{

return FALSE; // 若失败,则返回FALSE

}

window-hDC = GetDC(window-hWnd); // 取得当前窗口的设备描述表

if (window-hDC == 0) // 若未得到设备描述表

{

DestroyWindow(window-hWnd); // 销毁该窗口

window-hWnd = 0; // 窗口句柄清零

return FALSE; // 返回FALSE

}

PixelFormat = ChoosePixelFormat(window-hDC, pfd); // 选择兼容的像素格式

if (PixelFormat == 0) // 若选择失败

{

ReleaseDC(window-hWnd, window-hDC); // 释放设备描述表

window-hDC = 0; // 将设备描述表清零

DestroyWindow(window-hWnd); // 销毁窗口

window-hWnd = 0; // 窗口句柄清零

return FALSE; // 返回FALSE

}

if (SetPixelFormat(window-hDC, PixelFormat, pfd) == FALSE) // 设置像素格式并判断是否失败

{

ReleaseDC(window-hWnd, window-hDC); // 释放设备描述表

window-hDC = 0; // 将设备描述表清零

DestroyWindow(window-hWnd); // 销毁窗口

window-hWnd = 0; // 窗口句柄清零

return FALSE; // 返回FALSE

}

window-hRC = wglCreateContext(window-hDC); // 取得绘制描述表

if (window-hRC == 0) // 若未得到绘制描述表

{

ReleaseDC(window-hWnd, window-hDC); // 释放设备描述表

window-hDC = 0; // 将设备描述表清零

DestroyWindow(window-hWnd); // 销毁窗口

window-hWnd = 0; // 窗口句柄清零

return FALSE; // 返回FALSE

}

if (wglMakeCurrent(window-hDC, window-hRC) == FALSE) // 设置绘制描述表并判断是否失败

{

wglDeleteContext(window-hRC); // 删除绘制描述表

window-hRC = 0; // 将绘制描述表清零

ReleaseDC(window-hWnd, window-hDC); // 释放设备描述表

window-hDC = 0; // 将设备描述表清零

DestroyWindow(window-hWnd); // 销毁窗口

window-hWnd = 0; // 窗口句柄清零

return FALSE; // 返回FALSE

}

ShowWindow(window-hWnd, SW_NORMAL); // 显示窗口

ResizeWindowGL(window-init.width, window-init.height); // 重设窗口

ZeroMemory(window-keys, sizeof (Keys)); // 清空键盘缓冲区

return TRUE; // 窗口创建成功

}

BOOL DestroyWindowGL(GL_Window* window) // 销毁窗口并释放程序所用的资源

{

if (window-hWnd != 0) // 窗口释放有句柄?

{

if (window-hDC != 0) // 窗口是否有得到绘制描述表?

{

wglMakeCurrent(window-hDC, 0); // 将当前描述表指针置为0

if (window-hRC != 0) // 该窗口是否有绘制描述表

{

wglDeleteContext(window-hRC); // 释放绘制描述表

window-hRC = 0; // 将绘制描述表清零

}

ReleaseDC(window-hWnd, window-hDC); // 释放设备描述表

window-hDC = 0; // 将设备描述表清零

}

DestroyWindow(window-hWnd); // 销毁窗口

window-hWnd = 0; // 将窗口句柄清零

}

if (window-init.isFullScreen) // 若窗口在全屏模式下

{

ChangeDisplaySettings(NULL ,0); // 切换为桌面分辨率

ShowCursor(TRUE); // 显示鼠标

}

return TRUE; // 返回TRUE

}

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)// 窗口消息处理

{

GL_Window* window = (GL_Window*)(GetWindowLong(hWnd, GWL_USERDATA));// 取得窗口信息

switch (uMsg) // 取得Window的消息

{

case WM_SYSCOMMAND: // 截取系统命令

{

switch (wParam) // 监听系统调用

{

case SC_SCREENSAVE: // 要运行屏保?

case SC_MONITORPOWER: // 显示器进入节电模式?

return 0; // 提前返回0,防止系统调用执行

}

break; // 退出

}

case WM_CREATE: // 创建窗口

{

CREATESTRUCT* creation = (CREATESTRUCT*)(lParam); // 保存窗口结构指针

window = (GL_Window*)(creation-lpCreateParams);

SetWindowLong(hWnd, GWL_USERDATA, (LONG)(window)); // 改变窗口属性

return 0; // 返回

}

case WM_TIMER: // TIMER事件

{

InvalidateRect(window-hWnd, NULL, FALSE); // 使窗口失效

break;

}

case WM_PAINT: // PAINT消息处理,在此处绘图

{

DrawSceneGL(); // 在此处绘图

SwapBuffers(window-hDC); // 交换缓存

ValidateRect(window-hWnd, NULL); // 使窗口有效

break;

}

case WM_CLOSE: // 关闭窗口

{

PostMessage(window-hWnd, WM_QUIT, 0, 0); // 结束程序

return 0;

}

case WM_SIZE: // 窗口大小变化

{

ResizeWindowGL(LOWORD(lParam), HIWORD(lParam)); // 修改窗口大小为 Width = LoWord, Height = HiWord

return 0; // 返回

}

case WM_KEYDOWN: // 按键按下时更新键盘缓冲

if ((wParam = 0) (wParam = 255)) // 按键是否合法?

{

window-keys-keyDown[wParam] = TRUE; // 设相应键为 True

return 0; // 返回

}

break; // 退出

case WM_KEYUP: // 按键松开时更新键盘缓冲

if ((wParam = 0) (wParam = 255)) // 按键是否合法?

{

window-keys-keyDown[wParam] = FALSE; // 设相应键为为 FALSE

return 0; // 返回

}

break; // 退出

case WM_TOGGLEFULLSCREEN: // 开关全屏模式

{

Deinitialize(); // 做扫尾工作

DestroyWindowGL(window); // 销毁窗口

window-init.isFullScreen = !window-init.isFullScreen; // 改变窗口模式

CreateWindowGL(window); // 重新创建窗口

Initialize(window, window-keys); // 初始化OpenGL绘制程序

break; // 退出

}

default:

break;

}

return DefWindowProc(hWnd, uMsg, wParam, lParam); // 将本程序不处理的消息传给 DefWindowProc

}

BOOL RegisterWindowClass(Application* application) // 为本应用程序注册一个类

{

WNDCLASSEX windowClass; // 窗口类

ZeroMemory (windowClass, sizeof(WNDCLASSEX)); // 清空内存

windowClass.cbSize = sizeof(WNDCLASSEX); // 窗口类的大小

windowClass.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; // 在窗口移动,改变大小的时候重绘

windowClass.lpfnWndProc = (WNDPROC)(WindowProc); // 用WindowProc函数处理消息

windowClass.hInstance = application-hInstance; // 设置实例

windowClass.hbrBackground = (HBRUSH)(COLOR_APPWORKSPACE); // 类背景的画刷颜色

windowClass.hCursor = LoadCursor(NULL, IDC_ARROW); // 载入鼠标指针

windowClass.lpszClassName = application-className; // 设置应用程序的类名

if (RegisterClassEx(windowClass) == 0) // 注册类失败?

{

MessageBox(HWND_DESKTOP, "应用程序类注册失败!\nRegisterClassEx Failed!", "Error", MB_OK | MB_ICONEXCLAMATION);

return FALSE; // 返回False (注册失败)

}

return TRUE; // 返回True (注册成功)

}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

{

Application application; // 应用程序

GL_Window window; // 窗口

Keys keys; // 键盘按键

MSG msg; // Window消息

BOOL bRet; // 保存消息获得是否成功

// 给应用程序赋值

application.className = CLASSNAME; // 程序类名字

application.hInstance = hInstance; // 程序入口

// 窗口相关信息设置

ZeroMemory(window, sizeof(GL_Window)); // 清零窗口变量的内存空间

window.keys = keys; // 设置按键

window.init.application = application; // 设置窗口程序

window.init.title = TITLE; // 设置标题

window.init.width = WIDTH; // 设置窗口宽度

window.init.height = HEIGHT; // 设置窗口高度

window.init.bitsPerPixel = BPP; // 设置每像素的位数

window.init.isFullScreen = FALSE; // 设置初始窗口是否全屏否(FALSE)

ZeroMemory(keys, sizeof(Keys)); // 键盘缓冲清零

if (RegisterWindowClass(application) == FALSE) // 注册类是否失败

{

MessageBox(HWND_DESKTOP, "窗口类注册失败!\nError Registering Window Class!", "Error", MB_OK | MB_ICONEXCLAMATION);

return -1; // 结束程序

}

if (CreateWindowGL(window) == TRUE) // 创建窗口是否成功

{

if (Initialize(window, keys) == FALSE) // 初始化OpenGL绘制程序

{

PostMessage(window.hWnd, WM_QUIT, 0, 0); // 抛出消息WM_QUIT

}

}

else

{

return 0; // 退出程序

}

while ((bRet = GetMessage(msg, NULL, 0, 0) != 0)) // 循环直到收到消息为WM_QUIT

{

if (bRet != -1)

{

Update(); // 更新处理消息事件

TranslateMessage(msg); // 传递消息

DispatchMessage(msg); // 分派消息

}

else

{

break; // 退出循环

}

}

// 退出消息循环,准备退出程序

Deinitialize(); // 做退出前的扫尾工作

DestroyWindowGL(window); // 销毁窗口

UnregisterClass(application.className, application.hInstance); // 注销窗口类

return 0; // 退出程序

}

BOOL Initialize(GL_Window* window, Keys* keys) // 用户绘制场景相关的函数在此处定义

{

// 设置全局变量

OGL_window = window;

OGL_keys = keys;

// 建立时钟

SetTimer(window-hWnd, TIMER1, 33, NULL);

// 在此处初始化绘制场景

glClearColor(0.0f, 0.0f, 0.0f, 0.5f); // 清屏为黑色

glClearDepth(1.0f); // 设置深度缓存

glDepthFunc(GL_LEQUAL); // 选择深度测试方式

glEnable(GL_DEPTH_TEST); // 开启深度测试

glShadeModel(GL_SMOOTH); // 阴暗处理采用平滑方式

glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // 最精细的透视计算

return TRUE; // 初始化成功返回TRUE

}

void DrawSceneGL(void) // 绘制场景

{

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 清除颜色和深度缓存

glLoadIdentity(); // 重置当前矩阵

//在此处添加代码进行绘制:

glShadeModel(GL_SMOOTH); // 阴暗处理采用平滑方式(Smooth Shading)

glTranslatef(-1.5f, 1.0f, -6.0f); // 坐标原点往左移1.5f,往上移1.0f,往内移6.0f

glBegin(GL_TRIANGLES); // 开始绘制一个三角形

glColor3ub(255, 0, 0); // 定义上顶点为红色

glVertex3f(0.0f, 1.0f, 0.0f); // 绘制上顶点

glColor3ub(0, 255, 0); // 定义左下顶点为绿色

glVertex3f( -1.0f, -1.0f, 0.0f); // 绘制左下顶点

glColor3ub(255, 255, 0); // 定义右下顶点为黄色

glVertex3f(1.0f, -1.0f, 0.0f); // 绘制右下顶点

glEnd();

glTranslatef(3.0f, 0.0f, 0.0f); // 向右平移3.0f

glColor3ub(0, 255, 255); // 定义正方形的颜色

glBegin(GL_QUADS); // 开始绘制一个正方形

glVertex3f(-1.0f, 1.0f, 0.0f); // 绘制左上角顶点

glVertex3f(-1.0f,-1.0f, 0.0f); // 绘制左下角顶点

glVertex3f( 1.0f,-1.0f, 0.0f); // 绘制右下角顶点

glVertex3f( 1.0f, 1.0f, 0.0f); // 绘制右上角顶点

glEnd();

glTranslatef(-1.5f, -2.0f, 0.0f); // 向左移1.5f,向下移2.0f

glColor3f(0.0f, 0.8f, 0.2f); // 绿色

glBegin(GL_LINE_LOOP); // 绘制圆

for (int i=0; iNUM; i++)

{

glVertex3f(1.5f*(float)sin(2.0f*3.14f*i/NUM), 0.0f, 1.5f*(float)cos(2.0f*3.14f*i/NUM));

}

glEnd();

glFlush(); // 刷新GL命令队列

}

void Update(void) // 在此处更新对消息的动作

{

if (OGL_keys-keyDown[VK_ESCAPE] == TRUE) // 判断ESC键是否按下

{

PostMessage(OGL_window-hWnd, WM_QUIT, 0, 0); // 结束程序

}

if (OGL_keys-keyDown[VK_F1] == TRUE) // 判断F1是否按下

{

PostMessage(OGL_window-hWnd, WM_TOGGLEFULLSCREEN, 0, 0); // 在全屏/窗口模式间切换

}

}

void Deinitialize(void) // 在此处做退出前扫尾工作

{

KillTimer(OGL_window-hWnd, TIMER1); // 释放时钟

}

c语言程序设计教程(新手的)

[b][color=red]一. 亲情奉献Photoshop入门进阶教程[/color][/b]

[URL=;fromuid=22555]大相框的使用(适合新手)[/URL]

[b][color=blue]二. Photoshop经典实用教程(精选版)[/color][/b]

[URL=;fromuid=22555]最简单的磨皮教程[/URL]

[URL=;fromuid=22555]中性灰的理论探讨与实践(二)——“公正”的中性灰

[url];fromuid=22555[/url]

[/URL]

[URL=;fromuid=22555]中性灰的理论探讨与实践(三)——以中性灰为依据[/URL]

[URL=;fromuid=22555]中性灰的理论探讨与实践(一)——颜色的反射[/URL]

[URL=;fromuid=22555]如何除出网纹方法[/URL]

[URL=;fromuid=22555]Photoshop 鲜为人知的75个技巧[/URL]

[URL=;fromuid=22555]旧照片翻新[/URL]

[URL=;fromuid=22555]在PS中实现遮罩效果(教程)[/URL]

[URL=;fromuid=22555]适合新手制作的闪字动画[/URL]

[URL=]飘舞教材[/URL]

[URL=;fromuid=22555]做个图片光芒(星空)效果[/URL]

[URL=;fromuid=22555]动态光线的制作教程[/URL]

[URL=;fromuid=22555]简单快速磨皮[/URL]

[URL=;fromuid=22555]类似“珍珠”的教程[/URL]

[URL=;fromuid=22555]雪女王---唯美漫画风格效果制作[/URL]

[URL=;fromuid=22555]混合模式深入理解[/URL]

[URL=;fromuid=22555]打造逼真火焰字体[/URL]

[URL=;fromuid=22555]Photoshop简单美化视频照片[/URL]

[URL=;fromuid=22555]LAB模式简单计算后期方法之《绿意》[/URL]

[URL=;fromuid=22555]几种边框制作教程[/URL]

[URL=;fromuid=22555]Photoshop详细头像美化教程[/URL]

[URL=;fromuid=22555]PS CS3智能滤镜新功能初试[/URL]

[URL=;fromuid=22555]PS打造超炫人物效果之梦幻光线[/URL]

[URL=;fromuid=22555]PS打造唯美夜景[/URL]

[URL=;fromuid=22555]PS肤色调整19大秘诀[/URL]

[URL=;fromuid=22555]PS另一种马赛克效果[/URL]

[URL=;fromuid=22555]ps使你的照片变的不平凡[/URL]

[URL=;fromuid=22555]超实用ps简单应用教程[/URL]

[URL=;fromuid=22555]打造性感唇[/URL]

[URL=;fromuid=22555]教你转玩PS中照片转手绘效果[/URL]

[URL=;fromuid=22555]非主流[/URL]

[URL=;fromuid=22555]动态激光字[/URL]

[URL=;fromuid=22555]调出意境色调[/URL]

[URL=;fromuid=22555]超级简单的素描效果,看看吧,不看就白来了[/URL]

[URL=;fromuid=22555]帮你MM画睫毛,GG们快来学学[/URL]

[URL=;fromuid=22555]尚先生足球宝贝后期调色方法[/URL]

[URL=;fromuid=22555]将照片转为水墨效果[/URL]

[URL=;fromuid=22555]巧妙利用反相出人物特效[/URL]

[URL=;fromuid=22555]在《承诺》调色练习中的详细过程[/URL]

[URL=;fromuid=22555]玩转色彩-调色跟着感觉走(技术篇)[/URL]

[URL=;fromuid=22555]高对比修饰照片[/URL]

[URL=;fromuid=22555]高难度扣图[/URL]

[URL=;fromuid=22555]给MM全面化妆[/URL]

[URL=;fromuid=22555]给美图换上自己的脸----教你又一招换脸术[/URL]

[URL=;fromuid=22555]通道就是这么回事[/URL]

[URL=;fromuid=22555]关于磨皮后重新模拟肌肤的纹理[/URL]

[URL=;fromuid=22555]好多字体制作[/URL]

[URL=;fromuid=22555]蝴蝶结边框[/URL]

[URL=;fromuid=22555]换衣服教程[/URL]

[URL=;fromuid=22555]混合模式之变亮模式运用实例[/URL]

[URL=;fromuid=22555]简单磨皮方法[/URL]

[URL=;fromuid=22555]简化背景突出主体教程[/URL]

[URL=;fromuid=22555]教你帮照片换上美丽的蓝天[/URL]

[URL=;fromuid=22555]抠不是纯背景的一种方法[/URL]

[URL=;fromuid=22555]懵懂斋夜话.选择通道篇之八:变亮模式组的应用 [/URL]

[URL=;fromuid=22555]模仿曾经同桌的你(调色教程)[/URL]

[URL=;fromuid=22555]跑光修复[/URL]

[URL=;fromuid=22555]漂亮的霓虹效果[/URL]

[URL=;fromuid=22555]普通照片成艺术图片[/URL]

[URL=;fromuid=22555]签名图制作教程[/URL]

[URL=;fromuid=22555]曲线调整实战攻略(二)~反相—桔子系列教程[/URL]

[URL=;fromuid=22555]曲线调整实战攻略(三)~饱和度、(四)~对比度—桔子系

列教程

[/URL]

[URL=;fromuid=22555]曲线调整实战攻略(五)~颜色调整—桔子系列教程[/URL]

[URL=;fromuid=22555]曲线调整实战攻略(一)~亮度—桔子系列教程[/URL]

[URL=;fromuid=22555]去脸上黄斑[/URL]

[URL=;fromuid=22555]去网纹教程[/URL]

[URL=;fromuid=22555]人间仙景—通道计算做复杂图像[/URL]

[URL=;fromuid=22555]人物美白小教程![/URL]

[URL=;fromuid=22555]人物修整之泛黄篇[/URL]

[URL=;fromuid=22555]人物照片变小说封面[变鼠绘][/URL]

[URL=;fromuid=22555]溶图教程大集合[/URL]

[URL=;fromuid=22555]如何挽救逆光失败的照片〔附逆光修正滤下载〕[/URL]

[URL=;fromuid=22555]色阶调整图像操作(二)————轻轻松松点吸管[/URL]

[URL=;fromuid=22555]色阶调整图像操作(三)————认认真真做手动[/URL]

[URL=;fromuid=22555]色阶调整图像操作(五)————从从容容补断口[/URL]

[URL=;fromuid=22555]手绘美女[/URL]

[URL=;fromuid=22555]双生GIF做法~很多人求的那种[/URL]

[URL=;fromuid=22555]铁丝网制作教程[/URL]

[URL=;fromuid=22555]通道的RGB值与灰度[/URL]

[URL=;fromuid=22555]突出之美-逃出照片[/URL]

[URL=;fromuid=22555]图层蒙版的五大功能(五)——精心妙用灰蒙版[/URL]

[URL=;fromuid=22555]小试美容效果[/URL]

[URL=;fromuid=22555]严重偏色照片矫正[/URL]

[URL=;fromuid=22555]一定要用好调整层(四)——关键在于控制蒙版[/URL]

[URL=;fromuid=22555]一定要用好调整层(一)——什么是调整层[/URL]

[URL=;fromuid=22555]一款个性签名的制作过程[/URL]

[URL=;fromuid=22555]一款素雅签名的制作[/URL]

[URL=;fromuid=22555]一种怀旧效果[/URL]

[URL=;fromuid=22555]影楼修片基本技能之一:瘦脸篇[/URL]

[URL=;fromuid=22555]用Photoshop处理素雅水粉花卉特效[/URL]

[URL=;fromuid=22555]用PS让照片变的高贵[/URL]

[URL=;fromuid=22555]用抽出法抠图简单教程[/URL]

[URL=;fromuid=22555]用通道法扣图:留下美丽倩影[/URL]

[URL=;fromuid=22555]又一种方法使模糊图片变清晰[/URL]

[URL=;fromuid=22555]运用差值制作简单调色[/URL]

[URL=;fromuid=22555]照片转手绘教程[/URL]

[URL=;fromuid=22555]真人变卡通[/URL]

[URL=;fromuid=22555]拯救黄脸婆——偏色调整[/URL]

[URL=;fromuid=22555]制作抽丝文字漂亮效果[/URL]

[URL=;fromuid=22555] 打造动画人物-超级上色[/URL]

[URL=;fromuid=22555]另类抠图3步到位[/URL]

[URL=;fromuid=22555]再谈PS的遮罩效果[/URL]

[URL=;fromuid=22555]钢笔练习十步曲[/URL]

[URL=;fromuid=22555]教程时尚乞丐牛仔[/URL]

[URL=;fromuid=22555]人体植皮[/URL]

[URL=;fromuid=22555]Photoshop精彩鼠绘实例之蜻蜓翅膀的制作[/URL]

[URL=;fromuid=22555]蒙板使用技巧[/URL]

如何编写游戏

问题一:如何编写简单的游戏程序? stone.cpp

#include

#include

#include

#include

#include

#include

#include

const int Timer=0x1c;

int count;

int board[20][10];

const int ESC=0x11b,ENTER=0x1c0d,

UP=0x4800,DOWN=0x5000,LEFT=0x4b00,RIGHT=0x4d00;

void *** yze(int shapeNum,int (*result)[2]);

void drawShape(int screenX,int screenY,int shapeNum,int fillColor);

void prepare();

void interrupt (*oldHandle)(...);

void interrupt newHandle(...);

void setNewVect();

void recoverOldVect();

int afterChange(int boardX,int boardY,int shapeNum,int key);

int deleteRow(int boardX,int shapeNum);

int rowFull(int row);

void fillBoard(int boardX,int boardY,int shapeNum);

void main()

{ int driver,mode,errorCode;

driver=DETECT;

mode=0;

initgraph(driver,mode,);

errorCode=graphresult();

if(errorCode){

cerr 8410,5421,9540,6510,8541,6541,8540,5210,9541};

randomize(); ......

问题二:怎么编写一个游戏 要编写游戏,首先得学会几门编程语言. 编程主要语言有:C#,VisualC ,VisualBasic,Delphi...等. 如果是新手,建议学VisualBasic6.0 下面简单介绍一下VisualBasic. 随着VisualBasic的逐步发展完善和功能的不断括展,很多软件开发人员利用VisualBasic开发了大量的应用软件。VisualBasic已经成为使用人数最多,应用领域最广的程序设计语言和软件开发工具. 特点: 1.面向对象和可视化的程序设计. VisualBasic实现了对象的封装,是程序员只需把注意力集中到对象的设计.特别是对程序界面的设计. 2.事件驱动的运行机制. VisualBasic程序是在Windwos环境下开发的,因此其运行机制是事件驱动的。也就是只有发生某个动作 (如按下某键,鼠标移动等动作时发生的变化等),才会执行相应的程序段.这种机制使人机交互更为方便,程序的功能大大加强,也为多任务运行方式提供了保证. 3.结构化的程序设计语言. 在程序结构方面,VisualBasic继承了QBasic的所有优点,不但完全符合结构化程序设计的要求,而且具有较 强的数值运算和字符串的处理能力. 4.多种数据库访问能力. VisualBasic具有很强的数据库访问能力,不但能方便的处理诸如VisualFoxFro,Access,等小型数据库 中的数据,还可以轻松访问MicrosoftSQLServer等大中型数据库中的数据. 5.提供了功能完备的应用程序集成开发环境. VisualBasic的集成开发环境用户界面,代码编写,调试运行和编译打包等诸多功能于一体,为程序员提供了一 整套功能强大的应用程序开发环境. 6.方便使用的联机帮助功能. 利用集成开发环境中的帮助菜单或F1功能键,用户可以随时获取和查阅有关的帮助信息(MSDN). 其易学易用,是新手的最好选择. VisualBasic6.0_SP6中文大企业版: 119.147.41.16/...1F7612

问题三:怎么编程游戏 5分 人能识别有意义的字母、数字组合,就是代码。电脑机器只能识别0和1的二进制数字组合。人写的代码不能直接被电脑识别,需要一个翻译的过程,这个过程叫编译,把对人有意义的代码转换为对电脑有意义的二进制码。你看到的游戏画面是电脑理解了这些二进制码之后的结果。电脑根据二进制码来进行游戏图像渲染、处理玩家的键盘鼠标操作信息。举个简单的例子吧,假设人写的代码如下:Action action = drawCar();boolean goLeftBool = getInputLeftArrow();if(goLeftBool){ action.setLocation(action.getLocation().getX()--, action.getLocation().getY());}这段代码大概意思是:画辆车,玩家按左,车往左走。编译之后形成下面这样的二进制码:00101010100001010111110111011010100001011001010111011111011010000111010101010110001010111101101011000101010101010110110110101010101010101100101011110101010110101010101011101101110110100101110101011001010110110110101010001010101011其中每行代表源代码中的一句。就像黑客帝国一样,哈哈。这样电脑才能理解。当然,这是个例子而已,真正编译出来的二进制码比这个要多得多!

问题四:怎么编写一个游戏程序? 新手如何学习C语言 第一:一些概念。 C语言是一门程序设计语言,有一些标准,比较重要的是ANSI C(好像是C89)和C99。 数据结构包括逻辑结构和物理结构。逻辑结构是数据元素 *** 和定义在 *** 上的关系。物理结构是逻辑结构在计算机中的实现。 LCC、VC、TC、GCC都是C语言编译器,一般包括集成开发环境,编译器和链接器及辅助工具 我们书写的是C源程序,源程序通过编译器编译为中间文件,中间文件经链接器链接生成可执行文件。不同操作系统可执行文件不同。中间文件也有几个标准,微软使用的和Linux下通用的有差异。 第二:学习什么。 个人认为程序设计学习的重点放在数据结构的学习上,但是这种学习要有一个平台,比如C语言。 学习C语言首先要掌握基本语法,常量、变量、类型、及顺序结构、分支结构和循环结构的意义及用法。进一步学习构造类型如指针、结构、函数的意义和用法。 C语言提供一些标准函数以减轻程序设计工作量,这些函数我们自己也可以实现。即使不依靠函数库,只有编译器,理论上就足够了。事实上,提供的标准函数效率都很高,使用很频繁,没有自己实现的必要,所以掌握常用函数是非常必要的,但是要注意函数的适用范围。 继续学习因人而异,应该可以独立选择了。 第三:如何学习。 强调多实践,C语言的学习要经常上机,多写程序才能逐步提高。 推荐书籍:C Programming Languge。有中译本

求采纳

问题五:如何编程游戏 105分 用flash,Flas *** 设计的三大基本功能是整个Flas *** 设计知识体系中最重要、也是最基础的,包括:绘图和编辑图形、补间动画和遮罩。这是三个紧密相连的逻辑功能,并且这三个功能自Flash诞生以来就存在。

flash 8下载地址:

sky/soft/2491

问题六:如何编写手机游戏 要是能用问问让你学会了,软件工程师早就没饭吃了

问题七:怎样用C语言编写一个小游戏? #include

#include

#include

#include windows.h

void gotoxy(int x,int y) /*定义gotoxy函数*/

{ COORD c;

c.X=x-1;

c.Y=y-1;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);

}

int main()

{

struct point

{

int x, y;/*该点的位置,包括x坐标和y坐标*/

int xv, yv;/*该点在x轴,y轴的速度*/

}man;

long p;

man.x=man.y=20;

man.xv=man.yv=1;

system(cls);

p=1000000000000000;

while(p--)

{

if(p%50000)

continue;

gotoxy(man.x, man.y);/*把光标移到指定的坐标*/

printf( );/*输出一个空格,把先前的字符擦去*/

man.x += man.xv;/*水平方向按x轴的速度运动*/

man.y += man.yv;/*垂直方向按y轴的速度运动*/

if(man.x==0||man.x==80)

man.xv*=-1;

if(man.y==0||man.y==80)

man.yv*=-1;

gotoxy(man.x, man.y);

printf(%c\b, 2); /*输出ASCII码值为2的笑脸字符*/

}

getchar ();

return 0;

}

这个是一个会动的笑脸,你可以从最简单开始

问题八:怎么编写游戏程序? 这个坦白地说,非常难,但也不是不可以,就看你有没有恒心了。

需要学习JAVA SE的基础,包括AWT、SWING的一些知识,二进制与文本IO,3D图象,可能还涉及很多运算,包括声音与视频的输出,动画或flash的输出,甚至有可能要有与windows DirectX的交互。我在外面看攻有JAVA游戏编程方面的书,你可以买来看看

问题九:一个游戏的程序怎么写 要具备两个要素 第一要知道游戏怎么玩即规则 第二要懂得计算机中的某一门语言 好了把游戏的规则通过计算机语言告诉给电脑 就可以了

问题十:如何编制游戏 诸如:C语言,帧绘制,素材拼接做mod,甚至CAD都行,方法实在太多,但也很复杂,非三言两语可以说明。

想要简单制作的话,使用游戏制作软件,如RPG maker, FPS maker。


分享标题:c语言遮罩函数 图像遮盖掩码 c语言
当前链接:http://ybzwz.com/article/dooijed.html