游戏及学习控制管理器

来源:互联网 发布:逆波兰式算法 java 编辑:程序博客网 时间:2024/05/22 17:01

原帖及讨论:http://bbs.bc-cn.net/dispbbs.asp?BoardID=5&ID=160281

/*控制主程序control.exe*/
#include<stdio.h>
#include<string.h>
#include<dos.h>
#define MAX 100
typedef struct
{
        char name[30];
        char path[100];
        char exename[30];
        char taskname[30];
} list;
list gamelist[MAX];
char password[20];
int recordnum;
int points;

char p[70];
int initcontrol()
{
    FILE *input,*output;
    char temp[80];
    int i;
    input=fopen("Control.ini","r");
    output=fopen("Control.tmp","w");
    while(!feof(input))
    {
      fgets(temp,80,input);
      if(temp[0]!=';') fputs(temp,output);
    }
    fclose(input);
    fclose(output);
    input=fopen("Control.tmp","r");      
    fscanf(input,"%d",&recordnum);
    for(i=0;i<recordnum;i++) fscanf(input,"%s%s%s%s",gamelist[i].name,gamelist[i].path,gamelist[i].exename,gamelist[i].taskname);
    fclose(input);
    input=fopen("Control","r");
    fscanf(input,"%d%s",&points,password);
    fclose(input);
}
int startgame(int time)
{
    int n;
    int i;
    printf("/n请选择游戏:1-%d/n",recordnum);
    for(i=0;i<recordnum;i++) printf("%d.%s/n",i+1,gamelist[i].name);
    choice:
    scanf("%d",&n);
    if(n<=recordnum && n>0)
    {
      sprintf(p," %s %d",gamelist[n-1].taskname,time);
      spawnl(1,"D://control//break.exe",p,NULL);
      chdir(gamelist[n-1].path);
      system(gamelist[n-1].exename);
    }
    else
    {
      printf("序号错误!请重新选择/n");
      goto choice;
    }
}
int main(void)
{
    int i=0;
    int n;
    int time;
    FILE *output;
    initcontrol();
    printf("SK-CHINA 2007-2008/n");
    printf("游戏总控制程序/n");
    printf("Game Control BY S.K/n");
    printf("请选择/n1.使用点数/n2.输入家长控制密码/n");
    scanf("%d",&n);
    if(n==1)
    {
      printf("现有点数:%d/n你游戏的每分钟将耗点数1/n",points);
      printf("请设定游戏时间 [单位:分钟]/n");
      re:
      scanf("%d",&time);
      if(time>points)
      {
        printf("点数不够,请重新输入/n");
        goto re;
      }
      points=points-time;
      output=fopen("Control","w");
      fprintf(output,"%d/n%s",points,password);
      startgame(time);
    }
    if(n==2)
    {
      printf("/n请输入家长控制密码:");
      while(p[i]=getch())
      {
        if(p[i]==13) break;
        if(p[i]!='/b')
        {
          printf("*");
          i++;
        }
        else
        {
          printf("/b /b");
          i--;
        }
      }
      p[i]='/0';
      if(strcmp(password,p)==0)
      {
        printf("/n密码通过!");
        printf("请设定游戏时间 [单位:分钟]/n");
        scanf("%d",&time);
        startgame(time);
      }
      else
      {
        printf("/n密码错误!按任意键退出");
        getch();
        exit(1);
      }
    }    
}
/*控制关闭程序break.exe*/
DEV-CPP 32位C工程
#include<stdio.h>
#include<dos.h>
#include<string.h>
int main(int argc,char **argv)
{
  int t;
  int i;
  char s[100];
  if(argc>2)
  {
    sscanf(argv[2],"%d",&t);
    sleep(t*60000);
    sprintf(s,"taskkill /im %s /f",argv[1]);
    system(s);
  }
  return 0;
}
/*学习控制器 study.exe 比较简陋的,有待更新*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<dir.h>
int main(void)
{
    time_t time1,time2;
    int n;
    int x;
    int points;
    char path[100];
    char password[20];
    FILE *input,*output;
    printf("你可以通过学习英语获取游戏点数,每一分钟的学习将获得一点游戏点");
    printf("/n是否学习?[1.学习 2.终止]");
    scanf("%d",&n);
    if(n==1)
    {
            getcwd(path,100);
            chdir("D://ruanjian//New Oriental Soft//New Oriental Words 4//"); /*这是一个学习软件的路径*/
            time1=time(NULL);
            system("Recite4.exe"); /*学习软件的程序名*/
            time2=time(NULL);
            x=(int)(difftime(time2,time1)/60);
            chdir(path);
            input=fopen("control","r");
            fscanf(input,"%d%s",&points,password);
            points=points+x;
            fclose(input);
            output=fopen("control","w");
            fprintf(output,"%d/n%s",points,password);
            fclose(output);
    }
    return 0;
}
/* 控制配置 control.ini 可编辑*/
;==================================================================
;==================================================================
;记录方式:注释→ “;”后
;游戏控制总记录
;==================================================================
;记录总数
4
;==================================================================
;详细记录
;记录方式:
;游戏名
;游戏路径
;应用程序名
;进程名
三国群英传II
D:/SANGO2/
Sango2.exe
Sango2.exe
游戏王
D:/VBa/
VisualBoyAdvance.exe
VisualBoyAdvance.exe
超级玛莉
D:/control/
mario.exe
ntvdm.exe
吃虫子
E:/Games/休闲类/吃虫子/
runturkeyrun.exe
ZapSpot.exe
;==================================================================
/*密码控制 点数控制 未加密 control*/
100
123456
编译后组成文件共有5个
分别为control.exe break.exe study.exe control.ini control
完整程序包下载:
点击下载该文件

本程序为了控制孩子学习与游戏的度,可以说是一个可以使用的雏形,如果需要应该对control加上加密算法,study也有一定的简化,应该类似control也设置study.ini