Giter VIP home page Giter VIP logo

software_design's Introduction

ソフトウェア設計Ⅱの課題

概要

あなたは高専に入学しました。留年せずに頑張ろう!

要求仕様

ゲームシステム

ルール

  • 毎回、四則演算の問題が10問出題される。
    • 6問以上正解なら、学年が上がり、6問未満なら学年が留まる(留年)

ゲーム内要素

プレイヤー

インタフェース

テスト計画

単体テスト

結合テスト

全体テスト

設計書

データ構造

typedef struct {
    int sumScores;//点数
    int diffScore;//赤点との差分
} t_PlayerScore;

点数関係の構造体

typedef struct {
    int schoolGrade; //学年
    int countRepeatYear;//留年回数
    int myTurn; //ターン
} t_PlayerStatus;

ゲーム進行において必要な情報が入ってる構造体

関数仕様

void  getWord(char *word)

単語リストを取得

void showStatus(char *word)

ステータスを表示

int chooseRepeat(t_PlayerStatus player)

問題数を計算

int levelOne(t_PlayerStatus player)
int levelTwo(t_PlayerStatus player)
int levelThree(t_PlayerStatus player)

難易度ごとの問題の出題

void checkStatus(t_PlayerStatus player){ }

学年チェックを行う。 ここで、学年、留年回数、ターン回数を見ることができる。

int tryExam(t_PlayerScore scores, t_PlayerStatus player){ }

問題生成を行い、解答してもらう。 今のところ、四則演算のみ。

void updateStatus(t_PlayerStatus *player, int isFlag){ }

学年、ターン更新を行う。 留年回数も必要に応じて行う。

void finishMessage(){ }

終わりのメッセージを表示する。

基本関数のリスト ※関数仕様とほぼ同じ箇所多々あり

void  getWord(char *word)

単語ファイルを読み込み、ランダムで最短文字数以上の単語をwordに代入する

void checkStatus(t_PlayerStatus player)

プレイヤーの情報(学年、留年回数、ターン数)を表示する

void showStatus(char *word)

単語問題の状態を表示する。ここでは2,3文字目を隠す。

int chooseRepeat(t_PlayerStatus player);

返り値 repeat 程よい回数繰り返すための数字をrepeatに返す。

int levelOne(t_PlayerStatus player)

返り値 cnt ランダムに加算または減算の問題を出題し、 正解数をカウントしcntに返す。

int levelTwo(t_PlayerStatus player)

返り値 cnt ランダムに乗算または除算の問題を出題し、 正解数をカウントしcntに返す。

int levelThree(t_PlayerStatus player)

返り値 cnt ランダムに英単語の虫食い問題を出題し、 正解数をカウントしcntに返す。

int tryExam(t_PlayerScore scores, t_PlayerStatus player)

学年に応じて出題する問題を切り替え出題し、 採点、進級の可否を表示する。

void updateStatus(t_PlayStatus *player, int isFlag)

問題の正答率に応じて学年または留年回数の追加とターン数を増やす。

void finishMessage();

終了メッセージを表示する。

テスト

単体テスト

結合テスト

全体テスト

その他

命名規則

C言語における命名規則のポイントと実例 C Coding Standard Recommended C Style and Coding Standards を参考にした

作成者

WalkerZC

software_design's People

Contributors

potyama avatar walkerzc avatar onokatio avatar son1moon avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Forkers

onokatio

software_design's Issues

問題数の検討

計算の都合上、全て10問にしているが、ちょっとつまらん。
数変更できないかな。

関数分け

表示関数が複数存在しているので、一つにまとめる。

現状の問題点と追加予定機能

問題点

  • 変数名が適当 (#13 にて対応済み)
  • 足し算だけを想定して作成したため、これをそのまま使って他の演算をするのは難しいかも。
  • 説明書いてない
  • 構造体の名前 (#13 にて対応済み)

追加機能

  • 引き算、掛け算、割り算追加  (#10 にて対応済み)
  • 微積の問題や数学以外の問題追加 (#8 #14 にて対応中)
  • 1ターン(1学年)で複数の問題を解く。 (対応済み)
  • 再試の追加 

基本的に学校と同じようにしたい(願望)

ゲームルールについて

ルール変更

1年を4回(前期中間/期末, 後期中間/期末)にわけ、それを5年間行う。
1年間の正答率が6割を超えたら進級、超えないなら降年する。

問題数

問題数に関しては @WalkerZC が考えてくれる

種類

  • 数学(四則演算)
  • 英語(ソート、穴埋め) @son1moon が作成予定
  • プログラミング(簡単なやつ)
  • 社会(?)

英語問題の追加検討

現在考えている出し方

  • 英単語をソートしてもとの単語がなにか当てる。

    • apple -> aelpp とかにして。
  • 選択問題

  • app()eのかっこにはいるアルファベットはなにか (1, l 2,k 3,j 4,e)

割り算問題の生成について

いつもどおりに乱数で生成してしまうと、割り切れない数(7/5など)が問題として表示されてしまう。
どうにかして、割り切れるようにできたらと。

もしくは、全く別の方法にするか。

要件定義とか考えなきゃ!

大変大変!
要件定義とか考えないといけないじゃない!
何やるかちゃんと覚えてないけど、それもゆっくり考えていきましょう!

とりあえず、Readme.mdに追加する形で

(7)基本関数のリストの作成

@son1moon
(7)基本関数のリストをReadMe.mdに記載をお願いします!
来週の金曜日までにやっておいてください。
できたら、PR(Pull requests)立ててね。

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.