Обсуждение:ScratchWikis2026
Материал из Поле цифровой дидактики
Листинг модели
extensions [resource csv]
breed [users user] ;
breed [pages page] ;
directed-link-breed [bonds bond] ;
users-own [agentname] ;
pages-own [
pagename
] ;
bonds-own [edits] ;
globals [
backgroud
data
current-wiki ;; "DE" "/ FR / RU / EN
]
to startup
clear-all ;
reset-ticks
set-default-shape users "person" ;
set-default-shape pages "square" ;
set current-wiki wiki_lng_chooser
output-print "" ;
set data [] ;
output-print "╔════════════════════════════════════════════════════════════╗"
output-print "║Scratch Wikis Collaboration Simulation ║"
output-print "╚════════════════════════════════════════════════════════════╝"
output-print ""
output-print (word "Выберите источник данных (Wiki_Chooser): " current-wiki)
output-print "После выбора нажмите кнопку 'Сеть авторов'."
end
to load-data-for-current-wiki
if current-wiki = "EN" [
load-csv-resource "e_contrib_en.csv"
]
if current-wiki = "FR" [
load-csv-resource "contrib_fr.csv"
]
if current-wiki = "DE" [
load-csv-resource "contrib_de.csv"
]
if current-wiki = "RU" [
load-csv-resource "contrib_ru.csv"
]
end
to load-csv-resource [filename]
set data []
output-print ""
output-print (word "Загрузка файла: " filename)
carefully [
let csv-content resource:get filename
set data csv:from-string csv-content
output-print (word "Загружен: " length data " строк (с заголовком)")
] [
output-print (word "ОШИБКА при загрузке " filename ": " error-message)
stop
]
if length data > 0 [
set data but-first data
]
output-print (word "Обработано " length data " публикаций из " filename)
end
to load_data
clear-turtles
clear-output ;
clear-all-plots ;
output-print "История совместного редактирования статей" ;
output-print "Scratch Wikis" ;
load-data-for-current-wiki
;; set data csv:from-string csv-content
foreach data [ ?1 -> visual ?1 ]
end
to visual [flist]
;; output-print flist ;
let agent_id item 0 flist ;; это мы просто считали имена агентов и страниц
let page_id item 2 flist
let agent_name item 1 flist ;; это мы просто считали имена агентов и страниц
let page_name item 3 flist
ifelse (not any? users with [agentname = agent_name]) and (not any? pages with [pagename = page_name])
[
create-ordered-users 1 [
set size 1
set color red
set agentname agent_name ;
set label-color white
set label agentname ;
output-print agentname
hatch-pages 1 [
set pagename page_name
set color green
set label-color white
set label pagename create-bond-from myself ;
ask bond [who] of myself [who] of self
;;
[
set edits 1
set label-color white
; set label edits
]
output-print ( word "Создал " pagename )
output-print "" ;
] ; ;
]
]
[ ifelse (not any? users with [agentname = agent_name]) and (any? pages with [pagename = page_name])
[
let myfirstpage [who] of one-of pages with [pagename = page_name] ;
ask page myfirstpage [
hatch-users 1
[
set color red set agentname agent_name
set label-color white
output-print agentname
set label agentname create-bond-to myself ;
output-print (word "отредактировал " page_name )
output-print "" ;
ask bond [who] of self myfirstpage
[
;;set edits 1
;; set label-color white
;; set label edits
]
]
]
]
;; у нас есть юзер, но нет страницы
[ ifelse (any? users with [agentname = agent_name]) and (not any? pages with [pagename = page_name])
[
let author [who] of one-of users with [agentname = agent_name] ;
output-print agent_name ;
ask user author [hatch-pages 1
[ set color green set pagename page_name
set label-color white set label pagename
create-bond-from myself
output-print ( word "Создал " pagename )
output-print "" ;
] ;; ask bond [who] of myself myfirstpage [set edits 1]
;
]
]
;; Ситуация, когда есть и пользователь и страница - и там варианты с тем, что есть связь или нет связи
[
let author [who] of one-of users with [agentname = agent_name] ;
let mypage [who] of one-of pages with [pagename = page_name] ;
ifelse is-link? bond author mypage [ask bond author mypage
[set edits edits + 1 set label edits
]
]
[
ask user author [
create-bond-to page mypage
]
ask bond author mypage [
;; set edits 1 set label edits
]
]
; ask bond author mypage [set edits edits + 1 set label edits] ;
];; Если есть и страница и агент, то надо просто увеличить значение связи
]] ;
layout
update-plots
end
to layout
layout-spring turtles links 0.2 0.04 0.7
display
end
