mooc上学习acllib后写的包含背景音乐的小涂鸦板(初入江湖,大佬勿喷)
#include "acllib.h"
ACL_Sound sound1;
ACL_Image img;//开始图
ACL_Image img1;//涂鸦图
ACL_Color c=RED;//默认画笔颜色
int cx=0;
int cy=0;
int j=0;//开始界面和绘图界面分离
int m=0;//重置当前绘图点and监控鼠标左或右键是否一直按着
void BEGIN(void)
{
loadImage("begin_one.jpg",&img);
loadSound("pop.mp3",&sound1);
playSound(sound1,1);
beginPaint();
putImage(&img,0,0);
setTextColor(RED);
setTextBkColor(GREEN);
setTextSize(50);
setTextFont("Goudy Stout");
paintText(125,200,"BEGIN");
paintText(175,275,"MUSIC");
paintText(225,350,"EXIT");
endPaint();
}
void face_paint()
{
loadImage("tu.jpg",&img1);
//事先插图为了能够在上面涂鸦
beginPaint();
putImage(&img1,200,200);
endPaint();
}
void rel_paint()
{
static int ox = 0;
static int oy = 0;
if(m==1)//避免线画图成为点画图和把绘图起点确定
{
ox=cx;
oy=cy;
m++;
}
if(!(cx>=10&&cx<=72&&cy>=10&&cy<=30))
{
beginPaint();
setPenWidth(3);
setPenColor(c);
line(ox,oy,cx,cy);
endPaint();
ox=cx;
oy=cy;
}
}
void mouseEvent(int x,int y,int key,int event)
{
static int k = 0; //完成歌曲开关键的重复使用(用全局或静态变量保证生存周期)
//记录绘图坐标
cx=x;
cy=y;
//开始界面的begin功能实现
if(j==0&&x>=125&&x<=260&&y>=200&&y<=250&&key==LEFT_BUTTON&&event==BUTTON_DOWN)
{
beginPaint();
clearDevice();
endPaint();
face_paint();
j=1;
}
//MUSIC开关控制
if(j==0&&x>=175&&x<=309&&y>=275&&y<=322&&key==LEFT_BUTTON&&event==BUTTON_DOWN)
{
switch(k)
{
case 0:
//菜单颜色
beginPaint();
putImage(&img,0,0);
setTextColor(RED);
setTextBkColor(GREEN);
setTextSize(50);
setTextFont("Goudy Stout");
paintText(125,200,"BEGIN");
paintText(225,350,"EXIT");
endPaint();
//改变选项颜色
beginPaint();
setTextColor(GREEN);
setTextBkColor(RED);
setTextSize(50);
setTextFont("Goudy Stout");
paintText(175,275,"MUSIC");
endPaint();
stopSound(sound1);//关闭音乐
k=1;
break;
case 1:
playSound(sound1,1);
beginPaint();
putImage(&img,0,0);
setTextColor(RED);
setTextBkColor(GREEN);
setTextSize(50);
setTextFont("Goudy Stout");
paintText(125,200,"BEGIN");
paintText(175,275,"MUSIC");
paintText(225,350,"EXIT");
endPaint();
k=0;
break;
}
}
if(j==0&&x>=222&&x<=319&&y>=349&&y<=398&&key==LEFT_BUTTON&&event==BUTTON_DOWN)
{
exit(0);//退出功能
}
//画板面
if(j==1)
{
//选色板
beginPaint();
setBrushColor(BLUE);
rectangle(10,10,30,30);
endPaint();
beginPaint();
setBrushColor(GREEN);
rectangle(31,10,51,30);
endPaint();
beginPaint();
setBrushColor(BLACK);
rectangle(52,10,72,30);
endPaint();
//调用划线函数
//按住左键即可画图
if(m!=0)
{
rel_paint();
}
//笔色
if(key==LEFT_BUTTON&&event==BUTTON_DOWN)
{
m=1;
if(x>=10&&x<=30&&y>=10&&y<=30)
{
c=BLUE;
}
if(x>=31&&x<=51&&y>=10&&y<=30)
{
c=GREEN;
}
if(x>=52&&x<=72&&y>=10&&y<=30)
{
c=BLACK;
}
}
if(event==BUTTON_UP)
{
m=0;//既停止了一次画线,又重置了绘图点
}
}
}
int Setup()
{
initWindow("",DEFAULT,DEFAULT,800,600);
initConsole();
switch(j)
{
case 0: BEGIN();break;
}
registerMouseEvent(mouseEvent);
return 0;
}
//选用开始图片(img)

