一个计算机自动作图程序
//你可以用上、下、左、右、Home,Page Up,End,Page Down来辅助计算机作图,也可以稍作修改自//己作图,如有Bug,请通知我,谢谢。

//程序将在左上角显示正常大小的图符,并在右边显示一个放大一倍的非精细图符。

#include #include #include #include #include 

#define EXPAND 1#define BASEX 50#define BASEY 50

void main(){ int mode(int), PutIcon(int image[100][100], int, int), x, y, image[100][100], Init(int image[100][100]), PutPoint(int, int, int); int Edit(int image[100][100]), Save(int image[100][100]);

mode(16); Init(image);

for (y = 1; y < 480; y++) for (x = 1; x < 640; x++) PutPoint (x, y, 7);

Edit(image); Save(image); getch(); mode(3); }

int mode(int value){ union REGS r; r.h.ah = 0; r.h.al = value;

int86(0x10, &r, &r); return 1; }

int PutPoint(int x, int y, int color){ union REGS r;

r.h.ah = 12; r.h.bh = 0; r.h.al = color; r.x.cx = x; r.x.dx = y;

int86(0x10, &r, &r); return 1; }

int PutIcon(int image[100][100], int x, int y){

for (y = BASEY; y < 100+BASEY; y++) for (x = BASEX; x < 100+BASEX; x++) PutPoint (x, y, image[y-BASEY][x-BASEX]);

for (y = BASEY+50; y < 100+BASEY+50; y++) for (x = BASEX+300; x < 100+BASEX+300; x++) PutPoint (x+(x-BASEX-300)*EXPAND, y+(y-BASEY-50)*EXPAND, image[y-BASEY-50][x-BASEX-300]);

return 0; }

int Init(int image[100][100]){ int i, j; FILE *fp;

if ((fp = fopen("data.pic", "rb")) != NULL) { fread(image, sizeof(image), 1, fp); fclose(fp); } else { for (i = 0; i < 100; i++) for (j = 0; j < 100; j++) image[i][j] = BLUE; } return 1; }

int Cls(){ union REGS r;

r.h.ah = 6; r.h.al = 0; r.h.bh = 7; r.h.ch = 0; r.h.cl = 0; r.h.dh = 24; r.h.dl = 79;

int86(0x10, &r, &r); return 0; }

int Edit(int image[100][100]){ int pen = GREEN; int x, y, key = 0x4800, GetKey(), k2, k1; struct time t1, t2; x = BASEX; y = BASEY;

PutIcon(image, BASEX, BASEY); randomize(); gettime(&t1);

do{

if (bioskey(1)) //manual control key = GetKey(); else { gettime(&t2); //computer control if (t2.ti_sec != t1.ti_sec) //time distance { do{ k1 = rand()%9;

if (k2 > k1 && k2 == k1+1) continue; else if (k2 < k1 && k2 == k1-1) continue; else break; }while(1);

switch(k1) { case 1: key = 0x4800; break; case 2: key = 0x5000; break; case 3: key = 0x4b00; break; case 4: key = 0x4d00; break; case 5: key = 0x4700; break; case 6: key = 0x4900; break; case 7: key = 0x5100; break; case 8: key = 0x4f00; break; default: break; } t1.ti_sec = t2.ti_sec; } }

delay(100);

switch(key) { case 0x4800: if (y > BASEY) { y--; k2 = k1; } break; case 0x5000: if (y < BASEY+100) { y++; k2 = k1; } break; case 0x4b00: if (x > BASEX) { x--; k2 = k1; } break; case 0x4d00: if (x < BASEX+100) { x++; k2 = k1; } break; case 0x4700: if (x > BASEX && y > BASEY) { x--; y--; k2 = k1; } break; case 0x4900: if (x < BASEX+100 && y > BASEY) { x++; y--; k2 = k1; } break; case 0x5100: if (x < BASEX+100 && y < BASEY+100) { x++; y++; k2 = k1; } break; case 0x4f00: if (x > BASEX && y < BASEY+100) { x--; y++; k2 = k1; } break; default : break; }

image[x-BASEX][y-BASEY] = pen; PutPoint(x, y, image[x-BASEX][y-BASEY]); PutPoint(x+600+(x-BASEX-300)*EXPAND, y+100+(y-BASEY-50)*EXPAND, image[x-BASEX][y-BASEY]); }while(key != 0x011b);

return 1; }

int GetKey(){ int key;

key = bioskey(0);

return key; }

int Save(int image[100][100]){ FILE *fp;

if ((fp = fopen("data.pic", "wb")) == NULL) { printf ("\nError Open File!"); return 0; }

fwrite(image, sizeof(image), 1, fp); fclose(fp);

return 1; }




posted on 2006-03-02 21:48 Aween's Blog 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/aween/archive/2006/03/02/341531.html

