tfirst commit, working code - rpgtools - various tools for role-playing games | |
git clone git://src.adamsgaard.dk/rpgtools | |
Log | |
Files | |
Refs | |
--- | |
commit 276fb3f91f74fad0f7a6cf3eb2ead5027f4d5627 | |
Author: Anders Damsgaard <[email protected]> | |
Date: Thu, 5 Nov 2020 11:23:46 +0100 | |
first commit, working code | |
Diffstat: | |
A Makefile | 71 +++++++++++++++++++++++++++++… | |
A roll.c | 47 +++++++++++++++++++++++++++++… | |
2 files changed, 118 insertions(+), 0 deletions(-) | |
--- | |
diff --git a/Makefile b/Makefile | |
t@@ -0,0 +1,71 @@ | |
+.POSIX: | |
+ | |
+NAME = rpgtools | |
+VERSION = 0.1.0 | |
+ | |
+# paths | |
+PREFIX = /usr/local | |
+MANPREFIX = ${PREFIX}/share/man | |
+DOCPREFIX = ${PREFIX}/share/doc/${NAME} | |
+ | |
+BIN = \ | |
+ roll | |
+SRC = ${BIN:=.c} | |
+HDR = | |
+ | |
+LIB = -lm | |
+ | |
+RPGTOOLSCFLAGS = ${CFLAGS} | |
+RPGTOOLSLDFLAGS = ${LDFLAGS} ${LIB} | |
+RPGTOOLSCPPFLAGS = ${CPPFLAGS} | |
+ | |
+MAN1 = ${BIN:=.1} | |
+DOC = \ | |
+ LICENSE\ | |
+ README | |
+ | |
+all: ${BIN} | |
+ | |
+${BIN}: ${@:=.o} | |
+ | |
+OBJ = ${SRC:.c=.o} | |
+ | |
+.o: | |
+ ${CC} ${RPGTOOLSLDFLAGS} -o $@ $< | |
+ | |
+.c.o: | |
+ ${CC} ${RPGTOOLSCFLAGS} ${RPGTOOLSCPPFLAGS} -o $@ -c $< | |
+ | |
+dist: | |
+ rm -rf "${NAME}-${VERSION}" | |
+ mkdir -p "${NAME}-${VERSION}" | |
+ cp -f ${MAN1} ${DOC} ${SRC} Makefile "${NAME}-${VERSION}" | |
+ tar cf - "${NAME}-${VERSION}" | gzip -c > "${NAME}-${VERSION}.tar.gz" | |
+ rm -rf "${NAME}-${VERSION}" | |
+ | |
+clean: | |
+ rm -f ${BIN} ${OBJ} | |
+ | |
+install: | |
+ # installing executable files. | |
+ mkdir -p "${DESTDIR}${PREFIX}/bin" | |
+ cp -f ${BIN} "${DESTDIR}${PREFIX}/bin" | |
+ for f in ${BIN}; do chmod 755 "${DESTDIR}${PREFIX}/bin/$$f"; done | |
+ # installing documentation files. | |
+ mkdir -p "${DESTDIR}${DOCPREFIX}" | |
+ cp -f ${DOC} "${DESTDIR}${DOCPREFIX}" | |
+ # installing manual pages for general commands: section 1. | |
+ mkdir -p "${DESTDIR}${MANPREFIX}/man1" | |
+ cp -f ${MAN1} "${DESTDIR}${MANPREFIX}/man1" | |
+ for m in ${MAN1}; do chmod 644 "${DESTDIR}${MANPREFIX}/man1/$$m"; done | |
+ | |
+uninstall: | |
+ # removing executable files. | |
+ for f in ${BIN}; do rm -f "${DESTDIR}${PREFIX}/bin/$$f"; done | |
+ # removing documentation files. | |
+ for d in ${DOC}; do rm -f "${DESTDIR}${DOCPREFIX}/$$d"; done | |
+ -rmdir "${DESTDIR}${DOCPREFIX}" | |
+ # removing manual pages. | |
+ for m in ${MAN1}; do rm -f "${DESTDIR}${MANPREFIX}/man1/$$m"; done | |
+ | |
+.PHONY: all clean dist install uninstall | |
diff --git a/roll.c b/roll.c | |
t@@ -0,0 +1,47 @@ | |
+#include <stdio.h> | |
+#include <stdlib.h> | |
+#include <err.h> | |
+#include <math.h> | |
+ | |
+char *argv0; | |
+ | |
+void | |
+usage(void) | |
+{ | |
+ errx(1, "usage: %s DICE\nwhere DICE is N dice with M sides, in format … | |
+} | |
+ | |
+int | |
+random_number(int min, int max) | |
+{ | |
+ return min + round((double)rand() / RAND_MAX * (double)(max - min)); | |
+} | |
+ | |
+int | |
+main(int argc, char *argv[]) | |
+{ | |
+ int i, n, sides, roll, sum = 0; | |
+ | |
+ argv0 = *argv; | |
+ if (argc != 2) | |
+ usage(); | |
+ | |
+ sscanf(argv[1], "%dd%d", &n, &sides); | |
+ | |
+ if (n < 1) | |
+ errx(1, "number of dice must be a positive value (%d)", n); | |
+ | |
+ if (sides < 2) | |
+ errx(1, "dice must be at least two sided (%d)", sides); | |
+ | |
+ for (i = 0; i < n; i++) { | |
+ roll = random_number(1, sides); | |
+ printf("1d%d\t%d\n", sides, roll); | |
+ sum += roll; | |
+ } | |
+ | |
+ if (n > 1) | |
+ printf("SUM:\t%d\n", sum); | |
+ | |
+ return 0; | |
+} |