GithubHelp home page GithubHelp logo

electronic-poet's Introduction

Electronic-Poet

c语言大作业-电子诗人

项目介绍

本项目的灵感来自于刘慈欣的电子诗人。原文件采用的是Visual Foxpro,可移植性差。现采用C语言重新编写,还原部分功能。

原版电子诗人的特色不在于能够写出精巧的诗,而在于写出“抽象”的诗。故本项目力图还原这一点,绝不采用AI生成,而是使用随机数生成诗句。

目前本项目可以执行简单的写诗和存储功能。

TODO:

  • 加入分段功能
  • 加入韵脚功能
  • 丰富词库
  • 加入用户编辑词库功能
  • 优化用户体验

......

项目组成介绍

该项目目前由主程序、词库两个部分组成。词库部分分为noun(名词)、verb(动词)、adjective(形容词)、sentence(句式)四个词库。词库采用ansi编码。

程序运作机制介绍

  1. 程序在开始运行时会先将四个词库从外存读取到内存当中。具体来说,程序会按行读取位于外存的词库,将每一行的换行符去掉,然后存储进一个链表当中去。
  2. 之后会提示用户想要生成的诗的行数。如果输入的是非int类型的字符,或输入的数字小于1,将提示非法。
  3. 程序初始化存储机制。如果初始化失败则提示存储机制不可用。后续流程将不会启用存储机制。
  4. 开始生成诗词。程序会先随机挑选一个句式,此时开始分为屏幕输出和存储机制两条线。
  • 1.程序会读取句式。一个句式的构成有:n(名词符)、v(动词符)、a(形容词符)与连接词。例如:v!a的n
  • 2.程序将逐字符地读取这个句式。如果检测到n,就会触发名词挑选函数,随机挑选一个名词(机制与挑选句式的机制相同),之后将该名词直接打印在屏幕上。然后,程序会把该名词拼接在一个字符串str的后面。检测到v、a同理。如果该字符位置不是n、v、a中的任意一个(即该位置是连接词),程序将直接打印该连接词,并把该连接词拼接在str的后面。
  • 3.完成句式的读取后,程序打印换行符,并且将拼接完成的str存储进存储链表当中。
  1. 程序在完成所有行的生成之后,如果存储模块初始化正常,将提示是否存储诗词。
  2. 如果用户输入“Y”,则启动存储机制,用户先输入给诗词的命名(目前似乎只支持英文命名),之后程序将存储在链表里的诗句逐行写入用户命名的txt文件中。该txt文件存储在collection目录下。
  3. 如果用户不存储,或者存储完成之后,将触发释放机制,释放存储诗词的内存空间。
  4. 提示用户是否继续生成。继续则返回第二步,否则程序退出。

electronic-poet's People

Contributors

lvyonghuan avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.