【发布时间】:2015-07-03 02:44:53
【问题描述】:
在我应该根据用户输入加载文件的项目中工作,将该文件中的数据转换为窗口中的坐标,然后使用 ASCII 字符绘制图片。
文件在 .art 中,以所需窗口的宽度和高度开始,随后的每一行是需要绘制的 ROW、COLUMN、CHARACTER 和 COUNT。所以基本上特定角色应该从哪个位置开始,然后应该绘制多少次。 我正在苦苦挣扎的是如何将这些数据导入到可用的东西中,以便我可以绘制所请求的图像。我最初的想法是将数据作为 4-D 数组导入,但后来我对我应该从那里去哪里画了一个空白。
.art 文件的示例行:
50 x 25
2, 15, *, 9
2, 48, *, 9
3, 6, *, 15
更新:放弃尝试加载文件,因为我无法解决这个问题,所以我改为仅手动绘制艺术作品并调用字符串,但我什至遇到了问题。使用下面的代码,如果我选择选项 1,则输出为 001FFA80,而不是输出字符串中的 ASCII 艺术。
#include <stdio.h>
#include <cstdlib>
#include <string>
#include <iostream>
using namespace std;
int main ()
{
string shapeCupid[]=
{" ",
" .. ",
" $. ,o$$$o. ",
" $. $$$$$$$o. .. ",
" .$. $' $$$$$$ ,o'' ",
" .$' $ '$$$$$,o'.,' .oo ' ",
" .$' $. $$$$' ,, .o'. ",
" .$' '$o. 'O$ .. ooo''',oo ' ",
" .$' .o$' '$$'' ,,o' ",
" .%$,,,,,ooO' ' ,,o'' ",
" .$o. ,o' $o ..oo' ",
" ''O'''''''''',' $'$. .o' "};
string shapeFly = "Fly";
string shapeHeart = "Heart";
string shapeImpossible = "Impossible";
string shapeSeuss = "Seuss";
string shapeWorry = "Worry";
int UserInput;
cout << "What do you want to draw?\n";
cout << "1. Cupid\n2. Fly\n3. Heart\n4. Impossible\n5. Seuss\n6. Worry\nNumber: ";
cin >> UserInput;
if (UserInput == 1){
cout << shapeCupid;}
else if (UserInput == 2){
cout << shapeFly;}
else if (UserInput == 3){
cout << shapeHeart;}
else if (UserInput == 4){
cout << shapeImpossible;}
else if (UserInput == 5){
cout << shapeSeuss;}
else if (UserInput == 6){
cout << shapeWorry;}
else if (UserInput != 1 || 2 || 3 || 4 || 5 || 6)
cout << "Please select proper value.\n";
system("pause");
return 0;
}
【问题讨论】:
-
听起来是个有趣的项目。我将从变量开始,例如
size、row、col、symbol和 'count' 从那里创建一个结构。然后您可以将数据拉入结构中,并使用cout对其进行解析,也许只是一些让您入门的指针。 -
向我们展示您的尝试。
-
我可能会使用字符串向量来表示缓冲区并在解析文件时将其绘制到其中,然后逐行输出缓冲区。解决问题的方法很多。
-
老实说还没有尝试过任何代码,写了一些伪代码,但不知道如何实现它。嘿嘿,我喜欢这个主意,看看我能用它做什么。
-
int width;int height;char palette[255][255];将是一个很好的起点。