一个计算机自动作图程序相关推荐

  1. VBNet WinForm如何开发一个照片自动排版程序

    想要开发一个照片自动排版程序要熟悉一下几个知识点: System.Drawing.Printing.PrintDocument.Print涉及到的纸张设置是英寸相关,我们常用的长度单位是毫米,那么先需 ...

  2. 计算机自动安装程序,如何防止软件自动安装软件?防止电脑自动安装软件的方法...

    一般在网上下载软件,一个不小心这些捆绑的软件蜂拥而至.说出来你可能不信,小编下载一个软件带过五六"毒瘤"软件,电脑直接卡死重启,毒瘤软件还难卸载...你遇到过这种情况吗?对于这些毒 ...

  3. vb编写一个计算机配置选择程序,2016计算机二级《VB程序设计》练习题及答案

    2016计算机二级<VB程序设计>练习题及答案 一.选择题 1.以下能够触发文本框Change事件的操作是(C) A.文本框失去焦点 B.文本框获得焦点 C.设置文本框的焦点 D.改变文本 ...

  4. 菜鸟实习——如何做一个PHP自动安装程序install.php

    公司有很多个网站都需要使用留言功能,但目前还没时间写后台,就写了一个简易版的留言板,先顶一阵子,但想着网站在不同服务器上,每次去操作不同的数据库有点难受,于是想做一个像WP和DZ一样自动安装的程序,于 ...

  5. 实现一个鼠标自动按键程序

    周日突然搞到一个游戏,需要不停的按鼠标左键.上网下载了几个试用了一下,不是不好用就是要收费.NND这么简单的功能还收钱. 自己写一个. 主要有两个功能: 1.响应系统热键:JAVA下需要JNI,上CS ...

  6. 计算机自动安装程序,如何阻止电脑自动安装垃圾软件

    阻止电脑自动安装垃圾软件的方法:1.打开系统服务,修改Application的启动类型为自动:2.打开本地组策略编辑器,禁用windows installer:3.找到禁止用户安装,勾选[已启用],点 ...

  7. 快速开发一个三维自动建模程序:自动建模+后端服务+3D Tiles

    开发一个自己的三维建模工具 坐标成都,疫情+高温,出不了门,闲来无聊,给大家分享一个简单的自动化建模实现方案. 要求:通过后端服务实现,输出3DTiles切片 实现思路 开发一个自己的三维建模工具 一 ...

  8. 怎样用 Python 写一个股票自动交易程序呢?

    如果是网址都没有给出怎么测试呢? 这个应该是服务器生成的token吧,可以urllib2抓一下,如果抓不到的话那么他可能用的js动态加载,这个得分析js源码了,如果他用了flash来算出这个值的. 像 ...

  9. python编写木马攻击_用Python写一个自动木马程序

    电脑作为大家日常办公的工具,最怕的一件事情之一就是被偷,当我们的电脑被盗的时候,不仅仅是电脑本身,更重要的是电脑存储的资料都会丢失.如何尽快的找回电脑需要我们想点办法,今天就教大家一个好的技巧,虽说不 ...

  10. c理c利用计算机怎么弹,通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的...

    通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的 计算机的工作方式: 现代计算机的基本体系结构都是采用冯诺依曼结构,冯诺依曼的设计思想最重要之处是"存储程序"的这个概念 ...

最新文章

  1. python使用matplotlib可视化线图(line plot)、设置X轴坐标的下限和上限数值(setting the lower and upper bound of the x axis)
  2. java 工厂 单例_java 单例模式和工厂模式实例详解
  3. 图像处理池化层pooling和卷积核
  4. 在监视器(Monitor)内部,是如何做线程同步的?程序应该做哪种级别的同步?
  5. Xamarin.iOS项目提示error MSB3174:”TargetFrameworkVersion”的值无效
  6. jboss7 应用详解_COMSOL Multiphysics多物理场仿真技术与应用光电专题线上培训
  7. 白话异常检测算法Isolation Forest
  8. 安装mysql时安装不了starting the server_archlinux/manjaro 上安装percona-server
  9. centos7安装cassandra
  10. C#:安装Windows服务,动态指定服务名及描述
  11. spring 多租户数据源实现事务一致性
  12. linux下ruby安装步骤,Ruby 安装 - Linux
  13. 永恒之蓝漏洞紧急应对方案
  14. PDF转图片怎么转?建议收藏这三种方法
  15. OpenWrt固件刷入及相关实验
  16. linux清理tmp垃圾文件夹,Linux tmp目录自动清理总结
  17. 爆笑校园生活——人在校园的日子
  18. python获取模块的名称_Python获取模块名称
  19. elasticsearch从入门到入门系列(二)---快速入门C
  20. java基础知识点、面试选择题归纳整理

热门文章

  1. 算法:判断树是否相同100. Same Tree
  2. Towards Fully 8-bit Integer Inference for the Transformer Model
  3. Ubuntu16.04运行清空文件命令时提示权限不够解决方法
  4. python自定义类
  5. sql 只要一个字段相同则只显示一条数据_sql 有一个字段内容重复的 只显示一条的方法...
  6. Torch环境搭建遇到的问题
  7. 知识点收录01---关于Tomcat的一些知识点
  8. hashset和hashmap有什么关系
  9. 机器学习专项练习笔记(持续更新)
  10. 最新原生nodejs调试器的使用大全详解