Обсуждение: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