小游戏(真)
2024-07-29 15:09:53
发布于:广东
更新日志
V0.0.1 初版
V0.0.1 fix1(未发布) 内部改动
V0.0.2 增加了typing()
函数,即类似打字的效果
V0.0.3 typing()
数字版本重载,增加错误量及正确率,增加难度
V0.0.4 想到了之前做的库wordrandom.h
和gameplay.h
然后就用了
V0.0.4 fix1 (English Version Add) 想不到做啥,翻译了
主程序pwd.cpp
#include<iostream>
#include<algorithm>
#include"wordrandom.h"
#include"gameplay.h"
using namespace std;
int main(){
string pwd = "";
int n;
enum difficulty{
simple = 70,medium = 30,hard = 10,evil = 5
};
char again;
SetConsoleTitle("记忆力练习");
typing("----------------------记 忆 力 练 习----------------------\n");
Sleep(500);
typing("V0.0.4 修复1\n");
Sleep(500);
typing("雷电芽衣の狗 制作");
Sleep(1000);
cls();
do{
Sleep(1000);
cls();
difficulty a;
char choice;
do{
choice = menu("难度(s简单,m中等,h困难,e地狱):");
switch(choice){
case 's':
typing("简单模式,每字70ms");
a = simple;
break;
case 'm':
typing("中等模式,每字30ms");
a = medium;
break;
case 'h':
typing("困难模式,每字10ms");
a = hard;
break;
case 'e':
typing("地狱模式,每字5ms");
a = evil;
break;
default:
typing("没这个选项。");
}
Sleep(1000);
cls();
}while(choice != 's' && choice != 'm' && choice != 'h' && choice != 'e');
n = menu("输入密码长度,注意不能小于3:",3,200,"大哥,我没法荔枝啊你输这个");
int n2 = n;
pwd = getRandomWord(n,false);
cls();
cout << "准备..." << endl;
Sleep(1000);
cls();
cout << "开始!" <<endl;
Sleep(1000);
cls();
Sleep(500);
for(char ch:pwd){
cout << ch;
Sleep(a);
cls();
Sleep(200);
}
typing("请输入显示的密码:");
string ans;cin >> ans;
cls();
transform(ans.begin(),ans.end(),ans.begin(),::toupper);
if(ans == pwd){
typing("输入正确,密码为");
typing(pwd);
}
else{
typing("输入错误,密码为");
typing(pwd);
typing(",你输入的是");
typing(ans);
}
cout << endl;
int wrong = 0;
for(int i = 0;i < n;i++){
if(ans[i] != pwd[i]) wrong++;
}
double right = ((n + 1 - wrong) * 1.0) / ((n + 1) * 1.0);
typing("\n你错了");
typing(wrong);
typing("个字符,正确率约为");
typing(right * 100);
typing("%");
Sleep(2000);
cls();
typing("再来吗?(y继续,其他关闭)");cin >> again;
}while(again == 'y' || again == 'Y');
return 0;
}
}
wordrandom.h-随机字符串
#include<iostream>
#include<cstdlib>
#include<ctime>
#include<string>
#ifndef _H_WORDRAND
#define _H_WORDRAND
#endif
using namespace std;
const string CHLIST = "ABCDEFGHIJKLMNOPQRSTUVMXYZ1234567890";//全大写
const string CHLSTLONG = "ABCDEFGHIJKLMNOPQRSTUVMXYZqwertyuiopasdfghjklzxcvbnm1234567890";//大小混用
string getRandomWord(int size,bool flag){
srand(time(NULL));
string code = "";
for(int i = 0;i < size;i++){
if(flag){
int index = rand() % 62;
code += CHLSTLONG[index];
}
else{
int index = rand() % 36;
code += CHLIST[index];
}
}
return code;
}
gameplay.h-typing(),menu()
函数
#include<iostream>
#include<string>
#include<ctime>
#include<cstdlib>
#include<windows.h>
#ifndef _H_GAMEPLAY
#define _H_GAMEPLAY
#endif
void typing(std::string s){
for(char c:s){
std::cout << c;
Sleep(50);
}
}
void typing(int i){
std::string s = "";
while(i){
s = char(i % 10 + '0') + s;
i /= 10;
}
s = s.empty()?"0":s;
typing(s);
}
void cls(){
system("cls");
}
char menu(std::string question){
typing(question);
char ans;std::cin >>ans;
return ans;
}
int menu(std::string question,int low,int high,std::string inv = "invalid input"){
int ans;
do{
typing(question);
std::cin >> ans;
if(ans < low || ans > high) {
typing(inv);std::cout << std::endl;Sleep(1000);cls();
}
}while(ans < low || ans > high);
return ans;
}
主程序英文版 pwd_eng.cpp
#include<iostream>
#include<algorithm>
#include"wordrandom.h"
#include"gameplay.h"
using namespace std;
int main(){
string pwd = "";
int n;
enum difficulty{
simple = 70,medium = 30,hard = 10,evil = 5
};
char again;
SetConsoleTitle("memory test");
typing("----------------------memory test----------------------\n");
Sleep(500);
typing("V0.0.4 fix1 English version\n");
Sleep(500);
typing("produced by Eric");
Sleep(1000);
cls();
do{
Sleep(1000);
cls();
difficulty a;
char choice;
do{
choice = menu("Please choose a difficulty(s = simple,m = middle,h = hard,e = evil):");
switch(choice){
case 's':
typing("Simple mode,70 ms per character.");
a = simple;
break;
case 'm':
typing("Middle mode,30 ms per character");
a = medium;
break;
case 'h':
typing("Hard mode,10 ms per character.");
a = hard;
break;
case 'e':
typing("Hard mode,5 ms per character.");
a = evil;
break;
default:
typing("Here's no this choice appears.");
}
Sleep(1000);
cls();
}while(choice != 's' && choice != 'm' && choice != 'h' && choice != 'e');
n = menu("Please enter a number,more than 3 and less than 200:",3,200,"This input is invalid.Try again.");
int n2 = n;
pwd = getRandomWord(n,false);
cls();
cout << "Ready..." << endl;
Sleep(1000);
cls();
cout << "GO!" <<endl;
Sleep(1000);
cls();
Sleep(500);
for(char ch:pwd){
cout << ch;
Sleep(a);
cls();
Sleep(200);
}
typing("Please enter the password that showed on the screen:");
string ans;cin >> ans;
cls();
transform(ans.begin(),ans.end(),ans.begin(),::toupper);
if(ans == pwd){
typing("You entered the correct password.The password is ");
typing(pwd);
}
else{
typing("You entered a wrong password.The password is ");
typing(pwd);
typing("and you entered ");
typing(ans);
}
cout << endl;
int wrong = 0;
for(int i = 0;i < n;i++){
if(ans[i] != pwd[i]) wrong++;
}
double right = ((n + 1 - wrong) * 1.0) / ((n + 1) * 1.0);
typing("\nThe password has ");
typing(wrong);
typing(" wrong character,and youe accur is ");
typing(right * 100);
typing("%");
Sleep(2000);
cls();
typing("Do you want to try again?(type 'y' to restart and the other to shutdown):");cin >> again;
}while(again == 'y' || again == 'Y');
return 0;
}
本程序仅支持Windows
绝对无坑,不像某剑指天涯
英语不好,请各位大佬指教
全部评论 4
114514
2024-08-20 来自 广东
0我要顶!!!
2024-07-29 来自 广东
0顶!!!
2024-07-29 来自 广东
0顶!
2024-07-29 来自 广东
0
有帮助,赞一个