擬似亀のグラフィックプログラムを作成することです。私はすでに最初に立ち往生しています。カメは左上からペンを上にして始まるはずです(これは図のTです)。私はTを小文字のtに変更して、ユーザがpenDown()
を使用したいときを示す方法を理解できません。最初に、私がdisplay()
を使用しても、プログラムは空白で埋められた50x50のキャンバスを正しく描画しますが、コーナーの最初のTは描画しません。Cで亀のグラフィックを作って、配列の要素の値を変更することはできません。
私は0で満たされた50x50配列を使用することになっています。配列内の1は描画されたタイルを示します。私は2と3を使って、ペンが上か下かを示しました。
#include <stdio.h>
#include <stdlib.h>
/*
*
*/
void penUp(int input);
void penDown(void);
int turnRight(void);
int turnLeft (void);
int draw (void);
void display (void);
int end (void);
char turtle, tile;
static int canvas[50][50];
char drawing[50][50];
int i, j, input, a, b;
int main(int argc, char** argv){
for(i = 0; i < 50; i++){
for(j = 0; j < 50; j++){
canvas[i][j] = 0;
}
}
for(i = 0; i < 50; i++){
for(j = 0; j < 50; j++){
drawing[i][j] = ' ';
}
}
canvas[0][0] = 2;
input = 1;
printf("Controls: \n");
printf("1 for pen up (capital T means pen is up) \n");
printf("2 for pen down (lowercase t means pen is down) \n");
printf("3 for turn right \n");
printf("4 for turn left \n");
printf("5 for drawing, followed by an int value for how many tiles to draw \n");
printf("6 to display drawing \n");
printf("9 to end program \n");
do{
printf("Enter command: ");
scanf("%d", &input);
if(input == 2){
penDown();
}
else if(input == 6){
display();
}
else if(input == 9){
}
}while(input != 0);
return 0;
}
void penDown(void){
for(i = 0; i < 50; i++){
for(j = 0; j < 50; j++){
if(canvas[i][j] == 2){
canvas[i][j] == 3;
break;
}
}
}
}
void display(void){
for(i = 0; i < 50; i++){
for(j = 0; j < 50; j++){
if(canvas[i][j] == 2){
drawing[i][j] == 'T';
}
else if(canvas[i][j] == 3){
drawing[i][j] == 't';
}
}
}
for(a = 0; a < 50; a++){
for(b = 0; b < 50; b++){
printf("%c", drawing[a][b]);
}
printf("\n");
}
}
あなたの 'penUp()'はどこですか? – iBug
標準Cにはグラフィックがありません。いくつかの外部ライブラリを使用する必要があります。すべての警告とデバッグ情報でコードをコンパイルします。 'gcc -Wall -Wextra -g'。それを改善して警告を受けないようにする。 **デバッガ** gdbを使用してください。あなたの質問には、SO –
@BasileStarynkevitchの[MCVE]はありませんので、話題は(すべての* fix-my-code *や* do-my-homework *の質問と同様に)、私はOPがASCIIグラフィックスを使用していると信じています外部ライブラリが必要です。 – cdlane