合肥生活安徽新闻合肥交通合肥房产生活服务合肥教育合肥招聘合肥旅游文化艺术合肥美食合肥地图合肥社保合肥医院企业服务合肥法律

IERG2080代做、代写C/C++程序语言

时间:2024-05-19  来源:合肥网hfw.cc  作者:hfw.cc 我要纠错



IERG2080 Spring 2024
Project Due: 17 May 2024
Rules:
1. This project takes 10% of the course total.
2. Your code will be compiled and tested in theVM. 0 score if the code cannot be
compiled in the VM.
3. No late submission is allowed.
4. This is a group project. Only one member submitting the work to Blackboard is
required.
In this project, you are going to write a simple 2D bitmap editor. You will use a library called
ncurses that provides API for direct keyboard inputs, absolute screen coordinates for
full-screen outputs, etc.
To compile the demo that illustrates how to use ncurses, you need to install the library first.
In your VM, run
sudo apt install libncurses-dev
After installation, you can now compile the example code by
gcc curses_demo.c -o curses_demo -lcurses
The flag -lcurses asks the linker to link with the library named curses. Try to understand
the demo code and see how to initialize an ncurses program, how to move a cursor, how to
read the pressed key, etc.
Next, you need to understand the portable bitmap format (PBM). The following is an
example from Wikipedia https://en.wikipedia.org/wiki/Netpbm#PBM_example
P1
# This is an example bitmap of the letter "J"
6 10
0 0 0 0 1 0
0 0 0 0 1 0
0 0 0 0 1 0
0 0 0 0 1 0
0 0 0 0 1 0
0 0 0 0 1 0
1 0 0 0 1 0
0 1 1 1 0 0
0 0 0 0 0 0
0 0 0 0 0 0The first line P1 indicates that the file is a portable bitmap, where each pixel is either 0 or 1
(white or black). The line starts with # is a comment that will be ignored by image readers.
The line 6 10 indicates the size of the image: 6x10 pixels. After that, the binary digits are the
pixel values of the image. Note that the spaces and newlines in the description of the image
body can be omitted. Say, the following example gives the same image as the above one.
P1
# This is an example bitmap of the letter "J"
6 10
000010000010000010000010000010000010100010011100000000000000
To open a pbm file, you need an image editor. In Ubuntu, you can use gimp (GNU Image
Manipulation Program). Install gimp by
sudo apt install gimp
Suppose your program is named proj. The following is the usage of your program.
./proj [in=in_file] [out=out_file]
./proj [out=out_file] [in=in_file]
Both arguments are optional. Yet, the phase in= or out= must be provided if the
corresponding argument is used. in_file is the input file name, and out_file is the output
file name.
Your program provides an interface for a user to draw a 2D bitmap image. Here are the
descriptions. Each item takes 1 point (full score 10 points).
1. If in_file is supplied, load the file. If the file is not a 80x24 PBM, print an error
message and terminate the program.
2. Initialize curses. Change the terminal size to 80x24 (width 80, height 24). Turns on
REVERSE video mode attribute (black characters on a white background).
3. If in_file is not supplied, fill the whole screen with spaces to show a full reverse
background. Otherwise, show the image on the screen. Use # for 1 and a space for
0. For both cases, move the cursor to the top-left corner after the initialization is
done.
4. Let the user move the cursor around using the arrow keys (cannot move beyond the
boundary of the screen).
5. When the user presses the spacebar, draw or erase a # at the location of the cursor.
6. When the user presses ESC, ends the curses environment and recovers the original
terminal settings.
7. If out_file is not supplied, print the image drawn by the user as a PBM format on the
screen using printf. As the terminal size was 80x24, the image size is 80x24. (The
user can copy the printed content to a .pbm file on their own.)
8. If out_file is supplied, save the PBM data to the file. Print an error message if the file
cannot be saved.
9. Create a Makefile so that you can compile your code by make.
10. Make sure that both orders of arguments work as expected.
Write your code in a single .c file. Compress the .c file with the Makefile into a .zip file, and
then submit it to Blackboard.

请加QQ:99515681  邮箱:99515681@qq.com   WX:codinghelp

















 

扫一扫在手机打开当前页
  • 上一篇:代写EBU4201、代做Java设计编程
  • 下一篇:STSCI 4060代做、代写Python设计程序
  • 无相关信息
    合肥生活资讯

    合肥图文信息
    新能源捕鱼一体电鱼竿好用吗
    新能源捕鱼一体电鱼竿好用吗
    海信罗马假日洗衣机亮相AWE  复古美学与现代科技完美结合
    海信罗马假日洗衣机亮相AWE 复古美学与现代
    合肥机场巴士4号线
    合肥机场巴士4号线
    合肥机场巴士3号线
    合肥机场巴士3号线
    合肥机场巴士2号线
    合肥机场巴士2号线
    合肥机场巴士1号线
    合肥机场巴士1号线
    合肥轨道交通线路图
    合肥轨道交通线路图
    合肥地铁5号线 运营时刻表
    合肥地铁5号线 运营时刻表
  • 币安app官网下载 短信验证码

    关于我们 | 打赏支持 | 广告服务 | 联系我们 | 网站地图 | 免责声明 | 帮助中心 | 友情链接 |

    Copyright © 2024 hfw.cc Inc. All Rights Reserved. 合肥网 版权所有
    ICP备06013414号-3 公安备 42010502001045