#include <stdio.h>
#include <stdlib.h>
#include <windows.h> /* for sleep() in dos/mingw */
/*
* 关键字模拟
*/
#ifndef class
#define class struct
#endif
#define false 0
#define true (!0)
/*
* 游戏角色抽象类, 继承自目标类,( c 无法实现继承,采用相同定义)
*/
typedef class Role{
class Role *this;
void (*fight) (class Role *this,class Role *other);
void (*response)(class Role *this);
int (*is_die)(class Role *this);
int dps;
int level;
int defense;
int healthPoint;
};
typedef class DeathKnight;
/*
* 步兵footman
*
*/
typedef class Footman{
class Footman *this;
void (*fight)(class Footman *this,class Role *other );
void (*response)(class Footman *this);
int (*is_die)(class Footman *this);
int dps;
int level;
int defense;
int healthPoint;
};
/*
* 死亡骑士
*/
typedef class DeathKnight{
class DeathKnight *this;
void (*fight)(class DeathKnight *this,class Role *other );
void (*response)(class DeathKnight *this);
int (*is_die)(class DeathKnight *this);
int dps;
int level;
int defense;
int healthPoint;
};
/*
* 步兵鼠标点中时回应
* footman_object :Footman对象
*/
void footman_response()
{
printf("FT:Yes Sir!\n");
}
/**
* 步兵死了吗?
* @param footman
*/
int footman_is_die(class Footman *footman)
{
if(footman->healthPoint<0)
{
printf("FT:Footman was dead.\n");
return 1;
}
else
return 0;
}
/*
* 步兵攻击目标
* */
void footman_fight(class Footman *footman,class Role *other)
{
if(other->is_die(other))
printf("FT:other was dead\n");
else
{
printf("FT:A~A~ I'm foot man , fight for the king! pilipala...\n");
int damage=footman->dps-other->defense;
other->healthPoint -=damage;
printf("FT:Footman Damage:%d\n",damage);
printf("other's healthpoint is %d.\n",other->healthPoint);
other->is_die(other);
}
}
void deathknight_response()
{
printf("DK:Nerver die...\n");
}
/*
* 死亡骑士攻击目标
*/
void deathknight_fight(class DeathKnight *dk,class Role *other)
{
if(other->is_die(other))
printf("DK:other was dead\n");
else
{
printf("DK:go to hell!\n");
int damage=dk->dps-other->defense;
other->healthPoint -=damage;
printf("DK:DeathKnight Damage:%d\n",damage);
printf("other's healthpoint is %d.\n",other->healthPoint);
other->is_die(other);
}
}
/**
* 死亡骑士死了吗?
* @param footman
*/
int deathknight_is_die(class DeathKnight* dk)
{
if(dk->healthPoint<0){
printf("DK:DeathKnight was died.\n");
return 1;
}
else
return 0;
}
/*
* 构造函数
*/
void Footman_New(class Footman* footman)
{
footman->dps=30;
footman->level=1;
footman->defense=10;
footman->healthPoint=120;
footman->fight=footman_fight;
footman->is_die=footman_is_die;
footman->response=footman_response;
}
void DeathKnight_New(class DeathKnight* dk)
{
dk->dps=54;
dk->level=1;
dk->defense=15;
dk->healthPoint=240;
dk->is_die=deathknight_is_die;
dk->fight=deathknight_fight;
dk->response=deathknight_response;
}
/*
*
*/
int main(int argc, char** argv) {
class DeathKnight *dk,deathknight;
class Footman *footman,soilder;
Footman_New(&soilder);
DeathKnight_New(&deathknight);
dk=&deathknight;
footman=&soilder;
footman->response(footman);
dk->response(dk);
int i=1;
do
{
printf("\n\n\nROUND %d\n",i);
if(i%2==0)
{
if(!(footman->is_die(footman)))
{
if(!(dk->is_die(dk)))
{
footman->fight(footman,dk);
}
}
}else{
if(!(dk->is_die(dk)))
{
if(!(footman->is_die(footman)))
{
dk->fight(dk,footman);
}
}
}
Sleep(1500);
i++;
}while(!(footman->is_die(footman))&&!(dk->is_die(dk)));
printf("\n\n\nThe END.\n");
return (EXIT_SUCCESS);
}
分享到:
相关推荐
面向对象编程(Object-Oriented ...总的来说,这份资源提供了使用C语言模拟面向对象编程中封装特性的实践案例,适合学习者了解和掌握如何在C语言中实现面向对象编程的基本概念,同时也体现了C语言的灵活性和通用性。
"C语言的面向对象框架"旨在通过一些技巧和方法,使开发者能够在C语言中模拟面向对象编程的概念。 标题中提到的"面向对象框架"可能是指一种或多种技术或库,它们提供了类似面向对象的结构,使得开发者能够更方便地...
然而,通过一些技巧和库,如GObject或模拟类结构,C语言也能实现面向对象编程的思想。在这个案例中,"C语言实现面向对象思想编程"指的是使用C语言来模仿面向对象的特性,如封装、继承和多态。 面向对象编程的核心...
在探讨C语言实现面向对象编程(OOP)的背景下,该文件详细分析了在单片机环境下,通过C语言模拟面向对象的三大特性——封装、继承和多态,以及这些技术如何应用于LED车灯控制软件的开发中,以提升软件的可靠性、稳定...
在C语言中模拟面向对象编程,通常有以下几种常见技术: 1. 结构体与指针:将数据成员(属性)和函数指针(方法)组合在一个结构体中,通过结构体指针调用成员函数,这样就形成了一个类似于对象的概念。 2. 封装:...
根据提供的文档信息,本文将详细探讨C语言在面向对象编程中的应用,特别是在开发较大规模软件时的方法和技术。本文将从面向对象的三个核心概念——封装、继承和多态出发,结合具体的C语言实现技巧,逐步深入到实际...
### C语言中的面向对象编程技术 #### 概述 C语言作为一门历史悠久且广泛应用的编程语言,一直以来都被认为是一种过程式的编程语言。然而,《C语言中的面向对象编程技术》这本书提出了一个有趣的观点:即如何利用...
在C语言中实现面向对象(Object-Oriented Programming, OOP)的概念可能不如其他支持OOP的语言(如C++或Java)那样直接,但通过一些技巧和库,我们可以模拟出面向对象的特性。本工程文件是在Visual Studio 2010环境...
然而,对于某些特定场景,如需要在低级系统编程或嵌入式环境中使用面向对象的设计,使用C语言模拟面向对象可能会是合适的选择。通过理解这些C语言的面向对象实现技巧,开发者可以更好地理解和移植C++的面向对象思想...
《C语言面向对象设计》是一本深入探讨如何在C语言中实现面向对象编程思想的书籍。C语言,作为一种强大的低级编程语言,通常被认为不支持面向对象特性,但通过一些技巧和库(如GObject或C++的C接口),可以实现面向...
在C语言中实现面向对象的关键之一是通过结构体和函数指针来模拟“类”的概念。结构体用于存储数据,而函数指针则用来封装行为。例如,在给定的部分内容中,`Pig`类是这样定义的: ```c typedef struct _Pig Pig; ...
然而,C语言本身并不直接支持面向对象编程(Object-Oriented Programming, OOP)特性,如类、继承、封装和多态等。为了在C语言中实现面向对象编程,开发者通常需要借助一些扩展或技巧。这个软件开发平台就是为了解决...
### C语言中的面向对象编程 #### 一、引言 面向对象编程(OOP)是一种设计方法论,它不依赖于特定的编程语言或工具,而是基于三个核心的设计元模式:封装、继承和多态性。尽管这些元模式通常与面向对象的语言如...
### 如何在Brew环境中利用C语言模拟面向对象思想 #### 概述 在Brew环境中,虽然没有原生支持面向对象编程的语言特性,但可以通过一些技巧和模式来模拟面向对象的思想。本篇文章将深入探讨如何在Brew开发中利用...
尽管C语言不是面向对象的编程语言,但通过结构体、函数指针和手动内存管理等技术,我们仍然可以在C语言中模拟面向对象编程的一些核心特性。这种方法虽然有一定的局限性,但也提供了足够的灵活性,允许我们在C语言中...
在C语言中模拟面向对象编程,主要依赖于结构体和函数指针。结构体用来封装数据,函数指针则作为成员,用于操作这些数据,从而形成类的抽象。接下来,我们将探讨C语言如何实现面向对象的三大核心概念:封装、继承和...
C语言,虽然本身不直接支持面向对象特性,但可以通过一些技巧模拟实现面向对象的概念。在C语言中实现OOP,通常包括封装、继承和多态这三大特性。 1. 封装:封装是将数据和操作这些数据的方法绑定在一起,形成一个...
### C语言面向对象编程 #### 引言与背景 C语言作为一门历史悠久且功能强大的编程语言,在嵌入式系统、操作系统以及其他对性能有极高要求的应用领域有着广泛的应用。然而,传统的C语言是一种过程化编程语言,并没有...
这个例子展示了如何在C语言中通过结构体和函数指针模拟面向对象编程的继承特性,使得代码可以复用和扩展。虽然不如真正的面向对象语言那样简洁明了,但它提供了一种在C语言环境中实现面向对象思想的途径。通过这种...
这篇博客“C语言也能面向对象(一)——一个简单的类”就探讨了如何在C语言中模拟面向对象编程的思想。 面向对象编程是一种编程范式,它以“对象”为核心,对象是数据和操作这些数据的方法的封装体。在C++或Java中,...