//选用音乐和涂鸦图随意
mooc上学习acllib后写的包含背景音乐的小涂鸦板(初入江湖,大佬勿喷)的更多相关文章
- Spring学习之——手写Spring源码V2.0(实现IOC、D、MVC、AOP)
前言 在上一篇<Spring学习之——手写Spring源码(V1.0)>中,我实现了一个Mini版本的Spring框架,在这几天,博主又看了不少关于Spring源码解析的视频,受益匪浅,也 ...
- 在sqlbolt上学习SQL
在sqlbolt上学习SQL 该网站能够学习sql基础,并且能在网页中直接输入sql语句进行查询. 学习网站原网址https://sqlbolt.com/(!部分指令该网站不支持,且存在一些bug!) ...
- JMeter学习-009-JMeter 后置处理器实例之 - 正则表达式提取器(二)多参数获取
前文简述了通过后置处理器 - 正则表达式提取器 获取 HTTP请求 响应结果中的特定数据,未看过的亲,敬请参阅 JMeter学习-008-JMeter 后置处理器实例之 - 正则表达式提取器(一). ...
- JMeter学习-008-JMeter 后置处理器实例之 - 正则表达式提取器(一)概述及简单实例
上文我们讲述了如何对 HTTP请求 的响应数据进行断言,以判断响应是否符合我们的预期,敬请参阅:JMeter学习-007-JMeter 断言实例之一 - 响应断言 那么我们如何获取 HTTP请求 响应 ...
- 在技术胖博客上学习ES6遇到的坑和想法
第一节:ES6的开发环境搭建 坑1:全局安装babel-cli已经不被官方推荐,改为局部安装(cnpm install babel-cli --save-dev): 坑2:babel src/inde ...
- 关于学习less后一些感悟
学习了一天的less发现,自己被自己弄的晕头转向,好在是学明白了! 一.写自己的第一个less css样式编程: 网址:http://www.1024i.com/demo/less/document. ...
- 【MOOC课程学习记录】程序设计与算法(一)C语言程序设计
课程结课了,把做的习题都记录一下,告诉自己多少学了点东西,也能给自己一点鼓励. ps:题目都在cxsjsxmooc.openjudge.cn上能看到,参考答案在差不多结课的时候也会在mooc上放出来. ...
- 小甲鱼零基础入门学习python--课后作业
[小甲鱼零基础入门学习python--课后作业] 小甲鱼零基础入门学习python--课后作业 本章内容: 1.基础部分的作业 2.函数部分的作业 3.字典.集合.文件部分作业 4.异常 5.Easy ...
- 使用MJRefresh遇到的一个问题,上拉刷新后tableview瞬间滑到最底部
最近用MJRefresh上拉刷新时遇到一个问题,就是上拉刷新后,tableview会瞬间滑到最底部,用户还要往回翻才能看到新刷出来的数据,体验十分不好.查了很久没找到原因,最后发现在refreshvi ...
随机推荐
- python爬虫从入门到放弃(七)之 PyQuery库的使用
PyQuery库也是一个非常强大又灵活的网页解析库,如果你有前端开发经验的,都应该接触过jQuery,那么PyQuery就是你非常绝佳的选择,PyQuery 是 Python 仿照 jQuery 的严 ...
- Seafile安装踩坑
欢迎大家访问我的博客新地址: 博客:http://monsterlin.com/ 原文地址:http://monsterlin.com/archives/HowToInstallSeafile.htm ...
- nodeJS之事件events
前面的话 events模块是node的核心模块,几乎所有常用的node模块都继承了events模块,比如http.fs等.本文将详细介绍nodeJS中的事件机制 EventEmitter 多数 Nod ...
- php实现获取汉字的首字母
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- 理解Java中的抽象
在计算机科学中,抽象是一种过程,在这个过程中,数据和程序定义的形式与代表的内涵语言相似,同时隐藏了实现细节. 抽象:一个概念或者想法不和任何特定的具体实例绑死. 目录 什么是抽象 抽象的形式 如何在J ...
- iptables 基本用法
iptables 1.iptables 表 (1)介绍常用表 filtert(过滤器) 链 ↓ INPUT chain:控制进入主机的数据包 OUTPUT chain:控制向外发出的数据包 FORWA ...
- JS+PHP实现用户输入数字后取得最大的值并显示为第几个
目的:分清JS PHP的区别,拓宽思维 分析 1.利用JS的prompt输入用户想要输入的值. 2.利用HTML表单的text标签将输入的值传递给PHP处理文件 3.PHP进行数值判定,选出最大值和位 ...
- Mac下安装MySQL、Workbench以及建数据库建表最基础操作
刚用上Mac,什么都不懂,加之以前还没有用过mysql,就想着在Mac上装一个mysql来自己玩,奈何,在网上找了大半天,没有一个干货!愤怒!下面是我安装的过程,希望能帮到和我情况差不多的朋友 首 ...
- 使用CoApp创建NuGet C++静态库包
NuGet是微软开发平台下的包管理软件,使用它你可以非常方便的将一些第三方的库.框架整合进自己的项目中,省去了不少麻烦的配置过程.但是从官方文档上来看,貌似NuGet对C++的支持不是很好,并且在现阶 ...
- .NET C#转Java没那么难,开发环境篇
.NET C#转Java没那么难,都是面向对向的语言,而且语法还是相似的,先对比一下开发环境,再到Servlet,再到MVC,都是一样一样的,只是JAVA的配制项比较多而已,只要配好一个,后面都是co ...