IERG2080代做、代写C/C++程序语言
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.

热门主题

课程名

omp9727 ddes9903 mgt253 fc021 int2067/int5051 bsb151 babs2202 mis2002s phya21 18-213 cege0012 math39512 math38032 mech5125 mdia1002 cisc102 07 mgx3110 cs240 11175 fin3020s eco3420 ictten622 comp9727 cpt111 de114102d mgm320h5s bafi1019 efim20036 mn-3503 comp9414 math21112 fins5568 comp4337 bcpm000028 info6030 inft6800 bcpm0054 comp(2041|9044) 110.807 bma0092 cs365 math20212 ce335 math2010 ec3450 comm1170 cenv6141 ftec5580 ecmt1010 csci-ua.0480-003 econ12-200 ectb60h3f cs247—assignment ib3960 tk3163 ics3u ib3j80 comp20008 comp9334 eppd1063 acct2343 cct109 isys1055/3412 econ7230 msinm014/msing014/msing014b math2014 math350-real eec180 stat141b econ2101 fit2004 comp643 bu1002 cm2030 mn7182sr ectb60h3s ib2d30 ohss7000 fit3175 econ20120/econ30320 acct7104 compsci 369 math226 127.241 info1110 37007 math137a mgt4701 comm1180 fc300 ectb60h3 llp120 bio99 econ7030 csse2310/csse7231 comm1190 125.330 110.309 csc3100 bu1007 comp 636 qbus3600 compx222 stat437 kit317 hw1 ag942 fit3139 115.213 ipa61006 econ214 envm7512 6010acc fit4005 fins5542 slsp5360m 119729 cs148 hld-4267-r comp4002/gam cava1001 or4023 cosc2758/cosc2938 cse140 fu010055 csci410 finc3017 comp9417 fsc60504 24309 bsys702 mgec61 cive9831m pubh5010 5bus1037 info90004 p6769 bsan3209 plana4310 caes1000 econ0060 ap/adms4540 ast101h5f plan6392 625.609.81 csmai21 fnce6012 misy262 ifb106tc csci910 502it comp603/ense600 4035 csca08 8iar101 bsd131 msci242l csci 4261 elec51020 blaw1002 ec3044 acct40115 csi2108–cryptographic 158225 7014mhr econ60822 ecn302 philo225-24a acst2001 fit9132 comp1117b ad654 comp3221 st332 cs170 econ0033 engr228-digital law-10027u fit5057 ve311 sle210 n1608 msim3101 badp2003 mth002 6012acc 072243a 3809ict amath 483 ifn556 cven4051 2024 comp9024 158.739-2024 comp 3023 ecs122a com63004 bms5021 comp1028
联系我们
EMail: 99515681@qq.com
QQ: 99515681
留学生作业帮-留学生的知心伴侣!
工作时间:08:00-21:00
python代写
微信客服:codinghelp
站长地图