初学c语言图形化编程问个很简单的问题

问题描述

初学c语言图形化编程问个很简单的问题

写37行代码就为了画个围棋棋盘值不值?有更简洁的算法吗?

 #include<graphics.h>
#include<conio.h>
#define LEN 30  // 每格间的距离
int main()
{
    int x, y;
    initgraph(660, 660);
    // 背景上色
    setcolor(BROWN);
    for(y = 0; y < 660; y++)
        line(0, y, 660, y);
    // 绘制边框
    setcolor(BLACK);
    line(35, 35, 45+540, 35);
    line(35, 45+540, 45+540, 45+540);
    line(35, 35, 35, 45+540);
    line(45+540, 35, 45+540, 45+540);
    for(y = 40; y<=40+LEN*18; y+=LEN)
        line(40, y, 40+LEN*18, y);
    for(x = 40; x<=40+LEN*18; x+=LEN)
        line(x, 40, x, 40+LEN*18);
    // 绘制黑点
    setfillcolor(BLACK);
    fillcircle(40+3*LEN,  40+3*LEN, 2);
    fillcircle(40+9*LEN,  40+3*LEN, 2);
    fillcircle(40+15*LEN, 40+3*LEN, 2);
    fillcircle(40+3*LEN,  40+9*LEN, 2);
    fillcircle(40+9*LEN,  40+9*LEN, 2);
    fillcircle(40+15*LEN, 40+9*LEN, 2);
    fillcircle(40+3*LEN,  40+15*LEN,2);
    fillcircle(40+9*LEN,  40+15*LEN,2);
    fillcircle(40+15*LEN, 40+15*LEN,2);
    getch();
    closegraph();
    return 0;

解决方案

     fillcircle(40+3*LEN,  40+3*LEN, 2);
    fillcircle(40+9*LEN,  40+3*LEN, 2);
    fillcircle(40+15*LEN, 40+3*LEN, 2);
    fillcircle(40+3*LEN,  40+9*LEN, 2);
    fillcircle(40+9*LEN,  40+9*LEN, 2);
    fillcircle(40+15*LEN, 40+9*LEN, 2);
    fillcircle(40+3*LEN,  40+15*LEN,2);
    fillcircle(40+9*LEN,  40+15*LEN,2);
    fillcircle(40+15*LEN, 40+15*LEN,2);

可以简化为


for (int i = 1; i <= 3; i++)
    for (int j = 1; j <= 3; j++)
        {
            fillcircle(40+3*i*LEN,  40+3*j*LEN, 2);
        }

解决方案二:

一般重复行的操作都是通过循环来实现的。 只要是有规律的项目都是可以实现的。

解决方案三:

同样函数的调用,可以用个循环来做,只能简化这些了吧

时间: 2024-09-17 03:40:04

初学c语言图形化编程问个很简单的问题的相关文章

图形化编程实现改进的欧拉格式和龙格库塔格式。这里有个C语言的,想改写成C#。

问题描述 图形化编程实现改进的欧拉格式和龙格库塔格式.这里有个C语言的,想改写成C#. 1)改进欧拉法求解常微分方程的初值问题 #include float func(float x,float y) { return(y-x); } float euler(float x0,float xn,float y0,int N) { float x,y,yp,yc,h; int i; x=x0; y=y0; h=(xn-x0)/(float)N; for(i=1;i<=N;i++) { yp=y+h

详解Java图形化编程中的鼠标事件设计_java

鼠标事件的事件源往往与容器相关,当鼠标进入容器.离开容器,或者在容器中单击鼠标.拖动鼠标时都会发生鼠标事件.java语言为处理鼠标事件提供两个接口:MouseListener,MouseMotionListener接口.MouseListener接口 MouseListener接口能处理5种鼠标事件:按下鼠标,释放鼠标,点击鼠标.鼠标进入.鼠标退出.相应的方法有: (1) getX():鼠标的X坐标 (2) getY():鼠标的Y坐标 (3) getModifiers():获取鼠标的左键或右键.

解析Java图形化编程中的文本框和文本区_java

在图形界面中,文本框和文本区是用于信息输入输出的组件.文本框 文本框(JTextField)是界面中用于输入和输出一行文本的框.JTextField类用来建立文本框.与文本框相关的接口是ActionListener. 文本框处理程序的基本内容有以下几个方面: 声明一个文本框名. 建立一个文本框对象. 将文本框对象加入到某个容器. 对需要控制的文本框对象注册监视器,监听文本框的输入结束(即输入回车键)事件. 一个处理文本框事件的方法,完成对截获事件进行判断和处理. JTextField类的主要构造

Java图形化编程中的键盘事件设计简介_java

键盘事件的事件源一般丐组件相关,当一个组件处于激活状态时,按下.释放或敲击键盘上的某个键时就会发生键盘事件.键盘事件的接口是KeyListener,注册键盘事件监视器的方法是addKeyListener(监视器).实现KeyListener接口有3个: keyPressed(KeyEvent e):键盘上某个键被按下: keyReleased(KeyEvent e):键盘上某个键被按下,又释放: keyTyped(KeyEvent e):keyPressed和keyReleased两个方法的组合

objective-c-ios 想问一个很简单的异步问题

问题描述 ios 想问一个很简单的异步问题 [manager POST:@""https://www.baidu.com"" parameters:@{} success:^(AFHTTPRequestOperation *operation id responseObject) { NSLog(@""ok1""); } NSLog(@""ok2""); 很明显这段代码 如果打印的话 肯

Java里面有没有类似于VB那样的图形化编程软件

问题描述 请问JAVA里面有没有像VB那样用鼠标一拖动一个Button或者一个label就出来了的软件?急求一个基于JAVA的图形界面编写软件 解决方案 解决方案二:MyEclipse装个插件就可以了,不过也只能对Swing进行开发.解决方案三:没用过,我用swing的时候,都是手写代码,我现在不习惯可视化开发,没有写代码有意思解决方案四:NetBeans6.8这个工具比较好做,就是比较站内存解决方案五:请问具体什么插件呢?解决方案六:eclipse使用盗版的wbpro进行swt开发解决方案七:

问个很简单的Jquery问题

问题描述 这个是对表格的排序功能,再不重新加载的情况下实现点击title就能对表格重新排序,我新弄了个testtable的表,想在重绘表格的时候也把内容复制到testtable里面去,但是却不行,大家注意下标注的两句,交换下位置表现就不一样了,请高手赐教啊!!!!另外其中标注的3这句,get()方法到底做了什么还是不太清楚啊...rows是不是一个关联数组了?以下是代码,请高手帮忙哈~~~偶系菜鸟<html><head><title>Sortandpage</ti

在Python中封装GObject模块进行图形化程序编程的教程_python

Python 是用于编码图形界面的极佳语言.由于可以迅速地编写工作代码并且不需要费时的编译周期, 所以可以立即使界面启动和运行起来,并且不久便可使用这些界面. 将这一点与 Python 易于链接本机库的能力结合起来,就可以形成一个出色的环境. gnome-python 是为 Python 封装 GNOME 及其相关库的软件包. 这使您能够用 Python 编写外观与核心 GNOME 应用程序完全相同的应用程序,而所花的时间只是用 C 编写该应用程序所花的一部分. 然而,不用 C 进行编程会有一个

利用QT写一个极简单的图形化Python闹钟程序_python

今天我们讲一下用Python写的GUI小程序.一个小闹钟(只是屏幕提示,没有声音哦) 让我们先介绍这个闹钟如何奇葩. 需要通过命令行启动. 没有标题栏. 没菜单. 甚至没有关闭按钮. 没有运行界面. 看到这里想必大家要问了,何必去做一个这样弱爆了的程序呢.显然,教育意义大于其实际用处. 像其他的模块一样,QT界面包是需要加载的. 我们用到了命令行输入,所以,sys模块也是必须的. 用到了时间,但是我们不需要使用time模块,我们用QT提供的QTime模块. 让我们先写import 语句部分.