资源简介
LINUX下命令行界面的细胞游戏,纯C语言实现,已在ubuntu系统上编译运行成功,适合初学者学习LINUX C 编程
代码片段和文件信息
#include “cell.h“
#include “drawer.h“
#include “common.h“
#include
#include “./3rdpart/myrandom/include/myrand.h“
/********************************************************
*
* cellobject
*
********************************************************/
cellobject *initCellobject(postion pos aliveRuleFunc aliveRule)
{
cellobject *o = (cellobject *)malloc(sizeof(*o));
if (NULL == o) {
ERR(“malloc error\n“);
goto error;
}
setCellInitStatus(o);
setCellobjectPostion(o pos);
o->aliveRule = aliveRule;
return o;
error:
return NULL;
}
void uninitCellobject(cellobject **po)
{
free(*po);
*po = NULL;
}
void setCellInitStatus(cellobject *o)
{
unsigned char r = 0;
getRandom(&r sizeof(r));
if (r > 220) {
o->status = ALIVE;
} else {
o->status = DEAD;
}
}
void setCellobjectPostion(cellobject *o postion pos)
{
o->pos.x = pos.x;
o->pos.y = pos.y;
}
eCellStatus beCellobjectAlive(cellobject *o)
{
return o->status;
}
void setCellobjectAlive(cellobject *o)
{
o->status = ALIVE;
}
void setCellobjectDead(cellobject *o)
{
o->status = DEAD;
}
/********************************************************
*
* cellWorld
*
********************************************************/
cellWorld *initCellWorld(aliveRuleFunc aliveRule)
{
int x = 0 y = 0;
postion pos;
cellWorld *w = (cellWorld *)malloc(sizeof(*w));
if (NULL == w) {
ERR(“malloc error\n“);
goto error;
}
w->running = STOP;
for (x = 0; x < (int)CELL_WORLD_SIZE; x ++) {
for (y = 0; y < (int)CELL_WORLD_SIZE; y ++) {
if ((x >= 0 && x < (int)MARGIN_SIZE)
|| (y >= 0 && y < (int)MARGIN_SIZE)
|| (x > (int)(CELL_WORLD_SIZE - MARGIN_SIZE - 1)
&& x < (int)CELL_WORLD_SIZE)
|| (y > (int)(CELL_WORLD_SIZE - MARGIN_SIZE - 1)
&& y < (int)CELL_WORLD_SIZE)) {
w->cell[x][y] = NULL;
//PRT(“NULL cell [%d %d]\n“ x y);
} else {
pos.x = x;
pos.y = y;
w->cell[x][y] = initCellobject(pos aliveRule);
//PRT(“cell object [%d %d] %s\n“ x y w->cell[x][y]->status ? “ALIVE“ : “DEAD“);
if (NULL == w->cell[x][y]) {
ERR(“malloc error\n“);
uninitCellWorld(&w);
goto error;
}
}
}
}
PRT(“initCellWorld OK\n“);
return w;
error:
return NULL;
}
void uninitCellWorld(cellWorld **pw)
{
int x = 0 y = 0;
for (x = 0; x < (int)CELL_WORLD_SIZE; x ++) {
for (y = 0; y < (int)CELL_WORLD_SIZE; y ++) {
if (NULL != (*pw)->cell[x][y]) {
uninitCellobject(&((*pw)->cell[x][y]));
}
}
}
free(*pw);
*pw = NULL;
return;
}
void runThread(cellWorld *w threadobject *o)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 665 2014-02-21 06:57 simple-cell\3rdpart\myrandom\include\myrand.h
文件 103296 2014-02-21 06:57 simple-cell\3rdpart\myrandom\lib\libmyrandom.so
文件 4636 2014-02-21 06:57 simple-cell\cell.c
文件 1780 2014-02-21 06:57 simple-cell\cell.h
文件 1504 2014-03-08 13:27 simple-cell\common.h
文件 673 2014-02-21 06:57 simple-cell\drawer.c
文件 1163 2014-02-21 06:57 simple-cell\drawer.h
文件 196319 2014-02-21 06:57 simple-cell\main
文件 2098 2014-02-21 06:57 simple-cell\main.c
文件 322 2014-03-08 13:27 simple-cell\Makefile
目录 0 2014-03-08 13:25 simple-cell\3rdpart\myrandom\include
目录 0 2014-03-08 13:25 simple-cell\3rdpart\myrandom\lib
目录 0 2014-03-08 13:25 simple-cell\3rdpart\myrandom
目录 0 2014-03-08 13:25 simple-cell\3rdpart
目录 0 2014-03-08 13:27 simple-cell
----------- --------- ---------- ----- ----
312456 15
相关资源
- 尚观培训linux许巍老师关于c语言的课
- 《Linux程序设计》第四版pdf高清电子版
- linux 0.11内核代码
- linux ac108多麦方案驱动(ac108.c)
- 共享内存 读写
- 简易web服务器的设计与实现
- 《LINUX C编程从初学到精通》光盘源码
- Linux那些事儿之我是USB core
- Linux c语言 学生成绩管理系统
- Linux开发工具手册
- Linux操作系统下C语言编程从零开始
- 基于Linux下C语言开发的员工管理系统
- 超级玛丽c++源码win32Linux平台
- UNIX/LINUX下C语言中文短信UCS2编码和解
- 嵌入式工程师必知必会 (完整高清中
- linux-2.6.24.rar
- C++ 命令行小游戏 节奏大师别踩白块
- Linux下C语言操作静态ARP表,包括增加
- c语言 linux 贪吃蛇.doc
- Linux多线程服务端编程:使用muduo C+
- libstdc++.so.6.0.23_linux7
- libstdc++-devel-4.1.2-48.el5.x86_64
- C++版仿Linux文件管理系统
- 基于SDL的贪吃蛇游戏
- 链表栈的基本操作(C语言
- 基于linux C/C++和Qt的聊天程序
- Linux+gladeGTK++C语言+mysql的模仿QQ聊天工
- 嵌入式linuxC语言程序设计基础教程
- C Programming in Linux Linux下C语言
- Linux软件工程师(C语言)实用教程_
评论
共有 条评论