-1

这可能是我的代码,但我可以通过命令行编译和运行这个程序。在 Windows 中,exe 文件也是可运行的。但是,我不能在任何 unix 系统(ubuntu 或 osx)上在终端之外运行编译的代码我对 C 很陌生,所以任何帮助将不胜感激。谢谢!

澄清:

在 Ubuntu 中我运行

gcc game.c -o game
./game

然后它运行完美。但是,如果我通过 GUI 进入游戏文件并双击它,它不会做任何事情。我习惯在 Windows 上它会调出一个命令并运行程序,就好像你从cmd.

代码(这是一个简单的猜数字游戏):

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int guessed = 0;
int guesses = 0;
int total_guesses = 0;
int games_played = 0;
int range_top = 10;
int generate_random_number()
{
    srand(time(NULL));
    return (rand() % range_top);
}
void take_guess(int num)
{
    int guess;
    printf("what is your guess:  ");
    scanf(" %i",&guess);
    if(guess == num)
    {
        guessed = 1;
    }
    else if(guess>num)
    {
        printf("Your guess was too high,\n");
    }
    else 
    {
        printf("Your guess was too low.\n");
    }

}
void print_stats()
{
        printf("\n\n\nGames Played: %i\nTotal Guesses: %i\nAverage Guesses Per Game: %f\n\n\n\n",games_played,total_guesses,(double)total_guesses/games_played);
        int i = 5;
        while(i>0)
        {
                printf("exiting in %is\n",i);
                i--;
                sleep(1);
        }
}
int main(void)
{
    printf("This is a game in C\n");
    printf("Would you like to play? (y/n): ");
    char play;
    scanf("%c",&play);
    while(play == 'y')
    {
        printf("I am thinking of a number between 0 and %i\n",range_top);
        int num = generate_random_number();
        while(guessed ==0)
        {
            take_guess(num);
            guesses++;
        }
        games_played++;
        total_guesses+=guesses;
        printf("It took you %i guesses to win.\n",guesses);
        printf("Would you like to play again? (y/n): ");
        scanf(" %c",&play);
        guessed = 0;
        guesses = 0;
    }
    print_stats();
}
4

1 回答 1

0

但是如果我通过 GUI 进入游戏文件并双击它,它不会做任何事情

你怎么知道它不运行?我敢打赌它确实可以运行,但由于它不是在任何终端(命令行窗口)的上下文中运行,你只是看不到它的输出。这就是Linux(和一般的Unix)的工作方式。

Windows 区分 GUI 和命令行应用程序,在后一种情况下会自动带来一个控制台窗口。不幸的是(幸运的是?),在 Unix 中情况并非如此。

如果您想实现 Windows 行为,您可以:

  1. 为您的应用程序创建一个启动器。这将允许您指定自定义图标等。

  2. 创建一个 shell 脚本,它将调用终端和其中的应用程序:

game.sh

#!/bin/bash
gnome-terminal -e "./game"

请注意,不是每个人都会gnome-temrinal安装,因此您可能需要调整脚本以支持更多终端仿真器(xterm, rxvt,可能konsole适用于 KDE 用户)。

于 2015-10-09T06:07:58.890 回答